AWS ELB 란?

Mingtorr·2021년 1월 23일
0
post-thumbnail

소프트웨어 서비스 운영에 있어 안정화는 아주 중요한 요소 중 하나입니다.
많은 사람들의 눈높이가 높아진 만큼 안정적으로 고객들에게 서비스를 제공할 수 있어야 합니다.
아주 혁신적인 아이디어라면 사용자가 조금 느리더라도 감수하고 사용하겠지만 그런 아이디어를 구현하는 것은 매우 힘든 일입니다. 지도 교수님이 자주 하시던 "세상에 아직 없는 것에는 다 그런 이유가 있다. 돈이 많이 들거나, 엄청난 노력과 시간을 쏟아야 하기 때문이다. 세상에 없는 것을 만들려고 한다면 너는 엄청난 천재이거나 엄청난 멍청이여야 한다." 라는 말에 깊이 공감하고 있습니다. 이 말을 인정하기까지 긴 과정이 있었지만 어쨌든 세상에 비슷한 것이 있다면 그것보다 더 나은 기능이나 안정성을 보장하여 사용자들을 매혹시켜야할 것입니다. 따라서 이번 문서에서는
AWS에서 로드 밸런싱을 하는 법을 알아보겠습니다.

ELB란?


로드 밸런서(Load Balancer)는 부하(load)를 적절하게 분배해주는 장치입니다. AWS 에서는 ELB(Elastic Load Balancer)라는 이름으로 로드 밸런서를 제공합니다. 이 시스템은 자동으로 로드 밸런싱을 제공하며 시스템이 서버가 죽지 않도록 알아서 관리해 줍니다. ELB의 주요 특징은 다음과 같습니다.

  • 트래픽 분산
  • 자동 확장
  • 인스턴스의 상태를 자동 감지해서 오류가 있는 시스템은 배제
  • 사용자 세션을 특정 인스턴스에 고정
  • SSL 암호화 지원
  • SSL의 경유지로 ELB를 사용하는 경우에 SSL 처리에 따른 부하를 ELB가 수용하게 된다.
  • IPv4, IPv6 지원
  • CloudWatch를 통해서 모니터링
  • 사용한 시간과 통과한 트래픽에 따라서 종량제로 과금

사용자는 로드 밸런서 포트(Load Balancer Port)를 통해 웹에 접속합니다. 사용자가 접속하면 로드 밸런서는 적당한 웹서버에 분배해 주는데 이때 로드 밸런서는 Instance Port를 통해 웹서버와 통신합니다. 사용자가 http를 이용하여 통신한다면 로드 밸런서는 80번 포트를 통해 통신할 것입니다. 로드밸런서는 웹서버의 포트로 통신하게 됩니다. 저의 리액트의 앱의 경우 웹서버는 3001번부터 3006번을 사용하기 때문에 그 사이의 포트를 이용해 통신하게 됩니다.

nginx 로드 밸런서 vs AWS ELB


aws에서 로드 밸런싱 서비스를 제공하지만 nginx 자체 설정으로도 로드밸런싱을 진행할 수 있습니다. AWS EBS의 단점은 여러 애플리케이션 또는 서비스를 지원하는 데 필요한 별도의 Load Balancer 인스턴스를 생성해야 한다는 것입니다. 하지만 nginx는 별도로 인스턴스를 구성할 필요는 없습니다. 또한 AWS ELB 기본요금이 classic 기준 시간당 $ 0.025 입니다. 한달동안 사용할 경우 20달로 조금 안되게 내야 합니다. 대기업의 경우는 괜찮지만 일인 벤쳐기업등 스타업의 경우 인스턴스 비용만 해도 걱정인데 추가로 돈이 더 나가니 부담이 됩니다. 반면 nignx는 무료입니다. 물론 고가용성을 위해서는 이것 역시 구매해야 하지만 소규모인 경우 nginx 설정만으로 대체가 가능합니다. nginx의 단점은 구성하기 위해서 구성 및 업데이트하는 데 필요한 추가 노력과 고급 지식이 요구됩니다. 또한 인스턴스 내에서 동작하기 때문에 cpu리소스를 추가로 소모하게 됩니다.

이 두 서비스를 동시에 사용하는 경우도 있습니다. ELB는 공용 IP 및 https 통신의 SSL 종료를 처리하고 가용성 영역에서는 여러 웹서버의 NGINX 간의 트래픽 균형을 조정하는 반면, NGINX 서버는 fpm을 통해 또는 역방향으로 실제 애플리케이션 / 서비스 계층에 대한 캐싱 및 전달 트래픽을 처리합니다. 따라서 ELB와 NGINX를 둘 중 하나 또는 선택으로 생각할 필요가 없습니다. 둘 다 사용하는 것이 가장 좋습니다.

결론

ELB와 NGINX는 모두 합리적인 옵션이며 시작할 때 각각의 비용은 비슷합니다. 주요 차별화 요소는 전체 스택을 운영체제까지 제어하고 애플리케이션에 더 많은 계층을 추가하지 않고 캐싱과 같은 추가 기능을 활용할 것인지 여부를 선택하는 것입니다. 이때는 NGINX가 더 나은 선택이 될 것입니다. 반면 AWS에 내장 된 기능을 활용하여 구축 및 유지 관리해야하는 인프라의 양을 단순화하려는 경우 ELB가 솔루션입니다.

AWS ELB 시작하기


ELB를 시작하는 방법은 생활코딩의 링크로 대신합니다.
생활코딩 ELB 등록하기

참고자료
https://www.sumologickorea.com/blog/aws-elb-vs-nginx-load-balancer/
생활코딩 ELB 등록하기

profile
츄르 값 벌기 위해 코딩하는 아키텍쳐

0개의 댓글