CaseStudy:: AWS ELB의 성능과 비용 최적화 방법

·

2 min read

오늘은 AWS 블로그 아티클에서 다룬 ELB의 비용과 성능 최적화 방법을 살펴보겠습니다. 이 글은 AWS의 Well-Architected Framework의 6가지 요소(Operational Excellence, Security, Reliability, Performance Efficiency, Cost Optimization, Sustainability) 중에서 Cost Optimization과 Performance Efficiency 관점으로 ELB 인프라의 개선점을 분석한 것이 특징입니다.

인사이트

  • 클라이언트의 빈번한 요청 처리를 위해 Connection Pooling 활용하기

  • 데이터 압축을 통한 트래픽 효율성 향상

  • (권한이 허용된 경우) 데이터 직접 전송 대신 데이터 주소 제공으로 전송 비용 절감

  • 미사용 인프라 정리를 통한 불필요한 비용 제거

ELB란

ELB는 애플리케이션 트래픽을 확장 가능하고 고가용성으로 분배하는 AWS 네트워크 서비스입니다. ELB의 대표적인 유형으로는 ALB(Application Load Balancer)와 NLB(Network Load Balancer)가 있습니다. 이 두 유형은 서로 다른 네트워크 통신 계층에서 작동합니다. ALB는 OSI(Open Systems Interconnection) 7계층인 애플리케이션 레벨에서 작동하여 HTTP, HTTPS, gRPC 프로토콜을 지원하고 라운드 로빈 알고리즘을 사용합니다. NLB는 4계층에서 작동하여 TCP, UDP, TLS 프로토콜을 지원하며 플로우 해시 알고리즘을 사용합니다.

성능과 비용 최적화를 위한 방법

클라이언트 연결 최적화

ELB는 클라이언트와 인스턴스와 같은 엔드포인트 간의 중개 역할을 합니다. 클라이언트의 요청이 빈번한 경우 'Connection Pooling'을 활용할 수 있습니다. 이는 클라이언트가 다수의 요청을 보낼 때 기존 연결을 재사용하는 기술로, 애플리케이션의 부하를 효과적으로 줄일 수 있습니다.

데이터 압축

데이터 압축은 전송 시간을 단축하는 효과적인 방법입니다. 전송할 총 바이트 수를 줄임으로써 데이터 전송 속도가 향상됩니다. 특히 데이터 직렬화를 통해 전송 효율을 높일 수 있는데, AWS 서비스 프레임워크에서 개발한 'Smithy'는 일반 JSON을 인코딩하여 페이로드의 크기를 76%까지 줄일 수 있습니다. 예를 들어, { "cid": 12345, "ctype": "elb", "country": "CA" }에서 08 b9 60 12 03 65 6c 62 1a 02 43 41로 변환됩니다.

데이터가 아닌 데이터 주소 보내기

ELB를 통해 API 서비스를 제공할 때는 데이터 대신 데이터가 위치한 주소를 전송하여 요금을 절감할 수 있습니다. 예를 들어, 클라이언트가 데이터를 요청할 때 AWS S3 객체의 데이터를 직접 반환하는 대신 객체의 참조를 반환합니다. 이렇게 하면 클라이언트가 S3에 직접 요청하게 되어 데이터 전송 비용을 절감할 수 있습니다.

미사용 인프라 제거하기

사용하지 않는 ALB와 NLB를 제거하면 비용을 절감할 수 있습니다. 예를 들어, EC2와 같은 리소스에 연결되지 않은 ALB 타겟 그룹을 확인하고 제거해야 합니다. 불필요한 인프라로 인한 비용 발생을 방지하기 위해 정기적인 모니터링이 필요합니다.

Reference

https://aws.amazon.com/blogs/networking-and-content-delivery/elb-maximizing-benefits-and-keeping-costs-low/