[EC2] Load Balancer 기반 Auto Scaling 구현 (1) 도입배경, 이론

서론

  • 이번 포스트에서는 프로젝트에 Elastic Load Balancer(ELB)를 도입하게 된 이유와 그 효과에 대해 설명하겠습니다.

1. 도입배경

  • 기존에 Backend Instance를 EC2 Auto Scaling Group으로 구성하였습니다.
  • Auto Scaling을 통해 인스턴스 수는 트래픽에 따라 자동으로 조절되었지만, 프론트엔드 리버스 프록시를 통해 넘어오는 요청은 특정 인스턴스에만 몰리는 문제가 있었습니다.
  • 이러한 구조에서는 오토스케일링의 장점을 온전히 활용할 수 없었고, 특정 인스턴스가 과부하로 인해 성능이 저하되거나 서비스 중단이 발생할 위험이 있었습니다.
  • 이를 해결하기 위해 Elastic Load Balancer를 도입하게 되었습니다

2. Elastic Load Balancer 쉬운 설명

  • 지난번 Auto Scaling을 커피숍 비유로 설명했던 것처럼, 이번에도 쉽게 이해할 수 있도록 같은 비유를 사용해 보겠습니다.
  • 커피숍에 바리스타 1명과 커피머신 5대가 있다고 가정합시다.
  • 갑자기 100명의 손님이 몰려 각각 커피를 한 잔씩 주문합니다.

Case 1 특정 커피머신에서만 커피를 제조 (로드 밸런서가 없는 경우)

  • 바리스타가 모종의 이유로 1번 커피머신에서만 커피를 제조한다고 하면 어떻게 될까요?
  • 1번 커피머신은 많은 커피 제조 인해 과부하가 걸리며, 커피 제조시간도 오래걸리게 됩니다.
  • 손님들은 많은 시간을 기다려야 하고, 1번 커피머신은 고장 날 위험도 커집니다.

Case 2 커피머신에 균등하게 커피를 제조 (로드 밸런서가 있는 경우)

  • 이번에는 바리스타가 5대의 커피머신에 균등하게 작업을 분배한다고 가정합시다.
  • 각 커피머신이 20잔씩 제조하므로 훨씬 빠르게 주문을 처리할 수 있습니다.
  • 한 대에만 부담이 집중되지 않아 시스템이 안정적으로 동작합니다.
  • Elastic Load Balancer는 이처럼 트래픽을 여러 리소스에 분산하여 부하를 줄이고, 효율적으로 시스템을 운영할 수 있도록 도와줍니다.

3. Elastic Load Balancer 란?

  • Elastic Load Balancer(ELB)는 AWS의 트래픽 분산 서비스입니다. 웹 애플리케이션의 네트워크 트래픽을 여러 대상(Target)으로 분산시켜 부하를 줄이고, 서비스 중단을 방지합니다.

1) 주요 기능

  1. 트래픽 분산
  • 클라이언트 요청을 EC2 인스턴스, 컨테이너, Lambda 함수 등으로 자동 분산합니다.
  • 기본적으로 라운드 로빈 방식(Round Robin) 이나 최소 연결 방식(Least Connections) 으로 트래픽을 처리합니다
  1. 헬스 체크
  • Traget Group의 리소스들의 상태를 정기적으로 모니터링합니다.
  • 비정상적인 리소스에는 트래픽을 전달하지 않습니다
  1. 보안
  • HTTPS/TLS 암호화를 지원하며, 보안 그룹(Security Group)과 통합 관리가 가능합니다.
  1. 고가용성
  • 트래픽 분산으로 시스템 가용성을 높이고, 장애 발생 시에도 서비스 중단을 방지합니다.

2) Target Group

  • ELB 가 요청을 전달할 리소스들의 그룹입니다.
  • EC2 인스턴스, Lambda 함수, IP 주소 등을 포함할 수 있습니다.
  • Auto Scaling Group과 연동하여 EC2 인스턴스가 자동으로 Target Group에 등록되도록 설정할 수 있습니다.

3) Listner

  • 특정 포트(예: 80, 443)에서 ELB로 들어오는 트래픽을 수신하는 구성 요소입니다.
  • 요청을 Target Group으로 전달하거나 특정 응답을 반환 하도록 설정할 수 있습니다.

4) Helath Check

  • Target Group에 연결된 인스턴스들의 상태를 체크합니다.
  • 예를 들어, /api/health와 같은 엔드포인트로 HTTP 요청을 보내 응답 상태를 확인합니다.
  • 상태가 비정상인 리소스는 자동으로 트래픽 분배에서 제외됩니다

결론

  • Elastic Load Balancer는 AWS 클라우드 환경에서 안정적이고 확장 가능한 애플리케이션을 구축하는 데 필수적인 도구입니다.
  • 다음 포스트에서는 실제로 ELB를 설계하고 구현하는 과정을 자세히 다뤄보겠습니다.