인터넷으로부터 인바운드 연결 수신 - Amazon Elastic Container Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

인터넷으로부터 인바운드 연결 수신

퍼블릭 서비스를 실행하는 경우 인터넷의 인바운드 트래픽을 수락해야 합니다. 예를 들어 퍼블릭 웹 사이트는 브라우저의 인바운드 HTTP 요청을 수락해야 합니다. 이 경우 인터넷의 다른 호스트도 애플리케이션 호스트에 대한 인바운드 연결을 시작해야 합니다.

이 문제에 대한 한 가지 접근 방식은 퍼블릭 IP 주소를 사용하는 퍼블릭 서브넷에 있는 호스트에서 컨테이너를 시작하는 것입니다. 그러나 대규모 애플리케이션에는 권장되지 않습니다. 이러한 경우에는 인터넷 및 애플리케이션 사이에 확장 가능한 입력 레이어를 배치하는 것이 더 좋습니다. 이 접근 방식에서는 이 섹션에 나열된 모든 AWS 서비스를 입력으로 사용할 수 있습니다.

Application Load Balancer

Application Load Balancer는 애플리케이션 계층에서 작동합니다. 이는 개방형 시스템 상호 연결(OSI) 모델의 일곱 번째 계층입니다. 따라서 Application Load Balancer는 퍼블릭 HTTP 서비스에 적합합니다. 웹 사이트 또는 HTTP REST API가 있는 경우 Application Load Balancer는 이 워크로드에 적합한 로드 밸런서입니다. 자세한 내용은 Application Load Balancer 사용 설명서의 What is an Application Load Balancer?를 참조하세요.

Application Load Balancer를 사용하는 네트워크의 아키텍처를 보여주는 다이어그램.

이 아키텍처에서는 퍼블릭 서브넷에 Application Load Balancer를 생성하여 퍼블릭 IP 주소를 사용하고 인터넷의 인바운드 연결을 수신할 수 있습니다. Application Load Balancer에서 인바운드 연결 또는 특히 HTTP 요청을 수신하면 프라이빗 IP 주소를 사용하여 애플리케이션에 대한 연결을 엽니다. 그런 다음, 내부 연결을 통해 요청을 전달합니다.

Application Load Balancer의 장점은 다음과 같습니다.

  • SSL/TLS 종료 - Application Load Balancer는 클라이언트와의 통신을 위한 보안 HTTPS 통신 및 인증서를 유지할 수 있습니다. 선택적으로 로드 밸런서 수준에서 SSL 연결을 종료할 수 있으므로 애플리케이션에서 인증서를 처리할 필요가 없습니다.

  • 고급 라우팅 - Application Load Balancer는 여러 DNS 호스트 이름을 보유할 수 있습니다. 또한 호스트 이름이나 요청 경로와 같은 지표를 기반으로 수신 HTTP 요청을 다른 대상으로 전송하는 고급 라우팅 기능도 지원합니다. 즉, 단일 Application Load Balancer를 여러 내부 서비스 또는 REST API의 여러 경로에 있는 마이크로서비스의 입력으로도 사용할 수 있습니다.

  • gRPC 지원 및 웹 소켓 - Application Load Balancer는 HTTP 외에도 다양한 기능을 처리할 수 있습니다. 또한 HTTP/2 지원을 통해 gRPC 및 웹 소켓 기반 서비스를 로드 밸런싱할 수 있습니다.

  • 보안 - Application Load Balancer는 악성 트래픽으로부터 애플리케이션을 보호하는 데 도움이 됩니다. 여기에는 HTTP 동기화 해제 완화와 같은 기능이 포함되며 AWS 웹 응용 프로그램 방화벽 ()AWS WAF과 통합됩니다. AWS WAF SQL 삽입 또는 사이트 간 스크립팅과 같은 공격 패턴을 포함할 수 있는 악성 트래픽을 추가로 필터링할 수 있습니다.

Network Load Balancer

Network Load Balancer는 오픈 시스템 상호 연결(OSI) 모델의 네 번째 계층에서 작동합니다. 비 HTTP 프로토콜 또는 end-to-end 암호화가 필요한 시나리오에 적합하지만 Application Load Balancer와 동일한 HTTP 관련 기능을 가지고 있지는 않습니다. 따라서 Network Load Balancer는 HTTP를 사용하지 않는 애플리케이션에 가장 적합합니다. 자세한 내용은 Network Load Balancer 사용 설명서의 Network Load Balancer란?을 참조하세요.

Network Load Balancer를 사용하는 네트워크의 아키텍처를 보여주는 다이어그램.

Network Load Balancer가 입력으로 사용되는 경우 Application Load Balancer와 유사하게 작동합니다. 퍼블릭 서브넷에서 생성되고 인터넷에서 액세스할 수 있는 퍼블릭 IP 주소를 사용하기 때문입니다. 그러면 Network Load Balancer는 컨테이너를 실행하는 호스트의 프라이빗 IP 주소에 대한 연결을 열고 퍼블릭 측에서 프라이빗 측으로 패킷을 전송합니다.

Network Load Balancer 기능

