[AWS] AWS ELB, EB란?
EC2 설명글에 이어 ELB, EB에 대한 글을 적는다. 이번에 EC2, ELB, EB에 대해 좀 더 공부하게 된 계기는 모의면접에서 EB에 관한 질문이 있었다. 내용이 정확히 기억나지는 않지만, EC2와 ELB만으로 서버 활성은 가능한데 왜 EB를 사용하는지에 대한 물음이었던 것 같다. 얼핏 큰 틀만 알고 있었기에 답변이 되지 못할 거라고 생각하여 답변하지 못했던 나를 반성하며 공부해봤다.
1. ELB (Elastic Load Balancing)
ELB는 EC2를 상당히 효율적으로 이용할 수 있게 하는 서비스다. 서버의 트래픽 부하가 클 경우 자동으로 서버를 증설하여 분산하고 서버의 상태를 확인해 상태가 양호한 서버로 통신하게 만든다. 양호한 서버가 없다면 새로이 서버를 만들어서 통신하는 것은 너무나 당연한 이야기다. 가장 큰 특징은 위와 같은 Auto Scaling(오토 스케일링) 관련 특징이고 이외에도 HTTPS 리스너 제공 등 EC2만 사용하는 데에서 오는 불편함 들을 상당수 해소해준다. 자세한 스펙은 AWS 공식 문서에 나와있지만, 사실 대부분은 오토 스케일링의 특징을 활용하기 위해 주로 사용한다.
2. EB (Elastic Beanstalk)
EB는 EC2, ELB의 특징을 포함하여 쉽게 서버 환경을 만들어주는 서비스다. 쉽게 말하면 EB만 생성하면 자동으로 EC2, ELB 특징을 가진 웹 서버가 하나 만들어진다. 여기까지만 설명하면 아래와 같은 의문이 들 수 있다.
그러면 EC2, ELB만 이용해도 똑같은 거 아닌가요?
결론부터 말하면 아니다. 웹 서버를 하나 만들기 위해서는 인스턴스 내부에서 리눅스 명령어를 통해 다양한 환경을 만들어 주어야 한다. 예를 들면 JAVA를 이용할 경우에는 미리 JAVA를 설치하고 그에 따른 환경변수 설정과 같은 일련의 과정들이 존재하는데, EB를 이용하면 대부분의 작업이 필요 없다.
AWS 내에는 EB를 새롭게 생성할 때, 플랫폼을 지정하는 부분이 있다. AWS에서 지원하는 플랫폼은 닷넷, 도커, 자바 등 약 10개 정도가 있으며, 플랫폼을 선택하면 해당 기술에 맞는 환경을 미리 만들어준다. 또한, AWS CLI를 통해 EB를 제어할 수 있는 것은 무중단 배포를 이용할 때, 큰 장점이 될 수 있다. Git Action, Gradle 등과 같은 기술을 함께 사용할 때 효율이 엄청나기 때문이다. 여하튼, 내가 받았던 면접 질문에 가장 필요한 내용의 답변은 EB의 환경 구성 기술일 것이다.
(물론, EB의 다른 특징도 있을 거라는 생각은 들지만.. 지금 내가 알 수 있는 것은 여기까지니까..)
이번에 공부하며 느꼈던 것은 이용했던 기술에 대한 근본적인 궁금증이 필요하다는 것이다. '왜 EB를 사용해야 하는가?', 'EC2, ELB만 있으면 탄력적인 서버 운영이 가능하지 않나?' 등.. 이러한 고민이 뒷받침되지 않는다면 나는 그냥 기술을 써서 개발만 하는 개발자가 될 것이다. 어떤 것이 더 좋을지, 어떤 불편함을 개선하면 해당 기술의 활용도가 넓어질지와 같은 고민을 하는 진짜 개발자가 되도록 하자.