Amazon Web Services 한국 블로그
Amazon VPC Lattice, Amazon ECS 지원 출시
Amazon VPC Lattice는 출시 이후 복잡한 네트워킹 작업을 간소화했습니다. 그 결과 최신 멀티서비스 애플리케이션을 구축하고 연결하는 방법에 대한 저의 관점이 바뀌었습니다. 제 동료 Danilo가 VPC Lattice의 정식 출시를 알리는 포스팅을 썼습니다:
“VPC Lattice를 사용하면 인스턴스, 컨테이너 및 서버리스 컴퓨팅에 대한 일관된 지원을 통해 애플리케이션 로직에 집중하고 생산성과 배포 유연성을 개선할 수 있습니다.”
오늘, Amazon VPC Lattice가 Amazon Elastic Container Service (Amazon ECS)를 기본 지원하게 되었음을 알려드립니다. 이 새로운 기본 제공 통합 기능으로 이제 중간 로드 밸런서 없이도 Amazon ECS 서비스를 VPC Lattice 대상 그룹에 직접 연결할 수 있습니다.
다음은 Amazon ECS 서비스를 생성하는 동안 Amazon VPC Lattice 통합을 찾는 방법을 간략히 살펴봅니다:
Amazon VPC Lattice와 Amazon ECS의 통합은 서비스 내 ECS 작업의 IP 주소를 VPC Lattice 대상 그룹에 대상으로 등록 및 등록 취소하는 방식으로 작동합니다. 서비스에 대한 ECS 작업이 시작되면 Amazon ECS는 해당 작업을 자동으로 VPC Lattice 대상 그룹에 등록합니다.
또한, ECS 작업이 VPC Lattice 상태 검사에 실패하면 Amazon ECS가 자동으로 작업을 대체합니다. 또한 작업이 종료되거나 규모가 축소되면 대상 그룹에서 제거됩니다.
Amazon VPC Lattice 통합 사용
이 새로운 통합 기능을 사용하는 방법을 안내해 드리겠습니다. 다음 데모에서는 ECS 서비스로 실행되는 간단한 애플리케이션 서버를 배포하고 VPC Lattice와의 통합을 구성해 보겠습니다. 그런 다음 Amazon ECS에서 추가 로드 밸런서를 구성할 필요 없이 VPC Lattice 도메인 이름에 연결하여 애플리케이션 서버를 테스트해 보겠습니다.
이 통합을 시작하기 전에 Amazon ECS에 VPC Lattice에 대상을 등록 및 등록 취소하는 데 필요한 권한이 있는지 확인해야 합니다. 자세한 내용은 Amazon ECS 인프라 IAM 역할 설명서 페이지를 참조하세요.
VPC Lattice와의 통합을 사용하려면 최소한 하나의 컨테이너와 하나의 포트 매핑이 포함된 작업 정의를 정의해야 합니다. 다음은 제 작업 정의의 예시입니다.
{
"containerDefinitions": [
{
"name": "webserver",
"image": "public.ecr.aws/ecs-sample-image/amazon-ecs-sample:latest",
"cpu": 0,
"portMappings": [
{
"name": "web-80-tcp",
"containerPort": 80,
"hostPort": 80,
"protocol": "tcp",
"appProtocol": "http"
}
],
...
*redacted for brevity*
}
그런 다음 ECS 클러스터로 이동하여 [생성]을 선택합니다.
다음으로 작업 정의를 선택하고 서비스 이름을 지정해야 합니다.
VPC Lattice 통합 섹션에서 VPC Lattice 켜기를 선택하여 VPC Lattice의 대상 그룹 구성을 시작합니다. VPC Lattice를 사용하므로 로드 밸런서를 지정할 필요가 없습니다. 기본적으로 VPC Lattice는 라운드 로빈 라우팅 알고리즘을 사용하여 요청을 정상 대상에 라우팅합니다.
이제 VPC Lattice에서 ECS 서비스에 대한 통합을 정의할 수 있습니다. 먼저 Amazon ECS의 인프라 역할을 선택합니다. 그런 다음 서비스를 실행할 가상 프라이빗 클라우드(VPC)를 선택해야 합니다. 그런 다음 트래픽을 수신할 대상 그룹을 정의해야 합니다. VPC Lattice 통합으로 서비스 구성을 완료한 후 이 서비스를 생성합니다.
몇 분 후 ECS 서비스가 준비되었습니다. 서비스로 이동하여 구성 및 네트워킹을 선택합니다. VPC Lattice 섹션으로 스크롤을 내리면 생성된 VPC Lattice 대상 그룹을 볼 수 있습니다.
이 대상 그룹에 대한 자세한 정보를 얻으려면 대상 그룹 이름을 선택하면 VPC Lattice 대상 그룹 페이지로 리디렉션됩니다. 여기에서 Amazon ECS가 실행 중인 작업의 IP 주소를 성공적으로 등록한 것을 확인할 수 있습니다.
이제 VPC Lattice 서비스와 서비스 네트워크를 생성해야 합니다. 저는 항상 VPC Lattice 서비스를 생성한 다음 나중에 VPC Lattice 서비스 네트워크에 연결하는 것을 선호합니다. 따라서 그렇게 설정해 보겠습니다.
VPC Lattice 섹션에서 서비스를 선택하고 서비스 생성을 선택합니다.
VPC Lattice 서비스를 만드는 데 필요한 모든 세부 정보를 입력하고 다음을 선택합니다.
그런 다음 리스너를 추가하고 리스너 기본 동작의 대상 그룹으로 전달에 대해 새로 만든 대상 그룹을 선택합니다.
다음 페이지에서는 나중에 VPC Lattice 서비스 네트워크를 만들 예정이므로 이 단계를 건너뛰고 다음을 선택하여 구성을 검토한 후 서비스를 생성합니다.
VPC Lattice 서비스가 생성되었으므로 이제 VPC Lattice 서비스 네트워크를 생성할 차례입니다. VPC Lattice 섹션에서 서비스 네트워크로 이동하여 서비스 네트워크 생성을 선택합니다.
먼저 VPC Lattice 서비스 네트워크 이름을 입력합니다.
그런 다음 서비스 연결 페이지에서 내가 만든 서비스를 선택합니다.
이 서비스 네트워크를 보안 그룹과 내 VPC에 연결합니다.
이 데모의 단순화를 위해 인증 유형을 None으로 설정했습니다. 하지만 IAM을 사용하여 VPC Lattice에 대한 액세스를 관리하는 방법을 읽어보시기를 적극 권장합니다. 그런 다음 서비스 네트워크 생성을 선택합니다.
이 단계에서는 이 통합을 위한 모든 설정이 완료되었습니다. 이제 내 VPC Lattice 서비스 네트워크가 내 VPC Lattice 서비스 및 내 VPC와 연결됩니다.
모든 설정이 완료되면 VPC Lattice 서비스 페이지에서 도메인 이름을 복사합니다.
그런 다음 서비스에 액세스하기 위해 동일한 VPC의 인스턴스에 로그인하고 VPC Lattice의 도메인 이름을 사용하여 서비스를 호출합니다.
[ec2-user@ ~]$ curl http://service-a-XYZ.XYZ.vpc-lattice-svcs.XYZ.on.aws
"Hello there! I'm Amazon ECS."
한 가지 주의할 점은 Amazon ECS 워크로드에 대한 트래픽이 수신되지 않는 경우 보안 그룹을 사용한 VPC Lattice 내 트래픽 제어 문서 페이지에 설명된 대로 보안 그룹을 확인해야 한다는 점입니다.
애플리케이션 아키텍처를 간소화하고 전반적인 시스템 안정성을 개선하는 동시에 다양한 가능성을 열어주는 이번 통합에 개인적으로 큰 기대를 걸고 있습니다. 이제 모든 AWS 컴퓨팅 유형이 VPC Lattice에서 기본적으로 지원되므로 모든 ECS 클러스터, AWS 계정 및 VPC에서 서비스를 통합할 수 있습니다.
알아야 할 사항
다음은 알아두어야 할 몇 가지 주요 사항입니다.
- 가용성 – Amazon VPC Lattice와 Amazon ECS의 통합을 이제 Amazon VPC Lattice 및 Amazon ECS를 사용할 수 있는 AWS 리전에서 사용할 수 있습니다.
- 호환성 – 이 통합은 Amazon Elastic Compute Cloud (Amazon EC2) 및 AWS Fargate를 포함한 모든 ECS 출시 유형을 지원합니다.
- 가격 – 표준 VPC Lattice 및 Amazon ECS 요금이 적용됩니다. 이 통합 기능은 추가 요금 없이 사용할 수 있습니다.
- Amazon VPC Lattice 모니터링 – VPC Lattice 사용 가이드의 Amazon VPC Lattice 모니터링하기를 참조하여 Amazon VPC Lattice 서비스 네트워크, 서비스, 대상 그룹 및 VPC 연결을 모니터링하는 방법을 알아보세요.
지금 바로 Amazon VPC Lattice의 새로운 기능을 사용해보고 Amazon ECS에서 실행되는 컨테이너 애플리케이션 통신을 어떻게 간소화할 수 있는지 알아보세요.
즐겁게 빌드해 보세요!