Network Load Balancer는 네트워킹 스택의 하위 수준에서 작동하기 때문에 Application Load Balancer와 동일한 기능 세트를 제공하지 않습니다. 하지만 다음과 같은 중요한 기능이 있습니다.

  • E nd-to-end 암호화 - Network Load Balancer는 OSI 모델의 네 번째 계층에서 작동하므로 패킷의 내용을 읽지 않습니다. 따라서 암호화가 필요한 로드 밸런싱 통신에 적합합니다. end-to-end

  • TLS 암호화 - Network Load Balancer는 end-to-end 암호화 외에도 TLS 연결을 종료할 수 있습니다. 따라서 백엔드 애플리케이션에서 자체 TLS를 구현할 필요가 없습니다.

  • UDP 지원 - Network Load Balancer는 OSI 모델의 네 번째 계층에서 작동하므로 TCP 이외의 비 HTTP 워크로드 및 프로토콜에 적합합니다.

연결 닫기

Network Load Balancer는 OSI 모델의 상위 계층에서 애플리케이션 프로토콜을 관찰하지 않으므로 해당 프로토콜에서 클라이언트에 닫기 메시지를 보낼 수 없습니다. Application Load Balancer와 달리, 이러한 연결은 애플리케이션이 닫아야 합니다. 아니면 작업이 중지되거나 교체될 때 네 번째 계층 연결을 닫도록 Network Load Balancer를 구성할 수 있습니다. Network Load Balancer 설명서의 Network Load Balancer 대상 그룹에 대한 연결 종료 설정을 참조하세요.

Network Load Balancer에서 네 번째 계층의 연결을 닫으면 클라이언트가 원하지 않는 오류 메시지를 처리하지 않는 경우 클라이언트에 해당 메시지가 표시될 수 있습니다. 권장 클라이언트 구성에 대한 자세한 정보는 Builders' Library를 참조하세요.

연결을 종료하는 방법은 애플리케이션마다 다르지만, Network Load Balancer 대상 등록 취소 지연이 클라이언트 연결 제한 시간보다 길도록 보장하는 한 가지 방법이 있습니다. 이전 작업이 모든 클라이언트를 천천히 드레이닝하는 동안, 클라이언트에서 먼저 제한 시간이 초과되고 Network Load Balancer를 통해 다음 작업에 정상적으로 다시 연결합니다. Network Load Balancer 대상 등록 취소 지연에 대한 자세한 내용은 Network Load Balancer 설명서를 참조하세요.

Amazon API Gateway HTTP API

Amazon API Gateway HTTP API는 요청 볼륨이 갑자기 급증하거나 요청 볼륨이 적은 HTTP 애플리케이션에 적합한 서버리스 인그레스입니다. 자세한 내용은 API Gateway 개발자 안내서의 What is Amazon API Gateway?를 참조하세요.

API Gateway를 사용하는 네트워크의 아키텍처를 보여주는 다이어그램.

Application Load Balancer 및 Network Load Balancer의 요금 모델에는 로드 밸런서에서 수신 연결을 항상 수락하도록 유지하는 시간당 요금이 포함되어 있습니다. 반면, API Gateway는 각 요청에 대해 개별적으로 요금을 청구합니다. 따라서 요청이 들어오지 않으면 요금이 부과되지 않습니다. 트래픽 부하가 높은 경우 Application Load Balancer 또는 Network Load Balancer는 API Gateway보다 저렴한 요청당 요금으로 더 많은 양의 요청을 처리할 수 있습니다. 하지만 전반적으로 요청 수가 적거나 일정 기간 트래픽이 적은 경우 사용률이 낮은 로드 밸런서를 유지 관리하기 위해 시간당 요금을 지불하는 것보다 API Gateway를 사용하는 누적 요금이 더 비용 효율적입니다. 또한 API Gateway는 API 응답을 캐싱할 수 있으므로 백엔드 요청 비율이 낮아질 수 있습니다.

API Gateway 함수는 VPC 링크를 사용하여 AWS 관리형 서비스가 VPC의 프라이빗 서브넷 내에 있는 호스트에 프라이빗 IP 주소를 사용하여 연결할 수 있도록 합니다. Amazon ECS 서비스 검색으로 관리되는 AWS Cloud Map 서비스 검색 레코드를 살펴봄으로써 이러한 사설 IP 주소를 탐지할 수 있습니다.

API Gateway에서 지원하는 기능은 다음과 같습니다.

  • API Gateway 작업은 로드 밸런서와 비슷하지만, API 관리와 관련된 고유한 추가 기능이 있습니다.

  • API Gateway에서는 클라이언트 권한 부여, 사용 계층, 요청 및 응답 수정과 관련된 추가 기능을 제공합니다. 자세한 내용은 Amazon API Gateway 기능을 참조하세요.

  • API Gateway는 엣지, 리전 및 프라이빗 API 게이트웨이 엔드포인트를 지원할 수 있습니다. 에지 엔드포인트는 관리형 CloudFront 배포를 통해 사용할 수 있습니다. 리전 엔드포인트 및 프라이빗 엔드포인트는 모두 리전에 로컬로 존재합니다.

  • SSL/TLS 종료

  • 다양한 HTTP 경로를 다양한 백엔드 마이크로서비스로 라우팅

위의 기능 외에도 API Gateway는 API를 무단 사용으로부터 보호하기 위해 사용할 수 있는 사용자 지정 Lambda 권한 부여자 사용을 지원합니다. 자세한 내용은 Field Notes: Serverless Container-based APIs with Amazon ECS and Amazon API Gateway를 참조하세요.