일반

Q: AWS App Mesh란 무엇입니까?

A: AWS App Mesh는 서비스 간 통신을 손쉽게 모니터링, 제어 및 디버깅할 수 있게 해줍니다. App Mesh는 마이크로서비스 컨테이너와 함께 배포되는 오픈 소스 서비스 메시 프록시인 Envoy를 사용합니다. App Mesh는 모니터링 및 추적을 위한 AWS 서비스와 통합되며 많은 인기 있는 타사 도구와 연동됩니다. App Mesh는 Amazon ECS, Amazon EKS, AWS Fargate, AWS에서 실행되는 Kubernetes 및 Amazon EC2에서 실행되는 서비스가 관리하는 마이크로서비스 컨테이너와 함께 사용할 수 있습니다.

Q: App Mesh를 사용해야 하는 이유는 무엇입니까?

A: App Mesh를 사용하면 새로운 코드를 작성하거나 추가적인 AWS 인프라를 실행할 필요 없이 서비스 간 통신에 대한 가시성, 보안 및 제어를 더 쉽게 확보할 수 있습니다. App Mesh를 사용하면 서비스가 통신하는 방식을 표준화하고, 서비스 간 통신 규칙을 구현하고, 지표, 로그 및 트레이스를 직접 원하는 AWS 서비스 및 타사 도구에 캡처할 수 있습니다.

Q: App Mesh는 어떻게 작동합니까?

A: App Mesh는 서비스에 대한 서비스 메시를 설정 및 관리합니다. 이를 위해서는 각 서비스와 함께 오픈 소스 Envoy 프록시를 실행해야 합니다. 그러면 App Mesh가 각 컨테이너 간 모든 통신을 처리하도록 프록시를 구성합니다. App Mesh는 ststsd 수집기를 사용하여 오류율 및 초당 연결 수와 같은 지표를 수집하며, 이는 Amazon CloudWatch로 내보낼 수 있습니다. App Mesh API를 사용하면 경로 또는 가중치를 기반으로 특정 서비스 버전으로 트래픽을 라우팅할 수 있습니다.

Q: 서비스 메시란 무엇입니까?

A: 서비스 메시는 서비스 간 모든 통신을 처리하는 새로운 소프트웨어 계층입니다. 서비스 메시는 서비스를 서로 연결하고 서비스 간 연결을 관리할 수 있는 새로운 기능을 제공하며, 서비스의 코드와 독립적이므로 네트워크 경계를 넘나들며 여러 서비스 관리 시스템에서 작동할 수 있습니다.

통합

Q: App Mesh는 Amazon Elastic Container Services(ECS) 및 AWS Fargate와 어떻게 연동됩니까?

A: App Mesh는 Amazon ECS 및 AWS Fargate에서 관리하는 애플리케이션 새로운 통신, 관찰 및 관리 기능을 제공합니다. 사용자는 Envoy 프록시 이미지를 ECS 태스크 정의에 추가하고, App Mesh는 Envoy 구성을 관리하여 서비스 메시 기능을 제공합니다. App Mesh는 제공된 Envoy 부트스트랩 구성에 지정된 엔드포인트로 지표, 로그 및 추적을 내보냅니다. App Mesh는 메시가 지원되는 마이크로서비스 간에 트래픽 라우팅 및 기타 제어 기능을 구성할 수 있도록 API를 제공합니다.

Q: App Mesh는 Amazon Elastic Container Service for Kubernetes(EKS)와 어떻게 연동됩니까?

A: 오픈 소스 AWS App Mesh 컨트롤러 및 변종 웹훅 승인 컨트롤러를 사용합니다. 이러한 컨트롤러는 Kubernetes 서비스를 App Mesh에 연결하고 Envoy 프록시가 팟에 삽입되도록 보장합니다. App Mesh는 제공된 Envoy 부트스트랩 구성에 지정된 엔드포인트로 지표, 로그 및 추적을 내보냅니다. App Mesh는 메시가 지원되는 마이크로서비스 간에 트래픽 라우팅 및 기타 제어 기능을 구성할 수 있도록 API를 제공합니다.

Q: App Mesh는 Amazon EC2에서 실행되는 서비스와 어떻게 연동됩니까?

A: Envoy 프록시를 EC2 인스턴스의 컨테이너 또는 프로세스로 실행합니다. AWS에서 제공한 컨테이너 프록시 init 컨테이너를 사용하거나 자체 스크립트를 실행하여 프록시를 통해 인스턴스의 네트워크 트래픽을 리디렉션합니다. App Mesh는 Envoy 구성을 관리하여 서비스 메시 기능을 제공합니다. App Mesh는 제공된 Envoy 부트스트랩 구성에 지정된 엔드포인트로 지표, 로그 및 추적을 내보냅니다. App Mesh는 메시가 지원되는 마이크로서비스 간에 트래픽 라우팅 및 기타 제어 기능을 구성할 수 있도록 API를 제공합니다.

