AWS 로드밸런서는 Amazon Web Services에서 제공하는 클라우드 기반 로드 밸런싱 솔루션입니다. 로드 밸런싱은 여러 서버로 트래픽을 분산시키는 방법으로, 고가용성과 확장성을 향상시킵니다. AWS에서는 세 가지 유형의 로드 밸런서를 제공합니다: Application Load Balancer (ALB), Network Load Balancer (NLB), 그리고 Classic Load Balancer (CLB). 이 섹션에서는 각 로드 밸런서의 특징과 사용 사례를 설명합니다.
Application Load Balancer (ALB)
ALB는 OSI 참조 모델의 Layer 7에서 작동하는 애플리케이션 로드 밸런서입니다. 이는 요청 수준에서 로드 밸런싱을 수행하며, 주로 HTTP/HTTPS 트래픽을 처리합니다. 다음과 같은 ALB의 주요 기능과 특징을 살펴봅니다.
특징
- 콘텐츠 기반 라우팅: ALB는 URL 경로, 요청 헤더, 소스 IP, 포트 등의 정보를 기반으로 요청을 라우팅합니다. 이를 통해 다양한 서비스를 한 개의 ALB로 구성할 수 있습니다.
—-> 주소를 분석해서 웹서버 대상그룹, 이미지 서버 대상 그룹, 대시보드 대상 그룹, 람다함수 대상그룹 등으로 나눠서 로드밸런싱을 할 수 있음
- WebSocket 및 HTTP/2 지원: ALB는 WebSocket 및 HTTP/2 프로토콜을 지원하여 최신 웹 애플리케이션에 적합합니다.
- 탄력적 및 확장 가능: ALB는 자동으로 확장되어 고객 요구에 맞게 처리 용량을 조절할 수 있습니다.
- 보안: ALB는 AWS WAF (Web Application Firewall)와 통합되어 애플리케이션에 대한 보안을 강화할 수 있습니다.
사용 사례
- 마이크로서비스 아키텍처
- 컨테이너 기반 환경
- 멀티-티어 웹 애플리케이션
Network Load Balancer (NLB)
NLB는 OSI 참조 모델의 Layer 4에서 작동하는 네트워크 로드 밸런서입니다. 이는 TCP, UDP 및 TLS 프로토콜을 기반으로 한 연결 수준에서 로드 밸런싱을 수행합니다. 다음과 같은 NLB의 주요 기능과 특징을 살펴봅니다.
특징
- **고성능 및 낮은 지연 시간** NLB는 초당 수백만 개의 요청을 처리할 수 있는 높은 처리량과 낮은 지연 시간을 제공합니다.
2. 고가용성: NLB는 다중 가용 영역(AZ)에서 작동하며, 하나의 AZ에 장애가 발생하더라도 다른 AZ에서 계속 작동할 수 있습니다.
- 영구적인 IP 지원: NLB는 각 가용 영역에 대해 고정된 IP 주소를 제공합니다. 이를 통해 온프레미스 또는 기타 클라우드 서비스와의 통합을 용이하게 합니다.
- SSL/TLS 오프로딩: NLB는 SSL/TLS 연결을 오프로딩하여 백엔드 서버의 암호화 작업 부담을 줄일 수 있습니다.
사용 사례
- 초고속 웹 애플리케이션 및 API
- 실시간 스트리밍 서비스
- 온프레미스 또는 다중 클라우드 환경과의 통합
Classic Load Balancer (CLB)
CLB는 AWS에서 처음 제공된 로드 밸런서로, OSI 참조 모델의 Layer 4와 Layer 7에서 작동합니다. CLB는 주로 기존 애플리케이션 및 아키텍처에 사용됩니다. 다음과 같은 CLB의 주요 기능과 특징을 살펴봅니다.
특징
- Layer 4 및 Layer 7 로드 밸런싱: CLB는 TCP 및 HTTP/HTTPS 트래픽을 처리할 수 있습니다. 이를 통해 어플리케이션 및 네트워크 로드 밸런싱의 기능을 제공합니다.
- 세션 지속성: CLB는 쿠키 기반 세션 지속성을 제공하여 사용자 경험을 향상시킬 수 있습니다.
- 헬스 체크: CLB는 백엔드 인스턴스의 상태를 모니터링하고, 건강하지 않은 인스턴스로부터 트래픽을 분산시킬 수 있습니다.
사용 사례
- 기존 AWS 애플리케이션 및 아키텍처
- 간단한 로드 밸런싱 요구 사항이 있는 애플리케이션
ALB
- ALB는 L7단의 로드 밸런서를 지원합니다.
- ALB는 HTTP/HTTPS 프로토콜의 헤더를 보고 적절한 패킷으로 전송합니다.
- ALB는 IP주소 + 포트번호 + 패킷 내용을 보고 스위칭합니다.
- ALB는 IP 주소가 변동되기 때문에 Client에서 Access 할 ELB의 DNS Name을 이용해야 합니다.
- ALB는 L7단을 지원하기 때문에 SSL 적용이 가능합니다.
NLB
- NLB는 L4단의 로드 밸런서를 지원합니다.
- NLB는 TCP/IP 프로토콜의 헤더를 보고 적절한 패킷으로 전송합니다.
- NLB는 IP + 포트번호를 보고 스위칭합니다.
- NLB는 할당한 Elastic IP를 Static IP로 사용이 가능하여 DNS Name과 IP주소 모두 사용이 가능합니다.
- NLB는 SSL 적용이 인프라 단에서 불가능하여 애플리케이션에서 따로 적용해 주어야 합니다.
ALB와 NLB의 속도 차이
NLB의 장점 중 하나는 클라이언트의 요청에 대해서 낮은 대기 시간으로 높은 처리가 가능하다는 것입니다.
NLB는 network 계층까지만 확인하기 때문에 7 계층인 ALB보다 빠릅니다.
또한 기존 ELB사용 시에 짧은 시간 내 스파크 성 트래픽 발생에 대한 대응이 어려웠으나 NLB를 사용함으로 ELB의 단점을 해소할 수 있습니다.
마지막으로 단순한 라우팅이 필요하고, 트래픽이 극도로 많은 경우에는 ALB 보다는 NLB를 사용하는 것이 적합하다고 할 수 있습니다.
ALB 사용 시나리오
- 요청의 내용에 따라 트래픽을 다양한 대상 그룹으로 라우팅해야 하는 경우
- HTTP/HTTPS 프로토콜을 사용하는 웹 애플리케이션에 적합
- WebSocket 및 HTTP/2 프로토콜을 사용하는 최신 웹 애플리케이션
- 마이크로서비스 아키텍처 또는 컨테이너 기반 환경에서 개별 서비스에 대한 로드 밸런싱이 필요한 경우
NLB 사용 시나리오
- 초고속 웹 애플리케이션 및 API, 실시간 스트리밍 서비스 등 초당 수백만 개의 요청 처리가 필요한 경우
- TCP, UDP 및 TLS 프로토콜을 사용하는 애플리케이션
- 다중 클라우드 환경이나 온프레미스 환경과의 통합이 필요한 경우
프로젝트 상황에 따라, 이미지 서버, 웹 서버, 람다 서버 등 복잡한 로드 밸런싱이 필요하지 않고, 단일 종류의 API 호출에 수많은 유저의 호출이 몰리는 경우 NLB를 사용했습니다.
이 경우, NLB가 적절한 선택이었습니다. 왜냐하면:
- 고성능과 낮은 지연 시간이 요구되는 상황에서 NLB는 초당 수백만 개의 요청 처리가 가능합니다.
- API 호출에 초점을 맞춘 서비스에서는 일반적으로 TCP, UDP 및 TLS 프로토콜이 사용되기 때문에 NLB가 적합합니다.
ALB를 사용하는 것도 고려해볼 수 있지만, 이 경우에는 특별한 라우팅 규칙이나 콘텐츠 기반 라우팅이 필요하지 않기 때문에 NLB가 더 효율적이라고 할 수 있습니다.
결론적으로, 단일 종류의 API 호출에 많은 사용자의 요청이 몰린다면 NLB를 사용하는 것이 좋습니다. 하지만 다양한 종류의 서비스를 제공하는 웹 애플리케이션에서 요청에 따라 트래픽을 다른 대상 그룹으로 라우팅해야 할 때는 ALB를 고려해야 합니다.
관련 문서
https://no-easy-dev.tistory.com/entry/AWS-ALB%EC%99%80-NLB-%EC%B0%A8%EC%9D%B4%EC%A0%90
AWS | ALB와 NLB 차이점
평소에 aws의 LB(Load Banlancer) 중 ALB(Application Load Balancer)와 NLB(Network Load Balancer)의 차이점으로는 통신하는 네트워크 계층의 차이정 도로 밖에 설명을 못하는 것 같아 이에 대한 내용을 공부해보려고
no-easy-dev.tistory.com
'AWS' 카테고리의 다른 글
| AWS - AWS OpenSearchService 구축하고 django에서 연결하기 (0) | 2023.07.25 |
|---|---|
| AWS - Amazon Aurora vs 전통적인 데이터베이스: 비교 분석 (0) | 2023.06.12 |
| AWS - EBS (0) | 2022.11.15 |
| AWS - block storage vs object storage vs file storage (1) | 2022.11.15 |
| AWS - Lambda를 쓰는 이유 (0) | 2022.10.30 |