BLOG

AWS Cloud Map: 애플리케이션의 사용자 지정 맵을 쉽게 생성 및 유지 관리
작성일: 2018년 12월 17일

Voiced by Amazon Polly

(원문에서 다운로드받으세요)

 

기업들은 점점 더 마이크로서비스로 애플리케이션을 구축하고 있습니다(각각 단일 작업을 수행하는 많은 개별 서비스). 마이크로서비스는 종종 기업들이 더 빨리 반복하고 배포할 수 있도록 합니다. 이러한 마이크로 서비스 기반 최신 애플리케이션 중 다수는 다양한 유형의 클라우드 리소스를 사용하여 구축되며 동적으로 변화하는 인프라에 구현됩니다. 이전에 구성 파일을 사용하여 애플리케이션 리소스의 위치를 관리하십시오. 그러나 마이크로서비스 기반 애플리케이션의 의존성은 너무 빨리 복잡해져서 구성 파일을 통해 쉽게 관리할 수 없습니다. 또한, 많은 애플리케이션들은 트래픽 부하 변화에 반응하여 동적으로 확장되는 컨테이너를 사용하여 구축됩니다. 이는 애플리케이션 응답 속도를 증가시키지만 새로운 종류의 문제를 제기하며, 이제 애플리케이션 구성요소는 런타임에 업스트림 서비스를 검색하고 연결해야 합니다. 동적으로 변화하는 인프라와 마이크로서비스의 연결 문제는 일반적으로 서비스 검색으로 해결됩니다.

 

AWS Cloud Map 소개

AWS Cloud Map은 모든 애플리케이션 구성 요소, 위치, 특성 및 상태를 추적하며, 이제 애플리케이션은 AWS SDK, API 또는 DNS를 사용하여 간단히 AWS Cloud Map을 쿼리하여 종속성의 위치를 확인하십시오. 이를 통해 애플리케이션을 동적으로 확장하고 업스트림 서비스에 직접 연결하여 애플리케이션의 응답성을 높일 수 있습니다.

 

웹 서비스 및 클라우드 리소스를 AWS Cloud Map에 등록할 때 배포 단계 및 버전과 같은 사용자 지정 특성을 사용하여 설명할 수 있습니다. 그러면 애플리케이션이 필요한 배포 단계 및 버전을 지정하는 검색 호출을 수행할 수 있습니다. AWS Cloud Map은 제공된 매개 변수와 일치하는 리소스 위치를 반환합니다. 구축을 간소화하고 애플리케이션의 운영 복잡성을 줄이십시오.

 

AWS Cloud Map에 등록된 IP 기반 리소스에 대한 통합 상태 점검 기능은 트래픽이 비정상인 엔드포인트로 라우팅되는 것을 자동으로 중지합니다. 또한 인프라의 잠재적인 문제를 파악할 수 있도록 서비스의 상태를 설명하는 API가 있습니다. 이로 인해 애플리케이션의 복원력을 높이십시오.

 

AWS Cloud Map 실행

AWS Cloud Map을 간편하게 이용하십시오. AWS 콘솔이나 CLI를 사용하여 myapp.com과 같은 네임스페이스를 만들 수 있습니다. 이 예에서는 CLI를 사용하십시오. 네임스페이스를 생성해 봅시다.

 

aws servicediscovery create-public-dns-namespace –name myapp.com (http://myapp.com/)

 

이 시점에서 애플리케이션에서 AWS SDK 및 API 호출을 통해서만 리소스를 검색할 것인지 아니면 DNS를 통한 선택적 검색이 필요한지 결정해야 합니다. 네임스페이스에 대해 DNS 검색을 사용할 경우 등록한 모든 리소스에 IP 주소를 제공해야 합니다. ARN별 DynamoDB 테이블 또는 Amazon API Gateway에 배포된 API의 URL과 같은 다른 클라우드 리소스를 등록하려면 API 탐색 모드를 선택해야 합니다.

 

네임스페이스가 생성되면 서비스를 생성해야 합니다. 서비스는 usersauth, 또는 payment와 같은 애플리케이션 구성요소를 나타내며 동적으로 변화하는 많은 리소스로 구성될 수 있습니다. 서비스에 대한 친근한 이름을 지정한 다음 DNS 검색 및 상태 검사 옵션을 선택하십시오. 다음과 같은 서비스를 만들 수 있습니다.

 

aws servicediscovery create-service –name frontend –namespace-id %namespace_id%”

 

서비스를 생성한 후에는 서비스 인스턴스를 사용자 지정 특성으로 등록할 수 있습니다.

 

aws servicediscovery register-instance –service-id %service_id% –instance-id %id%
–attributes AWS_INSTANCE_IPV4=54.20.10.1,stage=beta,version=1.0,active=yes

aws servicediscovery register-instance –service-id %service_id% –instance-id %id%
–attributes AWS_INSTANCE_IPV4=54.20.10.2,stage=beta,version=2.0,active=no

 

이제 애플리케이션은 API 호출을 통해 서비스 인스턴스를 검색하고, 선택적으로 결과를 필터링하는 쿼리 매개 변수를 제공할 수 있습니다.

 

aws servicediscovery discover-instances –namespace-name myapp.com –service-name frontend –query-parameters version=1.0,active=yes
–>
{
“Instances”: [
{
“InstanceId”: “1”,
“NamespaceName”: “myapp.com”,
“ServiceName”: “users”,
“HealthStatus”: “HEALTHY”,
“Attributes”: {
“version”:”1.0″,
“active”:”yes”,
“stage”:”beta”,
“AWS_INSTANCE_IPV4”: “54.20.10.2” }
}
]
}

 

그게 끝입니다! Amazon Elastic Container Service(ECS) 및 AWS Fargate는 AWS Cloud Map과 긴밀하게 통합됩니다. 서비스를 생성하고 서비스 검색을 실행하면 모든 태스크 인스턴스가 스케일업 시 AWS Cloud Map에 자동으로 등록되고 스케일다운 시 등록이 취소됩니다. 또한 ECS는 항상 최신 상태 정보를 AWS Cloud Map에 게시하여 검색 호출 시 정상 태스크 인스턴스만 반환되도록 보장합니다.

 

EKS(Kubernetes용 Amazon Elastic Container Service)의 경우, AWS Cloud Map에서 EKS에서 실행 중인 서비스의 외부 IP를 자동으로 게시할 수 있습니다. 이를 위해 오픈 소스 프로젝트인 ExternalDNS에 대한 업데이트를 발표하여 Kubernetes 리소스를 AWS Cloud Map을 통해 검색 가능하게 만들었습니다. Kubernetes 외부 DNS에 대한 자세한 내용은 여기에서 확인하십시오.

 

이제 일반적으로 사용 가능합니다

AWS Cloud Map을 사용하여 애플리케이션을 구축하고 Amazon ECS 및 EKS와의 통합, 풍부하고 안전한 API 쿼리 인터페이스, 유비쿼터스 DNS 이름 확인 및 통합 상태 점검 지원을 지금 즐기십시오. 원하십니까?https://console.aws.amazon.com/cloudmap/home.으로 이동하십시오.ECS와의 통합을 테스트하려면 https://console.aws.amazon.com/ecs/home으로 이동하여 서비스 검색을 시작하십시오.

 

원문 URL : https://aws.amazon.com/ko/blogs/aws/aws-cloud-map-easily-create-and-maintain-custom-maps-of-your-applications/

** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.