Q: AWS Elastic Load Balancer 대신 App Mesh를 사용해야 하는 이유는 무엇입니까?

A: AWS에서는 AWS Elastic Load Balancing를 사용하여 신뢰 범위 내에 있지 않은 모든 인터넷 트래픽 및 클라이언트의 트래픽을 처리하도록 권장합니다. AWS 리전 내 다른 서비스에 연결되는 내부 서비스의 경우, App Mesh는 서비스 통신에 대해 유연성, 일관성 및 더 높은 수준의 제어 및 모니터링 기능을 제공합니다.

모니터링, 로깅 및 추적

Q: App Mesh는 어떤 유형의 모니터링 기능을 제공합니까?

A: App Mesh를 사용하면 서비스 간 모든 홉에 대해 일관된 지표 및 로그를 확보할 수 있습니다. 이러한 로그 및 지표에는 서비스 이름 및 요청 식별자 같은 메타데이터가 포함됩니다. 이를 통해 Amazon CloudWatch와 같은 도구를 사용하여 서비스 간 통신의 그래픽 대시보드를 집계, 필터링 및 확인할 수 있습니다. 일반적인 대시보드에는 서비스와 종속 서비스 사이의 오류율 및 오류 코드가 포함될 수 있습니다. App Mesh는 자동으로 각 서비스에 대한 트레이스를 수집하므로, 모든 서비스 API 호출의 세부 사항으로 서비스 맵을 손쉽게 시각화할 수 있습니다. 이러한 기능을 통해 마이크로서비스 간 통신 문제의 근본 원인을 더 쉽게 디버깅하고 식별할 수 있습니다.

Q: App Mesh로 모니터링, 로깅 또는 추적하는 데 AWS가 아닌 도구를 사용할 수 있습니까? 예.

A: 예. App Mesh는 Envoy와 연동되는 모든 타사 도구를 지원합니다. 여기에는 Splunk, Prometheus, Jaeger, Flagger 및 Grafana와 더불어 Zipkin 및 LightStep과 같은 개방형 추적 솔루션이 포함됩니다.

트래픽 제어

Q: App Mesh는 어떤 유형의 트래픽 제어 기능을 제공합니까?

A: App Mesh는 트래픽 라우팅을 위한 일련의 클라이언트 측 제어 기능을 제공합니다. App Mesh는 서비스 이름과 버전을 기반으로 애플리케이션 간 트래픽을 라우팅할 수 있는 API를 제공합니다. 이러한 기능을 사용하면 마이크로서비스의 새로운 버전을 더 쉽게 배포할 수 있습니다.

서비스 간 인증

Q: App Mesh는 애플리케이션 ID를 어떻게 지원하나요?

상호 TLS(mTLS)는 전송 계층에서 애플리케이션 ID를 적용하는 방법 그리고 제시되는 인증서를 기반으로 클라이언트 연결을 허용하거나 거부하는 방법을 제공합니다. AWS App Mesh는 상호 전송 계층 보안(mTLS)이라고 하는 X.509 인증서를 사용하여 클라이언트 애플리케이션 ID를 적용하도록 지원합니다. mTLS를 구성하려면 TLS 세션 협상의 일부로서 요청 시작 중에 서버 서비스에 인증서를 제공하도록 클라이언트를 설정해야 합니다. 이 인증서를 사용하여 서버가 클라이언트를 식별 및 인증하고, 인증서가 유효한지 그리고 신뢰할 수 있는 인증 기관(CA)에서 발급되었는지 확인하고, 인증서의 SAN(Subject Alternative Name)을 사용하여 클라이언트가 누구인지 식별합니다.

Q: AWS App Mesh에서 mTLS를 사용해야 하는 이유는 무엇입니까?

마이크로서비스에는 서비스 메시로 해결할 수 있는 엔드 투 엔드 트래픽 암호화 및 유연한 서비스 액세스 제어 등 특정한 보안 요구 사항도 있습니다. AWS App Mesh mTLS 구현을 통해 클라이언트 애플리케이션은 서버를 확인하고 트래픽 암호화를 제공할 수 있으며, 상호 TLS는 서비스 간 인증에 사용되는 피어 인증을 제공합니다. 이는 연결을 만드는 클라이언트를 서비스가 확인할 수 있도록 TLS를 통한 보안 계층을 추가합니다. 모놀리식 애플리케이션을 마이크로서비스로 분할하고 서비스 메시에서 실행하면 가시성 향상과 스마트 트래픽 라우팅 등의 다양한 이점을 얻게 됩니다.