서버리스 아키텍처의 광범위한 사용은 클라우드 컴퓨팅의 발전을 촉진했으며, 로드 밸런서는 높은 가용성, 자동 확장 및 유연한 분산을 달성하는 데 핵심 구성 요소가 되었습니다. AWS Elastic Load Balancer(ELB)는 서버리스 아키텍처를 위한 안정적인 솔루션을 제공하며, 분산 환경에서 트래픽 분산을 지능적으로 관리하여 애플리케이션 성능과 안정성을 보장합니다. ELB는 AWS Lambda 및 API Gateway와 같은 서버리스 서비스와 완벽하게 통합되어 개발자에게 부하를 관리하는 효율적이고 확장 가능한 방법을 제공합니다.
ELB(Elastic Load Balancer)란 무엇인가요?
ELB는 AWS가 제공하는 로드 밸런싱(LB) 서비스 세트입니다. 여기에는 다음이 포함됩니다클래식 로드 밸런서,게이트웨이 로드 밸런서,네트워크 로드 밸런서그리고애플리케이션 로드 밸런서.
각 LB는 다양한 사용 사례를 다룹니다.
- 권위 있는 로드 밸런서EC2 기반 아키텍처에 적합한 선택
- 게이트웨이 로드 밸런서VPC에서 타사 가상 머신을 지원할 수 있습니다.
- 네트워크 로드 밸런서UPD 기반 게임이나 IoT 연결과 같은 고성능 저수준 네트워크에 집중하세요.
- 애플리케이션 로드 밸런서HTTP 프로토콜을 사용하는 소프트웨어를 위한 고급 솔루션
서버리스 아키텍처의 경우 모든 서비스가 HTTP API를 사용하므로 ALB가 가장 좋은 선택입니다. 따라서 이 글에서는 ALB에 초점을 맞추겠습니다.
애플리케이션 로드 밸런서(ALB)란 무엇인가요?
ALB는 HTTP에 초점을 맞추므로 프로토콜의 일부를 사용하여 캐싱에 대한 결정을 내리고 Lambda 실행 시간을 절약할 수 있습니다. 즉, Lambda 함수는 캐시 헤더를 올바르게 설정해야 합니다.
가격
ALB는 Lambda와 통합될 수 있지만, ALB 자체는 서버리스 서비스가 아닙니다. 사용하지 않은 시간에 대해서만 요금을 지불하는 종량제 모델이 아닙니다. 하지만 서비스에 꾸준하고 안정적인 트래픽 흐름이 있는 경우 장기적으로 볼 때 API Gateway를 사용하는 것보다 비용이 더 저렴할 수 있습니다.
한계
또한 API Gateway는 연결 수를 10,000개로 제한하는 반면, ALB에는 제한이 없습니다. 이는 더 많은 사소한 기능을 갖춘 API 게이트웨이입니다. 기능은 단순하지만 성능은 뛰어납니다. 규모를 확대하고 싶다면 ALB가 유일한 해결책이 될 수 있습니다.
권한
ALB는 오히려 "공개 HTTP 엔드포인트 앞의 끈"과 같은 전통적인 개념에 가깝습니다. 따라서 Lambda와 통합되지만 IAM 기반 권한은 제공하지 않습니다. 이 문제는 서버리스 함수에서 처리해야 합니다.
변환
부하 분산에 대한 이러한 기존 접근 방식은 ALB가 요청 및 응답 변환을 수행할 수 없다는 것을 의미합니다. 단순히 파이프라인으로 데이터를 전달합니다. 다시 말해, 이로 인해 ALB는 API Gateway보다 유연성이 떨어지고 Lambda로 더 많은 작업이 옮겨갑니다.
다중 지역
ALB는 한 번에 한 지역에만 배포됩니다. 다시 말해서, 이것은 서버리스 서비스가 아니므로 더 많은 작업이 필요합니다. 여러 구역에 걸쳐 트래픽을 분산하려면 Route53의 DNS 기반 분산이 필요합니다.
신뢰성 또는 비용 구성
Lambda 대상과 함께 ALB를 사용하면 Lambda가 자동으로 확장되므로 일반적으로 안정성이 우수합니다. 기본적으로 제공하는 안정성 이상이 필요한 경우 ALB를 여러 지역에 배포하고 Route53 뒤에 두어야 합니다.
람다는 비용 측면에서 가장 큰 문제가 될 수 있습니다. 모든 요청을 대용량 메모리 구성을 가진 Lambda 함수로 라우팅하면 비용이 급격히 증가할 수 있습니다. 따라서 서버리스 모범 사례를 따르고 Lambda 함수를 작고 목적에 맞게 유지하세요. 가능한 한 ALB 리스너가 메모리 사용량이 적은 함수를 사용할 수 있도록 조건을 설정합니다.
건강 검진 모범 사례
EC2 대상은 쉽게 과부하가 걸릴 수 있는 반면, Lambda 대상은 고유한 자동 확장 기능 덕분에 버퍼가 더 많습니다. 서버리스 시스템에서도 문제가 발생할 수 있습니다.
AWS는 기본적으로 Lambda 대상에 대한 ALB 상태 검사를 비활성화하므로 여기에서 옵트인해야 합니다.
일부 문제는 Lambda에 잘못된 코드를 푸시하여 발생할 수 있지만, 대부분의 문제는 함수에서 사용하는 업스트림 서비스로 인해 발생합니다. 따라서 Lambda를 설정하여 상태 점검을 파이프로 전달한 다음 업스트림 서비스의 결과로 응답합니다.
문제가 발생하면 가장 빠른 해결책은 Route53에 다음 요청을 다른 배포로 라우팅하라고 지시하는 것입니다.
AWS에서의 로그 분석
AWS에서는 Amazon Athena를 사용하여 ALB 로그를 분석할 수 있습니다. Athena는 서버리스 쿼리 서비스입니다. 쿼리 로그를 활성화하고 S3에 저장한 다음 Athenas SQL 쿼리를 사용하여 탐색해야 합니다.
AWS Elastic Load Balancer는 서버리스 아키텍처에서 중요한 역할을 하며, 자동화된 트래픽 관리, 유연한 확장성, 다른 AWS 서비스와의 긴밀한 통합을 통해 개발자가 다양한 비즈니스 요구 사항을 쉽게 충족할 수 있도록 지원합니다. 높은 동시성 요청을 처리하든 리소스 활용을 최적화하든, ELB는 서버리스 아키텍처에 대한 안정적인 지원을 제공하여 개발자가 핵심 로직의 구현과 혁신에 집중할 수 있도록 합니다.