ELB
1. 개요
1. 개요
ELB는 AWS에서 제공하는 완전 관리형 로드 밸런서 서비스이다. 이 서비스는 들어오는 애플리케이션 트래픽을 여러 대상, 예를 들어 Amazon EC2 인스턴스, 컨테이너, IP 주소 등에 자동으로 분산시킨다. 이를 통해 애플리케이션의 가용성과 확장성을 높이는 데 핵심적인 역할을 한다.
ELB는 단일 지점의 장애를 방지하고 애플리케이션의 내결함성을 강화한다. 사용자는 단일 DNS 이름을 통해 애플리케이션에 접근하며, ELB는 백엔드에서 트래픽을 분산시키는 작업을 투명하게 처리한다. 이는 애플리케이션의 규모에 관계없이 일관된 성능을 유지하도록 돕는다.
주요 특징으로는 다양한 유형의 로드 밸런서 제공, 자동 확장, 강력한 보안 기능 통합, 세부적인 모니터링 등이 있다. 사용자는 애플리케이션의 요구 사항에 따라 가장 적합한 유형의 로드 밸런서를 선택하여 구성할 수 있다.
2. ELB의 주요 기능
2. ELB의 주요 기능
ELB는 클라우드 컴퓨팅 환경에서 애플리케이션의 가용성, 확장성 및 보안을 향상시키는 핵심적인 기능을 제공한다.
가장 기본적인 기능은 로드 밸런싱이다. ELB는 들어오는 애플리케이션 트래픽을 여러 가상 머신이나 컨테이너와 같은 백엔드 대상에 자동으로 분산시킨다. 이를 통해 단일 대상에 과부하가 걸리는 것을 방지하고, 애플리케이션의 전체 처리량을 최적화한다. 일반적으로 라운드 로빈, 최소 연결 수 등 사전 정의된 라우팅 알고리즘을 사용하여 트래픽을 분배한다.
고가용성과 내결함성을 보장하는 것은 또 다른 핵심 기능이다. ELB는 단일 가용 영역 내에서뿐만 아니라 여러 가용 영역에 걸쳐 구성될 수 있다. 한 가용 영역의 대상이나 인스턴스에 장애가 발생하면, ELB는 자동으로 정상적인 가용 영역의 대상으로만 트래픽을 라우팅하여 서비스 중단을 방지한다. 이는 애플리케이션의 내구성을 크게 향상시킨다.
상태 확인 기능을 통해 ELB는 등록된 백엔드 대상의 상태를 주기적으로 모니터링한다. 지정된 포트와 경로(예: /health)로 HTTP 요청을 보내 응답을 확인하며, 건강하지 않은 대상으로의 트래픽 전송을 중지한다. 또한, ELB는 SSL/TLS 종료를 처리하여 백엔드 인스턴스의 암호화/복호화 부담을 덜어주고, 웹 애플리케이션 방화벽과의 통합을 통해 일반적인 웹 취약점으로부터 애플리케이션을 보호할 수 있다.
2.1. 로드 밸런싱
2.1. 로드 밸런싱
로드 밸런싱은 ELB의 핵심 기능으로, 단일 엔드포인트로 들어오는 클라이언트의 트래픽을 여러 백엔드 대상(예: EC2 인스턴스, 컨테이너, IP 주소)에 자동으로 분배하는 작업을 의미한다. 이는 단일 서버에 과도한 부하가 집중되는 것을 방지하여 애플리케이션의 처리량, 응답 시간 및 전반적인 성능을 향상시킨다.
트래픽 분배는 사전에 정의된 라우팅 알고리즘에 따라 이루어진다. 가장 일반적인 알고리즘은 라운드 로빈으로, 요청을 대상 그룹 내 서버에 순차적으로 분배한다. 또한, 최소 미해결 요청 알고리즘은 현재 가장 적은 연결 수를 가진 대상으로 트래픽을 보내 부하를 더욱 정교하게 분산시킨다.
로드 밸런싱의 수준은 ELB의 유형에 따라 다르다. Application Load Balancer는 HTTP/HTTPS 트래픽을 기반으로 애플리케이션 계층(OSI 7계층)에서 동작하며, 요청의 내용(예: URL 경로, 호스트 헤더)에 따라 다른 대상 그룹으로 라우팅할 수 있다. 반면, Network Load Balancer는 초고성능과 초저지연 시간이 요구되는 경우에 사용되며, TCP/UDP 트래픽을 전송 계층(OSI 4계층)에서 분산한다.
이러한 분산 메커니즘은 애플리케이션의 확장성과 내구성을 보장한다. 트래픽이 증가하면 Auto Scaling 그룹과 연동하여 새로운 대상을 자동으로 추가하고 부하를 분산할 수 있으며, 특정 대상이 장애 상태가 되면 해당 대상으로의 트래픽 전송을 중지하여 사용자에게 지속적인 서비스를 제공한다.
2.2. 고가용성 및 내결함성
2.2. 고가용성 및 내결함성
ELB는 단일 장애 지점을 제거하여 애플리케이션의 가용성을 극대화하도록 설계되었다. 이를 위해 ELB는 기본적으로 여러 가용 영역에 걸쳐 배포된다. 사용자는 ELB를 생성할 때 두 개 이상의 가용 영역을 지정하며, ELB는 지정된 각 가용 영역에 로드 밸런서 노드를 자동으로 프로비저닝한다. 이 노드들은 트래픽을 수신하고 라우팅하는 역할을 담당한다.
하나의 가용 영역에 장애가 발생하더라도 ELB 서비스는 다른 정상적인 가용 영역의 노드를 통해 트래픽을 계속 라우팅한다. 이는 애플리케이션의 다운타임을 방지하는 핵심 메커니즘이다. 또한, ELB 뒤에 배치된 대상 그룹의 인스턴스들도 여러 가용 영역에 분산 배치하는 것이 권장된다. 이렇게 하면 특정 가용 영역의 인스턴스 그룹 전체에 문제가 생겨도, ELB가 자동으로 건강한 인스턴스가 있는 다른 가용 영역으로 트래픽을 전환한다.
ELB의 내결함성은 상태 확인 기능과 밀접하게 연동되어 작동한다. ELB는 정기적으로 등록된 대상(예: EC2 인스턴스, IP 주소, 람다 함수)의 건강 상태를 모니터링한다. 상태 확인에 실패한 대상으로는 새로운 연결을 라우팅하지 않으며, 기존 연결도 종료된다[1]. 이 자동 감지 및 제거 메커니즘은 최종 사용자에게는 투명하게 작동하며, 장애가 발생한 백엔드 리소스로 인한 서비스 중단을 효과적으로 방지한다.
특징 | 설명 |
|---|---|
다중 가용 영역 배포 | ELB 자체가 여러 가용 영역에 노드를 배포하여 로드 밸런서 수준의 장애를 방지한다. |
백엔드 인스턴스 분산 | 대상 인스턴스를 여러 가용 영역에 배치하면 영역 단위 장애에 대한 복원력을 확보한다. |
자동 상태 기반 라우팅 | 건강하지 않은 대상으로의 트래픽 라우팅을 중단하여 애플리케이션 계층의 내결함성을 제공한다. |
자동 장애 조치 | 가용 영역 또는 인스턴스 장애 시, 사용자 개입 없이 정상 경로로 트래픽이 자동 전환된다. |
2.3. 상태 확인
2.3. 상태 확인
상태 확인은 ELB가 백엔드에 등록된 대상(예: EC2 인스턴스, IP 주소, 컨테이너)의 건강 상태를 주기적으로 점검하는 프로세스이다. 이를 통해 ELB는 정상적으로 요청을 처리할 수 있는 대상에게만 트래픽을 라우팅하고, 비정상적인 대상은 라우팅 대상에서 자동으로 제외한다. 이 기능은 애플리케이션의 전반적인 가용성과 신뢰성을 유지하는 데 핵심적인 역할을 한다.
상태 확인은 사용자가 정의한 프로토콜(HTTP, HTTPS, TCP), 포트, 경로를 기반으로 수행된다. 예를 들어, 웹 서버 대상 그룹의 경우 ELB는 정해진 간격(예: 30초)으로 지정된 경로(예: /health)에 HTTP GET 요청을 보낸다. 서버가 미리 정의된 성공 코드(예: HTTP 200)를 반환하면 해당 대상은 'healthy' 상태로 판단된다. 반대로, 연속적인 실패 횟수 임계값을 초과하면 대상은 'unhealthy' 상태가 되어 트래픽 수신이 중단된다.
상태 확인의 주요 구성 요소는 다음과 같다.
구성 요소 | 설명 | 일반적인 설정값 예시 |
|---|---|---|
프로토콜(Protocol) | 상태 확인에 사용할 프로토콜 | HTTP, HTTPS, TCP |
포트(Port) | 상태 확인 요청을 보낼 포트 | 트래픽 포트 또는 별도 포트 |
경로(Path) | HTTP/HTTPS 프로토콜 시 사용할 요청 경로 |
|
성공 코드(Success Codes) | 정상 상태로 판단할 HTTP 응답 코드 | 200 |
간격(Interval) | 연속적인 상태 확인 요청 사이의 시간(초) | 30초 |
제한 시간(Timeout) | 응답 대기 시간(초). 이 시간 내 응답 없으면 실패 | 5초 |
건강 임계값(Healthy Threshold) | 비정상 대상을 정상으로 전환하기 위한 연속 성공 횟수 | 2회 |
비정상 임계값(Unhealthy Threshold) | 정상 대상을 비정상으로 전환하기 위한 연속 실패 횟수 | 2회 |
효과적인 상태 확인 경로를 구성하는 것은 중요하다. 이 경로는 애플리케이션의 핵심 종속성(예: 데이터베이스 연결, 캐시 서버 상태)을 점검하는 간단한 엔드포인트여야 한다. 단순히 웹 서버 프로세스만 확인하는 것이 아니라, 애플리케이션이 실제로 요청을 처리할 수 있는지 검증해야 한다. 잘 설계된 상태 확인은 장애를 가진 인스턴스로 인한 사용자 경험 저하를 사전에 방지하고, Auto Scaling 그룹과 연동되어 비정상 인스턴스를 자동으로 교체하는 트리거 역할도 한다.
2.4. SSL/TLS 종료
2.4. SSL/TLS 종료
SSL/TLS 종료는 ELB가 클라이언트와의 암호화된 HTTPS 연결을 수신한 후, 로드 밸런서 단계에서 암호화를 해제하는 기능이다. 이 과정을 통해 백엔드 인스턴스는 복호화된 일반 HTTP 트래픽을 처리하게 된다. 이는 애플리케이션 서버의 CPU 부하를 크게 줄여주는 핵심적인 역할을 한다. SSL/TLS 암호화 및 복호화는 계산 집약적인 작업이므로, 이를 ELB에 위임함으로써 백엔드 서버는 순수한 비즈니스 로직 처리에 자원을 집중할 수 있다.
이 기능을 구성하기 위해 사용자는 ELB에 SSL 인증서를 업로드해야 한다. AWS Certificate Manager (ACM)를 사용하면 무료로 공인 인증서를 발급받고 자동으로 갱신 관리할 수 있어 편리하다. 인증서가 적용되면, ELB의 리스너는 지정된 포트(예: 443)에서 HTTPS 연결을 수락하고, 사전에 정의된 정책에 따라 암호화 스위트와 프로토콜 버전을 협상한다.
SSL/TLS 종료는 보안 아키텍처에도 영향을 미친다. ELB와 백엔드 인스턴스 간의 트래픽은 암호화되지 않은 상태로 전송될 수 있으므로, 이 구간을 사설 서브넷에 배치하거나 VPC 내부 트래픽에 대한 추가 암호화를 고려해야 한다. 또한, Application Load Balancer (ALB)는 종료된 트래픽의 헤더에 X-Forwarded-Proto 같은 정보를 추가하여 백엔드 애플리케이션이 원래 연결이 보안되었는지 판단할 수 있게 한다.
고려 사항 | 설명 |
|---|---|
오프로딩 이점 | 백엔드 서버의 컴퓨팅 리소스 절약 및 성능 향상 |
인증서 관리 | ACM 통합을 통한 중앙 집중식, 자동 갱신 관리 |
보안 구간 | ELB-백엔드 간 구간 보안을 위한 네트워크 설계 필요 |
프로토콜 정보 전달 |
|
3. ELB 유형
3. ELB 유형
ELB는 애플리케이션의 요구 사항에 따라 선택할 수 있는 여러 유형을 제공한다. 각 유형은 OSI 모델의 서로 다른 계층에서 동작하며, 특정 사용 사례에 최적화되어 있다.
유형 | 주요 동작 계층 | 주요 특징 | 주요 사용 사례 |
|---|---|---|---|
응용 계층 (7계층) | 웹 애플리케이션, API 게이트웨이, 컨테이너 기반 애플리케이션 | ||
Network Load Balancer (NLB) | 전송 계층 (4계층) | 초고성능, 초저지연, TCP/UDP 트래픽 처리, 고정 IP 주소 제공, 수백만 건의 초당 요청 처리 | 게임 서버, 실시간 스트리밍, 초고성능이 필요한 엔터프라이즈 애플리케이션 |
Gateway Load Balancer (GWLB) | 네트워크 계층 (3계층) | 트래픽을 가상 어플라이언스(방화벽, 침입 탐지 시스템 등)로 투명하게 분산 | 보안 검사, 침입 탐지 및 방지, 네트워크 모니터링 |
Classic Load Balancer (CLB) | 4계층 및 7계층 | 이전 세대의 로드 밸런서, 기본적인 HTTP/HTTPS 및 TCP 로드 밸런싱 제공 | EC2-Classic 네트워크에서 구동되는 레거시 애플리케이션 |
Application Load Balancer는 가장 일반적으로 사용되는 유형으로, HTTP/HTTPS 요청의 내용을 분석하여 다른 대상 그룹으로 라우팅할 수 있다. 예를 들어, /api 경로로 들어오는 요청은 백엔드 API 서버 그룹으로, /static 경로의 요청은 정적 파일 서버 그룹으로 보낼 수 있다. 이는 마이크로서비스 아키텍처를 구현하는 데 핵심적인 역할을 한다.
Network Load Balancer와 Gateway Load Balancer는 각각 성능과 보안/네트워크 가상 어플라이언스 통합에 특화되어 있다. NLB는 하나의 정적 IP 주소를 유지하며, 초당 수백만 건의 요청을 처리할 수 있어 변동성이 큰 트래픽 패턴에 적합하다. GWLB는 GENEVE 프로토콜을 사용하여 트래픽을 검사 및 필터링하는 타사 가상 어플라이언스에 트래픽을 전달하고, 결과를 다시 애플리케이션으로 돌려보내는 흐름을 단순화한다. Classic Load Balancer는 이전 세대 제품으로, 새로운 애플리케이션에는 ALB나 NLB를 사용하는 것이 권장된다.
3.1. Application Load Balancer (ALB)
3.1. Application Load Balancer (ALB)
Application Load Balancer는 OSI 모델의 7계층(애플리케이션 계층)에서 동작하는 로드 밸런서이다. HTTP와 HTTPS 트래픽을 처리하도록 설계되었으며, 요청의 내용(예: URL 경로, 호스트 헤더, HTTP 헤더)을 기반으로 라우팅 결정을 내릴 수 있다. 이는 마이크로서비스나 컨테이너 기반 애플리케이션에서 특정 서비스로 트래픽을 유연하게 분산시키는 데 적합하다.
ALB의 핵심 구성 요소는 리스너와 대상 그룹이다. 리스너는 지정된 프로토콜과 포트로 연결 요청을 확인하며, 사전 정의된 라우팅 규칙에 따라 요청을 적절한 대상 그룹으로 전달한다. 라우팅 규칙은 다음과 같은 조건을 기반으로 구성할 수 있다.
조건 유형 | 설명 |
|---|---|
경로 기반 | URL 경로 패턴 (예: |
호스트 기반 | HTTP 호스트 헤더 (예: |
HTTP 헤더/메서드 | 특정 헤더 값 또는 HTTP 메서드 (GET, POST) |
쿼리 문자열 | URL의 쿼리 파라미터 |
ALB는 웹소켓 및 HTTP/2와 같은 최신 프로토콜을 기본적으로 지원한다. 또한 SSL/TLS 종료 기능을 제공하여 백엔드 인스턴스의 암호화/복호화 부하를 줄여준다. 내장된 상태 확인 기능은 등록된 대상(예: EC2 인스턴스, IP 주소, 람다 함수)의 건강 상태를 주기적으로 점검하여 비정상 대상으로의 트래픽 전송을 방지한다.
ALB는 컨테이너 오케스트레이션 서비스인 Amazon ECS 및 Amazon EKS와의 통합이 원활하다. 이를 통해 동적으로 변경되는 컨테이너 환경에서 서비스 디스커버리와 로드 밸런싱을 효과적으로 관리할 수 있다. 또한 AWS WAF(웹 애플리케이션 방화벽)와 통합되어 일반적인 웹 공격으로부터 애플리케이션을 보호하는 기능도 제공한다[3].
3.2. Network Load Balancer (NLB)
3.2. Network Load Balancer (NLB)
Network Load Balancer는 OSI 모델의 4계층(전송 계층)에서 동작하는 로드 밸런서이다. TCP, UDP, TLS 트래픽을 처리하도록 설계되었으며, 초당 수백만 건의 요청을 처리할 수 있는 극도로 높은 처리량과 초저 지연 시간을 제공하는 것이 특징이다. 연결 수준에서 트래픽을 라우팅하며, 패킷의 내용을 검사하지 않고 소스 IP 주소와 포트, 대상 IP 주소와 포트, 프로토콜과 같은 정보를 기반으로 라우팅 결정을 내린다.
NLB는 하나의 정적 IP 주소를 각 가용 영역에 할당받으며, 탄력적 IP 주소를 연결할 수도 있다. 이는 클라이언트 IP 주소를 보존하는 기능과 결합되어, 백엔드 애플리케이션이 연결 클라이언트의 실제 소스 IP를 확인할 수 있게 한다. 이러한 특성은 IP 화이트리싱이 필요한 애플리케이션, 게임 서버, IoT 디바이스 통신, 그리고 초고성능이 요구되는 금융 거래 시스템에 적합하다.
주요 구성 요소와 특징은 다음과 같다.
구성 요소/특징 | 설명 |
|---|---|
리스너 | 지정된 프로토콜(TCP, UDP, TLS)과 포트에서 들어오는 연결을 확인한다. |
대상 그룹 | Amazon EC2 인스턴스, IP 주소, AWS Lambda 함수 등으로 구성된 백엔드 리소스 집합이다. |
대상 유형 | 인스턴스 ID, IP 주소, AWS Lambda 함수를 지원한다. |
연결 고정 | 동일한 클라이언트로부터의 연결을 동일한 대상으로 라우팅하여 세션 상태를 유지할 수 있다. |
대상 상태 확인 | TCP 또는 HTTP/HTTPS 상태 확인을 통해 백엔드 대상의 건강 상태를 모니터링한다. |
NLB는 Zonal Isolation 아키텍처를 채택하여, 한 가용 영역의 실패가 다른 영역의 성능에 영향을 미치지 않도록 설계되었다. 또한 AWS PrivateLink 서비스의 기반이 되어, VPC 내부에서 AWS 서비스 및 타사 서비스에 비공개로 안전하게 접근할 수 있는 기능을 제공한다[4].
3.3. Gateway Load Balancer (GWLB)
3.3. Gateway Load Balancer (GWLB)
Gateway Load Balancer는 AWS에서 제공하는 ELB 유형 중 하나로, 3계층과 4계층에서 동작하며 가상 어플라이언스의 배포, 확장 및 관리에 특화되어 있다. 주로 방화벽, 침입 탐지 시스템, 침입 방지 시스템과 같은 보안 가상 어플라이언스의 트래픽을 투명하게 분산시키는 데 사용된다.
GWLB의 핵심 구성 요소는 GENEVE 프로토콜을 사용하는 Gateway Load Balancer 엔드포인트이다. 이 엔드포인트는 VPC의 트래픽을 가로채어 등록된 가상 어플라이언스 인스턴스로 라우팅한 후, 검사 및 처리가 완료된 트래픽을 원래 목적지로 다시 전송한다. 이를 통해 애플리케이션의 아키텍처나 클라이언트 구성을 변경하지 않고도 네트워크 트래픽에 대한 보안 검사를 쉽게 삽입할 수 있다.
GWLB는 주로 다음과 같은 사용 사례에 적합하다.
사용 사례 | 설명 |
|---|---|
네트워크 보안 검사 | 모든 인바운드 및 아웃바운드 트래픽을 차세대 방화벽이나 IDS/IPS와 같은 서드파티 보안 솔루션을 통해 라우팅한다. |
가상 어플라이언스 확장성 관리 | Auto Scaling 그룹과 통합하여 트래픽 양에 따라 가상 어플라이언스를 자동으로 확장 또는 축소할 수 있다. |
고가용성 보장 | 단일 가용 영역 장애 시에도 다른 영역의 정상적인 어플라이언스로 트래픽을 자동으로 재분배한다. |
이러한 설계로 인해 GWLB는 하이브리드 클라우드 환경이나 복잡한 규정 준수 요구사항이 있는 조직에서 중앙 집중식 네트워크 보안 검사를 구현하는 데 유용한 도구가 된다.
3.4. Classic Load Balancer
3.4. Classic Load Balancer
Classic Load Balancer는 AWS에서 가장 먼저 출시된 로드 밸런서 유형이다. 이는 OSI 모델의 4계층(전송 계층)과 7계층(응용 계층)에서 동작하며, TCP/SSL 트래픽과 HTTP/HTTPS 트래픽을 모두 처리할 수 있다. 주로 EC2 인스턴스와 같은 대상으로 트래픽을 분산시키는 데 사용되었으나, 현재는 보다 세분화된 기능을 제공하는 Application Load Balancer와 Network Load Balancer로 대체되는 추세이다.
주요 기능으로는 연결 기반의 로드 밸런싱, 상태 확인, SSL/TLS 종료 등이 있다. 라우팅 알고리즘으로는 라운드 로빈 방식을 기본으로 사용한다. 또한 고정 세션 기능을 통해 특정 클라이언트의 요청을 항상 동일한 백엔드 인스턴스로 라우팅할 수 있다.
특징 | 설명 |
|---|---|
지원 프로토콜 | TCP, SSL, HTTP, HTTPS |
OSI 계층 | 계층 4 & 계층 7 |
대상 | EC2 인스턴스 |
라우팅 알고리즘 | |
주요 기능 |
새로운 애플리케이션을 구축할 때는 ALB나 NLB를 사용하는 것이 권장된다. 그러나 기존에 Classic Load Balancer를 사용하던 레거시 애플리케이션을 운영 중이거나, EC2-Classic 네트워크에서 애플리케이션을 실행하는 경우에는 여전히 필요하다.
4. 작동 원리
4. 작동 원리
ELB의 작동 원리는 주로 리스너, 대상 그룹, 그리고 선택된 라우팅 알고리즘을 중심으로 구성된다. 사용자가 ELB의 도메인 이름이나 IP 주소로 요청을 보내면, 이 요청은 먼저 구성된 리스너에 의해 수신된다.
리스너는 지정된 프로토콜과 포트에서 연결 요청을 확인하는 구성 요소이다. 예를 들어, HTTP/HTTPS 트래픽을 처리하는 Application Load Balancer는 일반적으로 포트 80(HTTP) 또는 443(HTTPS)에서 리스너를 설정한다. 리스너는 수신된 요청을 사전에 정의된 규칙에 따라 평가한 후, 적절한 대상 그룹으로 라우팅한다. 규칙은 호스트 헤더, 경로 패턴, HTTP 메서드 등 다양한 조건을 기반으로 할 수 있다.
대상 그룹은 하나 이상의 등록된 백엔드 인스턴스(예: EC2 인스턴스, IP 주소, 람다 함수)로 구성된다. ELB는 선택된 라우팅 알고리즘에 따라 대상 그룹 내의 특정 대상으로 트래픽을 분배한다. 주요 라우팅 알고리즘은 다음과 같다.
알고리즘 | 설명 | 주로 사용되는 ELB 유형 |
|---|---|---|
라운드 로빈 | 요청을 대상 그룹 내의 등록된 인스턴스에 순차적으로 분배한다. | |
최소 미해결 요청 | 현재 처리 중인 요청(연결) 수가 가장 적은 인스턴스로 새로운 요청을 라우팅한다. | Application Load Balancer, Network Load Balancer |
마지막으로, ELB는 대상 그룹에 구성된 상태 확인을 지속적으로 수행하여 각 대상의 정상 여부를 판단한다. 상태 확인에 실패한 대상은 라우팅 풀에서 자동으로 제외되어 트래픽을 받지 않게 되며, 정상 상태로 복구되면 다시 트래픽 분배에 포함된다. 이 과정을 통해 사용자 요청은 항상 정상적인 백엔드 리소스로만 전달된다.
4.1. 리스너 구성
4.1. 리스너 구성
리스너는 ELB가 클라이언트의 연결 요청을 검사하는 구성 요소이다. 리스너는 지정된 프로토콜과 포트를 사용하여 연결 요청을 대기하며, 사전에 정의된 규칙에 따라 수신된 트래픽을 적절한 대상 그룹으로 전달하는 역할을 한다.
리스너를 구성할 때는 프로토콜, 포트, 그리고 트래픽을 라우팅할 대상 그룹을 필수적으로 지정해야 한다. 사용 가능한 프로토콜은 선택한 ELB 유형에 따라 달라진다. 예를 들어, Application Load Balancer는 HTTP와 HTTPS 프로토콜을, Network Load Balancer는 TCP, TLS, UDP 프로토콜을 주로 사용한다. HTTPS 또는 TLS 리스너를 구성하는 경우, SSL/TLS 암호화를 처리하기 위해 SSL/TLS 인증서를 리스너에 연결해야 한다.
리스너 규칙은 ALB에서 트래픽 라우팅을 세부적으로 제어하는 데 사용된다. 각 규칙은 우선순위, 하나 이상의 조건, 그리고 하나 이상의 동작으로 구성된다. 조건은 들어오는 요청의 패턴(예: 호스트 헤더, 경로 패턴, HTTP 헤더, 쿼리 문자열 등)을 평가하는 데 사용된다. 조건이 일치하면 정의된 동작(예: 특정 대상 그룹으로 포워딩, 고정 응답 반환, 인증 요구 등)이 실행된다. 규칙은 우선순위 순서대로 평가되며, 첫 번째로 일치하는 규칙의 동작이 적용된다.
구성 요소 | 설명 | 예시 |
|---|---|---|
프로토콜/포트 | 리스너가 대기할 프로토콜과 포트 번호 | HTTPS/443, TCP/80 |
대상 그룹 | 트래픽이 전달될 백엔드 리소스 그룹 |
|
규칙 (ALB) | 조건과 동작을 정의하여 트래픽 라우팅 제어 | 경로가 |
인증서 (HTTPS/TLS) | SSL/TLS 암호화에 사용되는 인증서 | ACM에서 발급한 인증서 ARN |
이러한 리스너 구성은 ELB가 다양한 애플리케이션 요구사항에 따라 유연하게 트래픽을 분배하고, SSL/TLS 종료와 같은 기능을 효율적으로 수행할 수 있는 기반을 제공한다.
4.2. 대상 그룹
4.2. 대상 그룹
대상 그룹은 ELB가 트래픽을 전달할 실제 컴퓨팅 리소스의 논리적 집합을 가리킨다. ELB는 하나 이상의 대상 그룹에 연결되며, 리스너 규칙에 따라 트래픽을 적절한 대상 그룹으로 라우팅한다. 각 대상 그룹은 동일한 애플리케이션을 실행하는 하나 이상의 대상(예: EC2 인스턴스, IP 주소, 람다 함수, 컨테이너)으로 구성된다. 대상 그룹의 구성은 사용 중인 ELB 유형에 따라 달라진다.
주요 대상 유형은 다음과 같다.
대상 유형 | 지원하는 ELB 유형 | 설명 |
|---|---|---|
EC2 인스턴스 | ALB, NLB, Classic Load Balancer | 가장 일반적인 대상으로, 인스턴스 ID로 등록한다. |
ALB, NLB | 온프레미스 서버나 타 클라우드의 VM 등 VPC 외부에 있는 리소스를 대상으로 지정할 수 있다. | |
람다 함수 | ALB | HTTP 요청을 람다 함수로 직접 라우팅하여 서버리스 아키텍처를 구성할 수 있다. |
애플리케이션 로드 밸런서 | NLB |
ELB는 대상 그룹에 등록된 각 대상의 상태를 주기적으로 확인한다. 상태 확인은 구성된 프로토콜과 경로를 사용하여 대상의 응답 가능 여부를 판단한다. 상태 확인에 실패한 대상은 라우팅 대상에서 자동으로 제외되어 트래픽을 받지 않으며, 다시 정상 상태로 돌아오면 트래픽 수신이 자동으로 재개된다. 이는 애플리케이션의 전반적인 내결함성을 높이는 데 기여한다.
4.3. 라우팅 알고리즘
4.3. 라우팅 알고리즘
ELB는 트래픽을 백엔드 대상(예: EC2 인스턴스, 컨테이너, IP 주소)으로 분배할 때 사용하는 라우팅 알고리즘을 제공합니다. 기본적으로는 라운드 로빈 알고리즘이 사용되지만, Application Load Balancer와 Network Load Balancer는 각각의 유형에 맞춘 추가 알고리즘을 지원합니다.
Application Load Balancer (ALB)의 라우팅 알고리즘
ALB는 주로 7계층(응용 계층)에서 동작하며, HTTP/HTTPS 요청의 내용을 기반으로 지능적인 라우팅이 가능합니다. 기본 알고리즘은 다음과 같습니다.
* 라운드 로빈 (Round Robin): 요청을 등록된 대상 그룹 내의 대상들에 순차적으로 분배합니다. 모든 대상의 처리 능력이 동일할 때 효과적입니다.
* 최소 미해결 요청 (Least Outstanding Requests): 현재 처리 중인 요청(미해결 요청)의 수가 가장 적은 대상으로 새 요청을 라우팅합니다. 이는 대상 인스턴스의 부하 상태를 실시간으로 반영하여 처리 시간이 긴 요청이 있을 때 유리합니다.
Network Load Balancer (NLB)의 라우팅 알고리즘
NLB는 4계층(전송 계층)에서 동작하며, 초당 수백만 개의 요청을 처리하는 데 최적화되어 있습니다. TCP, UDP, TLS 트래픽을 처리하며, 사용 가능한 알고리즘은 다음과 같습니다.
* 라운드 로빈 (Round Robin): TCP/UDP 연결 또는 패킷을 대상들에 순차적으로 분배합니다.
* 최소 미해결 요청 (Least Outstanding Requests): 활성 TCP 연결 수가 가장 적은 대상으로 새 연결을 라우팅합니다. 이는 ALB의 동일한 알고리즘과 유사하지만, TCP 연결 수준에서 동작합니다.
* 해시 기반 (5-튜플 해시): 패킷의 5가지 요소(소스 IP, 소스 포트, 대상 IP, 대상 포트, 프로토콜)를 기반으로 해시 값을 계산하여 특정 대상으로 트래픽을 고정시킵니다. 이를 통해 하나의 클라이언트 세션의 모든 패킷이 동일한 대상으로 전송되어 세션 지속성이 보장됩니다[5].
사용자는 대상 그룹을 생성할 때 원하는 라우팅 알고리즘을 선택합니다. 선택은 애플리케이션의 특성(연결 지속성 필요 여부, 요청 처리 시간의 편차 등)과 성능 목표에 따라 결정됩니다.
5. 사용 사례
5. 사용 사례
ELB는 다양한 애플리케이션 아키텍처와 배포 모델에서 핵심적인 역할을 수행한다. 주로 웹 트래픽을 분산시키고 애플리케이션의 가용성을 보장하는 데 사용된다.
가장 일반적인 사용 사례는 웹 애플리케이션 서비스이다. ELB는 사용자 요청을 여러 EC2 인스턴스, 컨테이너 또는 IP 주소로 자동으로 분배한다. 이를 통해 단일 서버에 과부하가 걸리는 것을 방지하고, 서버 장애 발생 시 다른 정상 서버로 트래픽을 전환하여 서비스 중단을 최소화한다. 또한 SSL/TLS 암호화 복호화 작업을 ELB에서 처리함으로써 백엔드 서버의 부하를 줄이고 성능을 향상시킨다.
마이크로서비스 아키텍처 환경에서 ELB, 특히 Application Load Balancer는 필수적이다. ALB는 HTTP/HTTPS 요청의 경로(Path)나 호스트 헤더를 기반으로 특정 마이크로서비스로 트래픽을 라우팅할 수 있다. 예를 들어, /api/users 경로로 들어오는 요청은 사용자 서비스로, /api/orders 경로는 주문 서비스로 보낼 수 있다. 이는 단일 진입점을 제공하면서도 내부적으로는 여러 독립적인 서비스가 유연하게 운영될 수 있도록 한다.
사용 사례 | 주요 ELB 유형 | 설명 |
|---|---|---|
웹 애플리케이션 트래픽 분산 | HTTP/HTTPS 트래픽을 처리하고, 상태 확인을 통해 비정상 인스턴스로의 라우팅을 중단한다. | |
고성능 및 초저지연 애플리케이션 | TCP, UDP, TLS 트래픽을 처리하며, 초당 수백만 건의 요청과 극도로 낮은 지연 시간을 요구하는 경우에 적합하다. | |
보안 장비 가상화 및 확장 | 방화벽, 침입 탐지/방지 시스템 같은 서드파티 가상 어플라이언스를 투명하게 배포하고 확장할 수 있다. | |
하이브리드 및 멀티 클라우드 구성 | NLB, ALB | 온프레미스 데이터 센터의 서버나 다른 클라우드 서비스의 엔드포인트를 대상 그룹에 등록하여 트래픽을 분산시킬 수 있다. |
또한 ELB는 하이브리드 클라우드 및 멀티 클라우드 환경 구축에 활용된다. Network Load Balancer나 ALB는 AWS 외부의 리소스를 대상 그룹에 등록할 수 있다. 이를 통해 온프레미스 서버와 AWS의 인스턴스가 동일한 로드 밸런서 뒤에서 서비스를 제공하거나, 점진적인 마이그레이션을 수행할 수 있다.
5.1. 웹 애플리케이션 서비스
5.1. 웹 애플리케이션 서비스
ELB는 웹 애플리케이션을 호스팅하는 가장 일반적인 시나리오에서 핵심적인 역할을 수행한다. 주로 Application Load Balancer가 이 사용 사례에 적합하며, HTTP 및 HTTPS 트래픽을 웹 서버 인스턴스 그룹에 지능적으로 분산시킨다. 사용자 요청은 ELB의 단일 DNS 엔드포인트로 전달되며, 로드 밸런서는 사전에 정의된 라우팅 규칙에 따라 하나 이상의 가용 영역에 배치된 백엔드 Amazon EC2 인스턴스, 컨테이너 또는 IP 주소로 트래픽을 전달한다.
이 구성은 웹 애플리케이션의 확장성과 내구성을 크게 향상시킨다. 트래픽 증가에 따라 Auto Scaling 그룹과 연동하여 백엔드 인스턴스를 자동으로 추가하거나 제거할 수 있다. 또한 ELB는 지속적으로 백엔드 인스턴스의 상태를 확인하여 정상적인 인스턴스로만 트래픽을 라우팅함으로써 사용자에게 지속적인 서비스를 제공한다. 한 인스턴스나 가용 영역에 장애가 발생하더라도 트래픽은 자동으로 다른 정상 리소스로 전환된다.
고급 라우팅 기능을 통해 복잡한 웹 애플리케이션 구조를 효율적으로 관리할 수 있다. ALB는 호스트 또는 경로 기반 라우팅을 지원하여, 단일 로드 밸런서 뒤에 여러 애플리케이션 또는 서비스를 배치할 수 있다. 예를 들어, api.example.com으로 들어오는 트래픽은 API 서버 그룹으로, www.example.com/static 경로의 트래픽은 정적 콘텐츠 서버 그룹으로 라우팅할 수 있다.
장점 | 설명 |
|---|---|
단일 접점 | 사용자는 하나의 URL을 통해 서비스에 접근하며, 백엔드 인프라의 복잡성을 알 필요가 없다. |
탄력적 확장 | 트래픽 패턴에 따라 백엔드 용량을 자동으로 조정하여 성능을 유지하고 비용을 최적화한다. |
고가용성 보장 | 다중 가용 영역 배포와 상태 확인을 통해 애플리케이션의 가용성을 높인다. |
보안 강화 | SSL/TLS 종료 기능을 로드 밸런서에서集中 처리하여 백엔드 인스턴스의 부하를 줄이고 인증서 관리도 간소화한다. |
이러한 특성으로 인해 ELB는 전자상거래 사이트, 콘텐츠 관리 시스템, 미디어 스트리밍 플랫폼 등 다양한 형태의 웹 애플리케이션 서비스를 구축하는 데 필수적인 기반 서비스가 되었다.
5.2. 마이크로서비스 아키텍처
5.2. 마이크로서비스 아키텍처
ELB는 마이크로서비스 아키텍처의 핵심 인프라 구성 요소로, 서비스 간의 효율적이고 유연한 통신을 가능하게 한다. 마이크로서비스 환경에서는 수십, 수백 개의 독립적인 서비스가 네트워크를 통해 서로 통신하며, 각 서비스는 자체적인 확장 주기와 부하 패턴을 가진다. ELB는 이러한 서비스 인스턴스들 앞에 위치하여 클라이언트의 요청을 적절한 서비스 인스턴스로 분산시킨다. 특히 Application Load Balancer는 HTTP 및 HTTPS 트래픽을 기반으로 한 고급 라우팅 기능을 제공하여, 요청의 경로(Path)나 호스트 헤더(Host Header)를 분석해 특정 마이크로서비스로 라우팅할 수 있다. 이는 단일 로드 밸런서 뒤에 여러 서비스를 배치하고, 요청의 내용에 따라 서로 다른 대상 그룹으로 전달하는 패턴을 구현하는 데 필수적이다.
ELB는 서비스 디스커버리(Service Discovery)와 서비스 간 부하 분산을 단순화한다. 새로운 서비스 인스턴스가 Auto Scaling 그룹이나 Amazon ECS 클러스터에서 시작되면, ELB의 대상 그룹에 자동으로 등록되어 트래픽 수신을 시작한다. 반대로 인스턴스가 종료되면 대상 그룹에서 제거되어 트래픽을 받지 않는다. 이 동적 등록 및 등록 취소 메커니즘은 마이크로서비스의 탄력적 확장과 장애 복구를 뒷받침한다. 또한, ELB의 상태 확인 기능은 비정상적인 서비스 인스턴스를 실시간으로 탐지하고 라우팅 대상에서 제외함으로써 시스템 전체의 견고성을 높인다.
마이크로서비스 간의 내부 통신에도 ELB를 활용할 수 있다. Network Load Balancer는 초고성능과 초저지연 시간이 요구되는 서비스 간 TCP/UDP 트래픽의 로드 밸런싱에 적합하다. 한편, 외부 API 게이트웨이 뒤에 ALB를 배치하여 내부 서비스에 대한 세분화된 라우팅 정책을 구성하는 아키텍처도 일반적이다. 이는 각 마이크로서비스가 독립적인 배포와 확장을 유지하면서도, 외부에 일관된 엔드포인트를 제공할 수 있게 한다. 결과적으로 ELB는 마이크로서비스 시스템이 복잡성을 관리하면서도 가용성, 확장성, 내결함성이라는 핵심 이점을 실현하도록 돕는 기반 서비스이다.
5.3. 하이브리드 및 멀티 클라우드
5.3. 하이브리드 및 멀티 클라우드
ELB는 AWS 클라우드 환경 내의 서비스뿐만 아니라, 온프레미스 데이터 센터나 다른 퍼블릭 클라우드에 위치한 애플리케이션으로의 트래픽을 분산시키는 하이브리드 및 멀티 클라우드 아키텍처를 구성하는 데 핵심적인 역할을 합니다. 이를 통해 기존 인프라를 유지하면서 클라우드의 확장성과 유연성을 점진적으로 도입하거나, 여러 클라우드 공급자의 서비스를 통합적으로 활용할 수 있습니다.
특히 Network Load Balancer는 이 시나리오에서 중요한 구성 요소입니다. NLB는 TCP, UDP, TLS 트래픽을 로드 밸런싱하며, 하나의 정적 IP 주소를 제공합니다. 이 IP 주소는 AWS PrivateLink를 통해 생성된 VPC 엔드포인트 서비스에 연결될 수 있습니다. 온프레미스 환경은 AWS Direct Connect 또는 VPN 터널을 통해 Amazon VPC에 연결한 후, 이 NLB의 고정 IP를 대상으로 트래픽을 전송할 수 있습니다. NLB는 그 트래픽을 사전에 정의된 대상 그룹으로 전달하며, 이 대상 그룹에는 AWS 내의 Amazon EC2 인스턴스나 컨테이너는 물론, VPC 피어링 연결을 통한 다른 VPC의 리소스 또는 하이브리드 클라우드 연결을 통해 등록된 온프레미스 서버(IP 주소 형태)가 포함될 수 있습니다[6].
이러한 아키텍처는 다음과 같은 주요 사용 사례를 가능하게 합니다.
사용 사례 | 설명 |
|---|---|
클라우드 마이그레이션 | 특정 애플리케이션 계층(예: 웹 서버)만 AWS로 이전하고, 데이터베이스는 온프레미스에 유지하는 리프트-앤-시프트 전략에서 유용합니다. ELB는 클라우드의 웹 계층에 트래픽을 분배합니다. |
재해 복구(DR) | 주 운영 환경을 온프레미스에 두고, AWS 리전을 대기(DR) 사이트로 구성할 수 있습니다. 장애 시 Route 53 또는 글로벌 로드 밸런서를 통해 트래픽을 AWS 상의 NLB/ALB로 전환하여 서비스 연속성을 보장합니다. |
멀티 클라우드 로드 밸런싱 | 단일 ELB가 AWS, Google Cloud, Microsoft Azure 등 여러 퍼블릭 클라우드에 분산된 백엔드 애플리케이션 인스턴스로 트래픽을 라우팅할 수 있습니다. 이는 벤더 종속성을 줄이거나 지역별 최적의 서비스를 활용하는 전략에 도움이 됩니다. |
결과적으로 ELB는 물리적 위치에 구애받지 않고 애플리케이션 엔드포인트를 통합된 단일 접점으로 제공함으로써, 복잡한 하이브리드 및 멀티 클라우드 환경에서도 일관된 트래픽 관리와 고가용성을 실현하는 인프라의 관문 역할을 수행합니다.
6. 보안 고려사항
6. 보안 고려사항
ELB는 애플리케이션의 전면에 위치하는 핵심 구성 요소이므로 강력한 보안 구성이 필수적이다. 주요 보안 고려사항으로는 네트워크 접근 제어, 웹 공격 방어, 그리고 암호화 트래픽 처리가 있다.
네트워크 수준의 보안은 보안 그룹과 네트워크 ACL을 통해 관리된다. ELB 자체에 적용되는 보안 그룹은 허용된 IP 주소나 CIDR 블록에서만 특정 포트(예: HTTP 80, HTTPS 443)로의 인바운드 트래픽을 허용하도록 구성한다. 반면, 백엔드 EC2 인스턴스의 보안 그룹은 ELB의 보안 그룹에서만 들어오는 트래픽을 허용하여 외부에서 인스턴스로의 직접 접근을 차단하는 것이 일반적인 패턴이다. 네트워크 ACL은 서브넷 수준에서 추가적인 허용/거부 규칙을 제공하는 무상태 필터링 계층이다.
애플리케이션 계층의 공격으로부터 보호하기 위해 Application Load Balancer는 AWS WAF와 통합된다. AWS WAF를 사용하면 SQL 삽입, 크로스 사이트 스크립팅, 알려진 악성 IP 주소 등 일반적인 웹 취약점으로부터 애플리케이션을 보호하는 규칙을 정의하고 적용할 수 있다. 또한, SSL/TLS 종료 기능을 활용하면 ELB에서 암호화를 해제하고 백엔드 인스턴스로는 일반 HTTP 트래픽을 전달하여 인스턴스의 암호화/복호화 부하를 줄일 수 있다. 이 경우 ELB는 ACM(AWS Certificate Manager)에서 관리하는 공인 또는 사설 인증서를 쉽게 배포하고 갱신할 수 있어 인증서 관리 오버헤드를 줄인다.
보안 영역 | 관련 AWS 서비스/기능 | 주요 목적 |
|---|---|---|
네트워크 접근 제어 | 허용된 소스에서만 ELB 및 백엔드 리소스로의 트래픽을 제한한다. | |
웹 애플리케이션 방화벽 | AWS WAF (ALB 연동) | 애플리케이션 계층의 일반적인 웹 익스플로잇으로부터 보호한다. |
트래픽 암호화 및 인증서 관리 | 클라이언트-ELB 간 통신을 암호화하고 인증서의 배포 및 갱신을 자동화한다. |
6.1. 보안 그룹 및 네트워크 ACL
6.1. 보안 그룹 및 네트워크 ACL
ELB의 보안을 강화하기 위해 AWS는 네트워크 수준의 방어 메커니즘으로 보안 그룹과 네트워크 ACL을 제공한다. 이 두 요소는 서로 다른 계층에서 작동하며, 함께 사용될 때 효과적인 방어 체계를 구성한다.
보안 그룹은 ELB 및 백엔드 인스턴스에 연결되는 가상 방화벽 역할을 한다. 이는 상태 저장(stateful) 규칙을 적용하여, 허용된 인바운드 트래픽에 대한 아웃바운드 응답을 자동으로 허용한다. 일반적으로 ELB의 보안 그룹은 클라이언트로부터의 특정 포트(예: HTTP용 80, HTTPS용 443)로의 인바운드 트래픽만 허용하도록 구성된다. 반대로, ELB에서 백엔드 인스턴스로의 트래픽을 허용하기 위해서는 백엔드 인스턴스의 보안 그룹에서 ELB의 보안 그룹을 소스로 지정하는 규칙이 필요하다.
특성 | 보안 그룹 | 네트워크 ACL |
|---|---|---|
적용 범위 | 인스턴스 수준 (ENI에 연결) | 서브넷 수준 |
상태 추적 | 상태 저장(Stateful) | 상태 비저장(Stateless) |
규칙 평가 | 모든 규칙을 평가 후 허용/거부 | 번호 순서대로 평가, 첫 번째 일치 규칙 적용 |
기본 동작 | 명시적 허용 규칙만 있음, 모든 거부는 암시적 | 명시적 허용/거부 규칙 존재, 마지막은 모든 트래픽 거부 |
규칙 대상 | 다른 보안 그룹 ID를 참조 가능 | CIDR 블록만 대상으로 지정 가능 |
네트워크 ACL은 서브넷에 대한 추가적인 보안 계층으로, 상태 비저장(stateless) 패킷 필터링을 수행한다. ELB가 위치한 퍼블릭 서브넷과 백엔드 인스턴스가 위치한 프라이빗 서브넷 각각에 대해 별도의 네트워크 ACL 규칙을 정의할 수 있다. 이는 특정 IP 주소 범위로부터의 비정상적 접근을 차단하는 데 유용하다. 네트워크 ACL 규칙은 번호 순으로 평가되며, 인바운드와 아웃바운드 트래픽에 대한 규칙을 별도로 정의해야 한다는 점이 보안 그룹과 다르다.
6.2. WAF 통합
6.2. WAF 통합
AWS WAF는 웹 애플리케이션 방화벽으로, 일반적인 웹 취약점으로부터 애플리케이션을 보호합니다. Application Load Balancer 및 CloudFront와 통합되어, 애플리케이션 계층(OSI 7계층의 7계층)에서 들어오는 트래픽을 실시간으로 검사하고 필터링합니다.
ELB와 WAF 통합의 주요 보호 기능은 다음과 같습니다.
보호 대상 | 설명 |
|---|---|
악의적인 SQL 코드를 삽입하여 데이터베이스를 조작하려는 공격을 차단합니다. | |
크로스 사이트 스크립팅(XSS) | 웹사이트에 악성 스크립트를 주입하는 공격을 방어합니다. |
지리적 차단 | 특정 국가 또는 지역에서 발생하는 트래픽을 허용하거나 차단하는 규칙을 설정할 수 있습니다. |
DDoS 공격 완화 | 일반적으로 애플리케이션 계층(레이어 7) DDoS 공격에 대한 보호를 제공합니다[7]. |
사용자 정의 규칙 | IP 주소, HTTP 헤더, URI 문자열 등을 기반으로 한 사용자 정의 보안 규칙을 생성하고 적용할 수 있습니다. |
관리자는 AWS 관리형 규칙 집합을 쉽게 활성화하거나, 특정 애플리케이션 요구 사항에 맞춰 자체 규칙을 작성할 수 있습니다. WAF는 ALB 앞에 배치되어, 규칙에 따라 허용된 트래픽만 로드 밸런서를 통해 백엔드 대상으로 전달됩니다. 이 구성은 애플리케이션 로직을 변경하지 않고도 중앙에서 웹 보안 정책을 적용하고 관리할 수 있게 합니다.
6.3. 인증서 관리
6.3. 인증서 관리
ELB는 SSL/TLS 암호화 트래픽을 처리하기 위해 공개 키 인증서를 필요로 한다. 사용자는 AWS Certificate Manager를 통해 무료로 발급받은 ACM 인증서를 로드 밸런서에 쉽게 연결할 수 있다. ACM을 사용하면 인증서의 갱신 주기를 자동으로 관리할 수 있어, 만료로 인한 서비스 중단 위험을 줄인다.
또는 사용자가 자체적으로 구매하거나 내부 인증 기관에서 발급한 인증서를 AWS Identity and Access Management 서비스를 통해 업로드하여 사용할 수도 있다. 이 경우 인증서의 유효 기간을 직접 모니터링하고 수동으로 갱신 및 교체해야 하는 관리 부담이 발생한다.
인증서 관리는 보안 정책의 핵심 요소이다. ELB는 전송 계층 보안 프로토콜의 최신 버전을 지원하며, 보안 수준이 낮은 오래된 프로토콜과 암호화 제품군을 비활성화하는 정책을 구성할 수 있다. 이를 통해 Man-in-the-Middle 공격과 같은 보안 위협으로부터 애플리케이션을 보호한다.
7. 모니터링 및 로깅
7. 모니터링 및 로깅
ELB는 Amazon CloudWatch와의 긴밀한 통합을 통해 포괄적인 모니터링 기능을 제공한다. CloudWatch에서는 처리된 바이트 수, 활성 연결 수, 요청 수, 대상 응답 시간 등 ELB의 핵심 성능 지표를 실시간으로 수집하고 확인할 수 있다. 이러한 지표들은 사전 정의된 임계값을 기반으로 알람을 설정하여 성능 저하나 장애를 조기에 감지하는 데 활용된다. 또한, CloudWatch 대시보드를 통해 여러 ELB의 상태를 한눈에 모니터링할 수 있다.
ELB의 상세한 트래픽 패턴과 접근 정보를 분석하기 위해서는 액세스 로그 활성화가 필수적이다. 이 로그에는 요청 시간, 클라이언트 IP 주소, 요청 경로, 응답 상태 코드, 백엔드 대상의 응답 시간 등 각 HTTP/HTTPS 요청에 대한 정보가 기록된다. 로그는 지정된 Amazon S3 버킷에 자동으로 저장되며, Amazon Athena나 AWS Glue 같은 분석 도구를 사용하여 쿼리 및 시각화할 수 있다. 이를 통해 애플리케이션의 사용 추이 분석, 이상 트래픽 탐지, 문제 해결 등에 유용하게 사용된다.
모니터링 요소 | 설명 | 주요 활용 도구 |
|---|---|---|
성능 지표 | 처리량, 지연 시간, 연결 수, 상태 확인 결과 등 | |
액세스 로그 | 개별 요청에 대한 상세 기록 (IP, 경로, 상태 코드, 응답 시간 등) | |
트래픽 분석 | 로그 데이터를 기반으로 한 패턴 분석 및 시각화 | Amazon QuickSight, 타사 분석 도구 |
모니터링 데이터는 단순한 상태 확인을 넘어서 Auto Scaling 정책과 연동되어 동적 확장을 유도하거나, AWS WAF 로그와 결합하여 보안 위협을 분석하는 데에도 사용될 수 있다. 따라서 효과적인 ELB 운영을 위해서는 필수 지표에 대한 지속적인 모니터링과 액세스 로그의 체계적인 분석이 병행되어야 한다.
7.1. CloudWatch 지표
7.1. CloudWatch 지표
ELB는 Amazon CloudWatch와 긴밀하게 통합되어 다양한 성능 지표를 실시간으로 제공한다. 이러한 지표는 로드 밸런서와 등록된 대상의 상태, 트래픽 패턴, 성능 문제를 모니터링하고 경고를 설정하는 데 핵심적이다. 지표는 ELB 유형별로 약간의 차이가 있지만, 일반적으로 HTTP/HTTPS 요청 수, 데이터 처리량, 응답 시간, 오류율 등을 포함한다.
주요 CloudWatch 지표는 다음과 같은 범주로 나눌 수 있다.
지표 범주 | 주요 지표 예시 | 설명 |
|---|---|---|
트래픽 및 요청 |
| 로드 밸런서가 처리한 요청 수와 바이트 수를 나타낸다. |
대상 상태 |
| 대상 그룹 내 정상 및 비정상 상태의 대상 수를 보여준다. |
지연 시간 |
| 로드 밸런서가 대상으로부터 응답을 받는 데 걸리는 평균 시간을 측정한다. |
오류 |
| 클라이언트 오류(4XX) 또는 대상 서버 오류(5XX)의 발생 횟수를 추적한다. |
연결 |
| 현재 활성 상태인 연결 수와 새로 설정된 연결 수를 모니터링한다. |
사용자는 CloudWatch 콘솔, AWS CLI, 또는 SDK를 통해 이러한 지표에 접근하고 시각화할 수 있다. 또한, 특정 지표에 대한 임계값을 설정하여 CloudWatch 알람을 생성할 수 있다. 예를 들어, HealthyHostCount가 0으로 떨어지거나 TargetResponseTime이 허용 기준을 초과할 때 운영팀에 알림을 보내는 자동화된 모니터링을 구축하는 것이 일반적이다. 이를 통해 애플리케이션의 가용성과 성능을 사전에 보장할 수 있다.
7.2. 액세스 로그
7.2. 액세스 로그
ELB의 액세스 로그는 로드 밸런서로 들어오는 각 요청에 대한 상세한 정보를 기록한 파일이다. 이 로그는 Amazon S3 버킷에 저장되며, Application Load Balancer와 Classic Load Balancer에서 활성화할 수 있다. 로그는 5분 간격으로 배치 처리되어 전송된다.
액세스 로그는 각 요청에 대해 타임스탬프, 클라이언트 IP 주소, 요청 경로, 응답 상태 코드, 백엔드 인스턴스 정보 등을 포함한 포괄적인 레코드를 제공한다. 일반적인 로그 항목의 구성 요소는 다음과 같다.
필드 | 설명 |
|---|---|
| 로그 레코드의 유형 (예: |
| 요청이 로드 밸런서에 도착한 시간 |
| 요청을 시작한 클라이언트의 IP 주소와 포트 |
| 요청이 전달된 대상의 IP 주소와 포트 |
| 로드 밸런서가 요청을 받아 대상으로 라우팅하는 데 걸린 시간 |
| 대상의 응답을 받아 클라이언트에게 보내는 데 걸린 시간 |
| 로드 밸런서가 클라이언트에게 반환한 HTTP 상태 코드 |
| 대상이 반환한 HTTP 상태 코드 (ALB만 해당) |
이 로그는 트래픽 패턴 분석, 이상 징후 탐지, 보안 감사 및 성능 문제 해결에 필수적이다. 예를 들어, 특정 IP에서의 비정상적 요청 빈도나 높은 지연 시간을 보이는 요청을 식별할 수 있다. 로그 분석을 위해 Amazon Athena를 사용해 S3에 저장된 로그를 직접 쿼리하거나, Amazon CloudWatch Logs Insights로 스트리밍하여 분석할 수 있다.
8. 비용 최적화
8. 비용 최적화
ELB의 비용은 사용한 로드 밸런서 용량 단위(LCU)와 시간에 따라 청구되는 사용량 기반 모델을 따릅니다. 비용 최적화를 위해서는 애플리케이션 트래픽 패턴을 분석하고 적절한 ELB 유형을 선택하는 것이 핵심입니다. Application Load Balancer는 HTTP/HTTPS 트래픽에 최적화되어 있으며, Network Load Balancer는 초고성능 및 정적 IP가 필요한 TCP/UDP 트래픽에 적합합니다. 필요 이상으로 높은 사양의 로드 밸런서를 사용하거나 트래픽이 매우 적은 환경에서 다수의 로드 밸런서를 운영하는 것은 비효율적일 수 있습니다.
사용하지 않는 로드 밸런서 인스턴스를 삭제하는 것은 기본적인 절차입니다. 또한, Auto Scaling 그룹과 연동하여 애플리케이션 수요에 따라 백엔드 인스턴스를 자동으로 조정하면, ELB가 분산시키는 트래픽을 처리하는 리소스 비용도 함께 최적화할 수 있습니다. CloudWatch 지표를 통해 LCU 사용량을 모니터링하고, 트래픽이 예측 가능한 패턴을 보인다면 Reserved Instance와 유사한 예약 용량 모델을 고려할 수 있습니다[8].
다음은 주요 ELB 유형별 비용 구성 요소를 비교한 표입니다.
유형 | 주요 비용 요소 | 최적화 팁 |
|---|---|---|
처리된 요청 수(LCU 기준), 규칙 평가 수 | 불필요한 고급 라우팅 규칙 최소화, WAF 사용 시 규칙 집합 효율적으로 구성 | |
처리된 연결 수 및 데이터 처리량(LCU 기준) | 장시간 유지되는 연결(예: 게임 서버, 실시간 스트리밍) 사용 시 NLB가 ALB보다 비용 효율적일 수 있음 | |
처리된 패킷 수 및 데이터 처리량(LCU 기준) | 타사 가상 어플라이언스 라이선스 비용과 GWLB 운영 비용을 종합적으로 고려 |
마지막으로, 액세스 로그와 CloudWatch 지표를 정기적으로 검토하여 비정상적인 트래픽 패턴(예: DDoS 공격 시도, 구성 오류로 인한 반복 요청)을 식별하고 대응하는 것도 예상치 못한 비용 상승을 방지하는 데 도움이 됩니다.
9. 관련 기술 및 서비스
9. 관련 기술 및 서비스
Auto Scaling은 ELB와 긴밀하게 통합되어 애플리케이션의 트래픽 부하 변화에 따라 백엔드 인스턴스의 수를 자동으로 조정한다. ELB의 상태 확인 결과와 CloudWatch 지표를 기반으로, 트래픽 증가 시 인스턴스를 추가하고 감소 시 인스턴스를 제거하여 성능 유지와 비용 절감을 동시에 달성한다.
Route 53은 AWS의 DNS 서비스로, ELB와 연동하여 도메인 이름을 ELB의 엔드포인트로 연결한다. 이를 통해 사용자는 복잡한 IP 주소 대신 기억하기 쉬운 도메인 이름으로 애플리케이션에 접근할 수 있다. 또한, 지리 기반 라우팅, 장애 조치 라우팅, 상태 확인 기반 라우팅 등의 고급 기능을 통해 ELB 앞단에서 트래픽을 지능적으로 분배할 수 있다.
AWS Global Accelerator는 글로벌 사용자에게 애플리케이션의 가용성과 성능을 개선하는 서비스이다. 고정된 Anycast IP를 제공하여 사용자 트래픽을 가장 가까운 AWS 엣지 로케이션으로 유도한 후, 최적의 AWS 리전 내 ELB나 직접 EC2 인스턴스로 트래픽을 라우팅한다. 이는 ELB를 활용하는 글로벌 아키텍처의 지연 시간을 줄이고 장애 조치 시간을 단축시킨다.
서비스 | ELB와의 관계 및 주요 역할 |
|---|---|
ELB의 상태를 모니터링하며 백엔드 인스턴스 용량을 자동으로 조정하여 확장성과 내결함성을 제공한다. | |
도메인 이름을 ELB로 연결하고, 다양한 라우팅 정책을 통해 ELB 앞단의 트래픽 흐름을 관리한다. | |
글로벌 Anycast IP를 통해 사용자 트래픽을 최적의 AWS 리전 및 해당 리전의 ELB로 라우팅하여 성능과 가용성을 향상시킨다. |
9.1. Auto Scaling
9.1. Auto Scaling
Auto Scaling은 AWS에서 제공하는 서비스로, 애플리케이션의 로드를 모니터링하고 용량을 자동으로 조정하여 안정적인 성능을 유지하면서 비용을 최소화합니다. 이 서비스는 ELB와 긴밀하게 통합되어 작동합니다. Auto Scaling 그룹은 동일한 애플리케이션을 실행하는 EC2 인스턴스의 모음으로, ELB의 대상 그룹에 등록되어 트래픽을 수신합니다.
Auto Scaling의 핵심은 확장 정책을 정의하는 것입니다. 사용자는 CPU 사용률, 네트워크 트래픽, CloudWatch 사용자 지정 지표 등의 조건에 따라 인스턴스 수를 자동으로 늘리거나 줄이는 정책을 설정할 수 있습니다. 예를 들어, 평균 CPU 사용률이 70%를 초과하면 2개의 인스턴스를 추가하고, 30% 미만으로 떨어지면 1개의 인스턴스를 제거하는 규칙을 구성할 수 있습니다. 이 과정에서 새로 시작된 인스턴스는 자동으로 ELB에 등록되고, 종료되는 인스턴스는 ELB에서 제거되어 서비스 무결성을 유지합니다.
ELB와 Auto Scaling의 조합은 고가용성과 탄력성을 동시에 제공합니다. ELB는 들어오는 트래픽을 정상적인 인스턴스로만 분산시키고, Auto Scaling은 인스턴스의 상태를 확인하여 비정상 인스턴스를 교체하며, 필요에 따라 전체 용량을 조정합니다. 이 아키텍처는 트래픽 급증 시 확장하여 성능을 보장하고, 트래픽이 적을 때는 축소하여 불필요한 비용을 절감하는 데 핵심적입니다.
구성 요소 | 역할 | ELB와의 연동 |
|---|---|---|
Auto Scaling 그룹 | EC2 인스턴스 집합의 수명 주기 관리 | 그룹 내 인스턴스를 ELB 대상 그룹에 자동 등록/제거 |
시작 구성/템플릿 | 새 인스턴스 시작 시 사용할 AMI, 인스턴스 유형, 보안 그룹 정의 | ELB 상태 확인을 통과할 수 있도록 애플리케이션 설치 포함 |
확장 정책 | CloudWatch 알람 기반으로 인스턴스 수를 조정하는 규칙 | 트래픽 증가 시 ELB에 더 많은 대상을 제공, 감소 시 제거 |
상태 확인 | 인스턴스의 애플리케이션 상태 모니터링 (ELB 또는 EC2) | ELB 상태 확인과 연동하여 비정상 인스턴스 교체 |
9.2. Route 53
9.2. Route 53
Route 53은 AWS에서 제공하는 고가용성과 확장성이 뛰어난 DNS 웹 서비스이다. ELB와의 통합은 애플리케이션의 트래픽을 효율적으로 분산하고 고가용성을 보장하는 데 핵심적인 역할을 한다. 사용자는 Route 53에서 도메인을 구매하고 관리하며, 도메인에 대한 DNS 쿼리에 응답하도록 구성한다.
ELB와 함께 사용될 때, Route 53은 도메인 이름(예: www.example.com)을 하나 이상의 ELB의 DNS 이름으로 매핑하는 A 레코드 또는 Alias 레코드를 호스팅한다. 특히 Alias 레코드는 표준 DNS 쿼리와 달리 AWS 리소스에 직접 매핑되어 추가 비용 없이 빠른 응답과 높은 가용성을 제공한다[9]. 이를 통해 최종 사용자는 단순한 도메인 이름으로 접속하지만, 내부적으로는 ELB가 트래픽을 백엔드의 여러 대상(예: EC2 인스턴스, 컨테이너)으로 분산한다.
Route 53의 고급 라우팅 정책은 ELB의 기능을 보완하여 더 정교한 트래픽 제어를 가능하게 한다. 주요 라우팅 정책은 다음과 같다.
라우팅 정책 | 설명 | ELB 연동 시 활용 |
|---|---|---|
지연 시간 기반 라우팅 | 사용자의 지리적 위치에 따라 지연 시간이 가장 낮은 리전의 ELB로 트래픽을 라우팅한다. | 여러 리전에 배포된 애플리케이션의 글로벌 성능 최적화에 사용된다. |
지리 위치 라우팅 | 사용자의 대륙, 국가 또는 주별로 특정 ELB 엔드포인트로 트래픽을 라우팅한다. | 콘텐츠 지역화 또는 데이터 주권 규정 준수를 위해 사용된다. |
장애 조치 라우팅 | 주 ELB의 상태를 확인하여 장애 시 대기 중인 ELB로 트래픽을 자동 전환한다. | 재해 복구 및 고가용성 아키텍처를 구성하는 데 필수적이다. |
가중치 기반 라운드 로빈 | 여러 ELB에 트래픽을 지정된 비율로 분배한다. | 카나리아 배포나 새로운 버전의 애플리케이션을 점진적으로 롤아웃할 때 유용하다. |
이러한 통합을 통해 개발자는 DNS 수준에서의 지능적인 트래픽 라우팅과 애플리케이션 수준의 로드 밸런싱을 결합하여 탄력적이고 안정적인 서비스 인프라를 구축할 수 있다.
9.3. AWS Global Accelerator
9.3. AWS Global Accelerator
AWS Global Accelerator는 AWS가 제공하는 글로벌 네트워킹 서비스로, ELB와 같은 애플리케이션 엔드포인트로 사용자 트래픽을 효율적으로 라우팅하도록 설계되었다. 이 서비스는 전 세계에 분산된 AWS 엣지 로케이션 네트워크를 활용하여, 사용자 요청을 가장 가용성이 높고 지연 시간이 짧은 애플리케이션 엔드포인트로 지능적으로 연결한다. 이를 통해 애플리케이션의 가용성, 성능 및 내결함성을 향상시키는 데 목적이 있다.
AWS Global Accelerator의 핵심 구성 요소는 정적 IP 주소와 애니캐스트이다. 서비스를 생성하면 두 개의 고정된 글로벌 Anycast IP 주소가 할당되며, 이 주소는 전 세계의 AWS 엣지 위치에서 광고된다. 사용자의 DNS 쿼리는 지리적으로 가장 가까운 엣지 로케이션으로 라우팅되고, 해당 엣지 로케이션은 실시간으로 측정된 네트워크 조건과 애플리케이션 엔드포인트의 상태를 기반으로 최적의 경로를 선택한다. 이 과정은 TCP 및 UDP 트래픽 모두에 대해 작동하며, 애플리케이션 계층(7계층)이 아닌 네트워크 및 전송 계층(3-4계층)에서 동작한다는 점이 ALB와 차별화된다.
ELB와의 통합은 주요 사용 사례 중 하나이다. AWS Global Accelerator는 하나 이상의 지역에 배포된 ALB, NLB, EC2 인스턴스 또는 탄력적 IP 주소를 엔드포인트 그룹으로 지정할 수 있다. 이를 통해 멀티 리전 아키텍처를 구성할 때, 글로벌 사용자에게 단일 진입점(고정 IP)을 제공하면서도 백엔드의 특정 리전 ELB에 장애가 발생하면 트래픽을 다른 정상 리전의 ELB로 자동으로 전환할 수 있다. 이는 재해 복구(DR) 시나리오와 글로벌 사용자 기반을 위한 지연 시간 최소화에 매우 효과적이다.
다음 표는 ELB와 AWS Global Accelerator의 주요 연동 구성을 보여준다.
구성 요소 | 역할 |
|---|---|
글로벌 진입점 | AWS Global Accelerator가 제공하는 두 개의 고정 Anycast IP. |
엔드포인트 그룹 | 하나의 AWS 리전(예: 아시아 태평양(서울))과 그 안에 포함된 엔드포인트들. |
엔드포인트 | 특정 리전 내의 애플리케이션 로드 밸런서(ALB) 또는 네트워크 로드 밸런서(NLB). |
상태 확인 | Global Accelerator가 각 엔드포인트(ELB)의 상태를 지속적으로 모니터링하여 정상 경로만 사용. |
트래픽 다이얼 | 특정 엔드포인트 그룹 또는 개별 엔드포인트로 전송되는 트래픽의 비율을 가중치로 제어 가능. |
이러한 구조 덕분에 개발자는 DNS 기반 라우팅의 TTL 제약 없이, 네트워크 수준에서 빠른 장애 조치와 효율적인 글로벌 트래픽 관리를 구현할 수 있다. 결과적으로 AWS Global Accelerator는 ELB를 보완하여 애플리케이션의 글로벌 접근성과 복원력을 한층 강화하는 서비스로 평가된다.
10. 여담
10. 여담
ELB는 클라우드 컴퓨팅의 핵심 인프라 서비스로 자리 잡았으며, 그 발전 과정은 AWS의 서비스 진화를 반영한다. 초기에는 단순한 로드 밸런서 기능만 제공했으나, 애플리케이션 계층의 세밀한 라우팅, 초고성능 네트워크 처리, 심지어 방화벽이나 침입 탐지 시스템 같은 타사 가상 어플라이언스의 트래픽 분산까지 지원하는 다양한 유형으로 세분화되었다. 이는 모놀리식 애플리케이션에서 마이크로서비스와 컨테이너 기반의 현대적 아키텍처로의 전환에 따라 요구사항이 복잡해진 결과이다.
ELB의 명명법과 관련된 재미있는 점은, 초기 서비스인 Classic Load Balancer를 제외한 ALB, NLB, GWLB는 모두 '로드 밸런서'라는 단어를 포함하지 않는 약어로 통용된다는 것이다. 사용자들은 흔히 "ALB를 생성한다" 또는 "NLB 앞에 WAF를 연결한다"고 말하며, 이는 서비스 이름이 하나의 고유명사처럼 자리 잡았음을 보여준다. 또한 ELB의 등장은 하드웨어 로드 밸런서 장비에 대한 의존도를 크게 낮추고, 소프트웨어 정의 인프라의 보편화에 기여했다는 평가를 받는다.
다른 주요 클라우드 제공자들도 유사한 관리형 로드 밸런싱 서비스를 제공하고 있으며, 각각 고유한 특징을 지닌다. GCP의 Cloud Load Balancing, Azure의 Azure Load Balancer와 Application Gateway가 그 예이다. 이들 서비스는 기본적인 로드 밸런싱 개념을 공유하지만, 통합되는 다른 관리 서비스(예: 각 클라우드의 모니터링 도구, 인증 서비스)와의 연동 방식, 세부 구성 옵션, 가격 정책에서 차이를 보인다. 따라서 다중 클라우드 환경을 설계할 때는 이러한 차이점을 고려해야 한다.
