VPC Lattice

Amazon VPC Lattice는 AWS의 애플리케이션 네트워킹 서비스로, 서로 다른 VPC와 계정에 걸쳐 있는 서비스들을 안전하게 연결하고 관리할 수 있게 해줍니다. 이 문서에서는 VPC Lattice의 개념, 아키텍처, Amazon EKS와의 통합 방법, 그리고 모범 사례에 대해 설명합니다.

목차

개요

VPC Lattice란?

Amazon VPC Lattice는 서비스 간 연결, 보안 및 모니터링을 위한 완전 관리형 애플리케이션 네트워킹 서비스입니다. 주요 특징은 다음과 같습니다:

  • 서비스 네트워크: 여러 VPC와 계정에 걸쳐 서비스를 연결하는 논리적 경계

  • 서비스 디스커버리: 서비스 네트워크 내에서 서비스를 자동으로 검색

  • 트래픽 관리: 라우팅 규칙, 가중치 기반 라우팅, 경로 기반 라우팅 지원

  • 인증 및 권한 부여: AWS IAM, 리소스 정책을 통한 액세스 제어

  • 관찰성: 통합된 모니터링, 로깅 및 추적 기능

주요 사용 사례

  1. 마이크로서비스 아키텍처: 마이크로서비스 간의 통신을 간소화하고 보안 강화

  2. 멀티 계정 환경: 여러 AWS 계정에 걸쳐 있는 서비스 간의 안전한 통신

  3. 하이브리드 워크로드: 컨테이너화된 워크로드와 비컨테이너화된 워크로드 간의 통신

  4. 서비스 메시 대체: 경량 서비스 메시 기능을 제공하여 복잡성 감소

  5. 멀티 클러스터 연결: 여러 EKS 클러스터 간의 서비스 통신 간소화

VPC Lattice vs 다른 서비스

VPC Lattice vs API Gateway

기능
VPC Lattice
API Gateway

주요 용도

내부 서비스 간 통신

외부 API 노출

네트워크 위치

VPC 내부

인터넷 연결

프로토콜

HTTP/HTTPS, gRPC

HTTP/HTTPS, WebSocket, REST, GraphQL

인증

AWS IAM, 리소스 정책

IAM, Lambda 권한 부여자, Cognito

확장성

자동 확장

자동 확장

가격 책정

시간당 + 데이터 처리량

요청 수 + 데이터 처리량

VPC Lattice vs AWS App Mesh

기능
VPC Lattice
AWS App Mesh

아키텍처

관리형 서비스

사이드카 프록시 기반

복잡성

낮음

중간

프로토콜

HTTP/HTTPS, gRPC

HTTP/HTTPS, gRPC, TCP

서비스 디스커버리

내장

AWS Cloud Map 통합

트래픽 제어

기본 라우팅 규칙

고급 트래픽 제어

관찰성

CloudWatch 통합

Envoy 기반 상세 메트릭

VPC Lattice vs Transit Gateway

기능
VPC Lattice
Transit Gateway

주요 용도

서비스 간 통신

VPC 간 네트워크 연결

추상화 수준

서비스 수준

네트워크 수준

프로토콜

애플리케이션 계층 (L7)

네트워크 계층 (L3)

라우팅

서비스 이름 기반

IP 기반

보안

서비스 수준 정책

보안 그룹, NACL

아키텍처

VPC Lattice 구성 요소

VPC Lattice는 다음과 같은 주요 구성 요소로 이루어져 있습니다:

  1. 서비스 네트워크(Service Network): 서비스 간 통신을 위한 논리적 경계

  2. 서비스(Service): 애플리케이션 또는 마이크로서비스를 나타내는 엔드포인트

  3. 대상 그룹(Target Group): 서비스로 트래픽을 라우팅할 대상 집합

  4. 리스너(Listener): 서비스에 대한 연결 요청을 처리하는 프로세스

  5. 규칙(Rule): 리스너가 트래픽을 라우팅하는 방법을 정의

  6. VPC 연결(VPC Association): VPC를 서비스 네트워크에 연결

spinner

서비스 네트워크 아키텍처

서비스 네트워크는 VPC Lattice의 핵심 구성 요소로, 여러 VPC와 계정에 걸쳐 있는 서비스들을 연결합니다.

spinner

트래픽 흐름

VPC Lattice에서 트래픽이 흐르는 방식은 다음과 같습니다:

  1. 클라이언트가 VPC Lattice 서비스 DNS 이름으로 요청을 보냄

  2. VPC Lattice가 요청을 수신하고 리스너 규칙에 따라 처리

  3. 리스너 규칙이 요청을 적절한 대상 그룹으로 라우팅

  4. 대상 그룹이 요청을 등록된 대상(EC2, EKS 파드, Lambda 등)으로 전달

  5. 대상이 응답을 처리하고 클라이언트에게 반환

spinner

서비스 디스커버리

VPC Lattice는 서비스 네트워크 내에서 서비스 디스커버리를 자동으로 제공합니다:

  1. 각 서비스는 고유한 DNS 이름을 가짐 (service-name.vpc-lattice-svcs.region.on.aws)

  2. 클라이언트는 이 DNS 이름을 사용하여 서비스에 접근

  3. VPC Lattice가 DNS 확인 및 라우팅을 처리

  4. 서비스 네트워크에 연결된 모든 VPC에서 서비스에 접근 가능

보안 모델

VPC Lattice는 다음과 같은 보안 메커니즘을 제공합니다:

  1. 네트워크 격리: 서비스 네트워크는 논리적으로 격리된 환경 제공

  2. 인증 및 권한 부여: AWS IAM을 통한 서비스 액세스 제어

  3. 리소스 정책: 서비스 및 서비스 네트워크에 대한 세분화된 액세스 제어

  4. TLS 암호화: 서비스 간 통신의 암호화

  5. VPC 보안 그룹: 대상에 대한 추가적인 보안 계층

EKS와 VPC Lattice 통합

통합 아키텍처

Amazon EKS와 VPC Lattice의 통합은 다음과 같은 구성 요소로 이루어집니다:

  1. AWS Gateway API Controller: Kubernetes Gateway API를 VPC Lattice 리소스로 변환

  2. Kubernetes Gateway API: 서비스 라우팅을 위한 표준 Kubernetes API

  3. VPC Lattice 서비스 네트워크: EKS 클러스터가 연결되는 서비스 네트워크

  4. VPC Lattice 서비스: Kubernetes 서비스에 매핑되는 VPC Lattice 서비스

  5. VPC Lattice 대상 그룹: Kubernetes 파드에 매핑되는 대상 그룹

spinner

통합의 이점

EKS와 VPC Lattice를 통합하면 다음과 같은 이점이 있습니다:

  1. 표준화된 API: Kubernetes Gateway API를 통한 일관된 서비스 관리

  2. 크로스 클러스터 통신: 여러 EKS 클러스터 간의 원활한 통신

  3. 하이브리드 워크로드: EKS 파드와 비컨테이너화된 워크로드 간의 통신

  4. 중앙 집중식 관리: AWS 콘솔에서 모든 서비스 네트워크 관리

  5. 통합된 관찰성: CloudWatch, CloudTrail을 통한 통합 모니터링 및 로깅

  6. 간소화된 서비스 메시: 사이드카 없이 서비스 메시 기능 제공

서비스 메시 대안으로서의 VPC Lattice

VPC Lattice는 다음과 같은 이유로 전통적인 서비스 메시(Istio, Linkerd 등)의 대안이 될 수 있습니다:

  1. 낮은 복잡성: 사이드카 프록시 없이 서비스 메시 기능 제공

  2. 관리 오버헤드 감소: AWS에서 완전히 관리되는 서비스

  3. 리소스 효율성: 사이드카 프록시가 없어 리소스 사용량 감소

  4. AWS 서비스와의 통합: AWS 서비스 생태계와 원활하게 통합

기능
VPC Lattice
전통적인 서비스 메시

서비스 디스커버리

내장

별도 구성 필요

트래픽 라우팅

지원

지원

트래픽 분할

지원

지원

상세한 트래픽 제어

제한적

광범위

사이드카 프록시

불필요

필요

관리 복잡성

낮음

높음

리소스 오버헤드

낮음

높음

관찰성

CloudWatch 통합

다양한 도구 지원

설치 및 구성

사전 요구 사항

VPC Lattice와 EKS를 통합하기 위한 사전 요구 사항은 다음과 같습니다:

  1. Amazon EKS 클러스터: Kubernetes 버전 1.23 이상

  2. IAM 권한: VPC Lattice 리소스를 생성하고 관리할 수 있는 권한

  3. VPC 설정: 프라이빗 서브넷이 있는 VPC

  4. AWS CLI: 최신 버전의 AWS CLI

  5. kubectl: 최신 버전의 kubectl

  6. Helm: (선택 사항) AWS Gateway API Controller 설치를 위한 Helm 3

AWS Gateway API Controller 설치

AWS Gateway API Controller는 Kubernetes Gateway API 리소스를 VPC Lattice 리소스로 변환하는 역할을 합니다.

Helm을 사용한 설치

YAML 매니페스트를 사용한 설치

  1. 서비스 계정 및 RBAC 설정:

  1. 컨트롤러 배포:

IAM 역할 설정

AWS Gateway API Controller가 VPC Lattice 리소스를 관리하려면 적절한 IAM 권한이 필요합니다.

IRSA(IAM Roles for Service Accounts) 설정

VPC Lattice 서비스 네트워크 생성

VPC Lattice 서비스 네트워크는 AWS Management Console, AWS CLI 또는 AWS CloudFormation을 통해 생성할 수 있습니다.

AWS CLI를 사용한 생성

AWS CloudFormation을 사용한 생성

Gateway API 리소스 구성

Kubernetes Gateway API 리소스를 구성하여 VPC Lattice와 통합합니다.

1. GatewayClass 생성

GatewayClass는 Gateway 리소스의 구현을 정의합니다.

2. Gateway 생성

Gateway는 트래픽이 클러스터로 들어오는 방법을 정의합니다.

3. HTTPRoute 생성

HTTPRoute는 HTTP 트래픽을 서비스로 라우팅하는 방법을 정의합니다.

서비스 및 파드 구성

VPC Lattice와 통합할 Kubernetes 서비스 및 파드를 구성합니다.

1. 서비스 생성

2. 배포 생성

서비스 관리

VPC Lattice 서비스 생성

VPC Lattice 서비스는 AWS Management Console, AWS CLI 또는 AWS CloudFormation을 통해 직접 생성하거나, Kubernetes Gateway API를 통해 간접적으로 생성할 수 있습니다.

AWS CLI를 사용한 직접 생성

Kubernetes Gateway API를 사용한 간접 생성

Gateway API 리소스를 생성하면 AWS Gateway API Controller가 자동으로 VPC Lattice 리소스를 생성합니다.

서비스 검색 및 액세스

VPC Lattice 서비스는 자동으로 DNS 이름을 할당받아 서비스 네트워크 내에서 검색 가능합니다.

DNS 이름 형식

서비스 액세스 예제

서비스 업데이트 및 삭제

AWS CLI를 사용한 서비스 업데이트

AWS CLI를 사용한 서비스 삭제

Kubernetes Gateway API를 사용한 서비스 관리

Gateway API 리소스를 업데이트하거나 삭제하면 AWS Gateway API Controller가 자동으로 VPC Lattice 리소스를 업데이트하거나 삭제합니다.

라우팅 및 트래픽 관리

기본 라우팅

VPC Lattice는 경로 기반 라우팅, 헤더 기반 라우팅, 가중치 기반 라우팅 등 다양한 라우팅 옵션을 제공합니다.

경로 기반 라우팅

헤더 기반 라우팅

트래픽 분할 및 카나리 배포

VPC Lattice는 가중치 기반 라우팅을 통해 트래픽 분할 및 카나리 배포를 지원합니다.

AWS CLI를 사용한 가중치 기반 라우팅

Kubernetes Gateway API를 사용한 가중치 기반 라우팅

현재 Kubernetes Gateway API는 가중치 기반 라우팅을 직접 지원하지 않지만, AWS Gateway API Controller는 주석을 통해 이 기능을 지원합니다.

상태 확인 구성

VPC Lattice는 대상 그룹에 대한 상태 확인을 지원합니다.

AWS CLI를 사용한 상태 확인 구성

Kubernetes Gateway API를 사용한 상태 확인 구성

AWS Gateway API Controller는 주석을 통해 상태 확인 구성을 지원합니다.

보안 및 인증

인증 방법

VPC Lattice는 다음과 같은 인증 방법을 지원합니다:

  1. AWS IAM: AWS Identity and Access Management를 사용한 인증

  2. 인증 없음: 인증 없이 모든 요청 허용

AWS IAM 인증 구성

Kubernetes Gateway API를 사용한 IAM 인증 구성

리소스 정책

VPC Lattice는 리소스 정책을 통해 서비스 및 서비스 네트워크에 대한 세분화된 액세스 제어를 제공합니다.

서비스 리소스 정책 설정

서비스 네트워크 리소스 정책 설정

크로스 계정 액세스

VPC Lattice는 서비스 네트워크를 통해 여러 AWS 계정에 걸쳐 있는 서비스 간의 통신을 지원합니다.

크로스 계정 서비스 네트워크 공유

  1. AWS RAM(Resource Access Manager)을 사용하여 서비스 네트워크 공유:

  1. 대상 계정에서 공유된 서비스 네트워크 수락:

  1. 대상 계정에서 VPC를 공유된 서비스 네트워크에 연결:

TLS 구성

VPC Lattice는 서비스에 대한 TLS 암호화를 지원합니다.

AWS CLI를 사용한 TLS 구성

Kubernetes Gateway API를 사용한 TLS 구성

모니터링 및 로깅

CloudWatch 메트릭

VPC Lattice는 다양한 CloudWatch 메트릭을 제공하여 서비스 성능 및 상태를 모니터링할 수 있습니다.

주요 메트릭

메트릭 이름
설명
차원

RequestCount

처리된 요청 수

ServiceId, ServiceName, TargetGroupId

HTTP_4XX_Count

4XX HTTP 응답 코드 수

ServiceId, ServiceName, TargetGroupId

HTTP_5XX_Count

5XX HTTP 응답 코드 수

ServiceId, ServiceName, TargetGroupId

ProcessedBytes

처리된 바이트 수

ServiceId, ServiceName, TargetGroupId

TargetProcessingTime

대상 처리 시간(ms)

ServiceId, ServiceName, TargetGroupId

HealthyTargetCount

정상 대상 수

TargetGroupId

UnhealthyTargetCount

비정상 대상 수

TargetGroupId

CloudWatch 대시보드 생성

CloudWatch 경보

VPC Lattice 메트릭에 대한 CloudWatch 경보를 설정하여 문제를 조기에 감지할 수 있습니다.

액세스 로깅

VPC Lattice는 서비스에 대한 액세스 로그를 Amazon S3, Amazon CloudWatch Logs 또는 Amazon Kinesis Data Firehose로 전송할 수 있습니다.

S3 액세스 로깅 구성

CloudWatch Logs 액세스 로깅 구성

AWS X-Ray 통합

VPC Lattice는 AWS X-Ray와 통합하여 분산 추적을 지원합니다.

X-Ray 추적 활성화

Kubernetes Gateway API를 사용한 X-Ray 추적 활성화

모범 사례

설계 및 아키텍처

  1. 서비스 네트워크 설계

    • 논리적 경계에 따라 서비스 네트워크 분리

    • 환경별(개발, 스테이징, 프로덕션) 서비스 네트워크 분리

    • 보안 요구 사항에 따라 서비스 네트워크 분리

  2. 서비스 명명 규칙

    • 일관된 명명 규칙 사용

    • 환경, 서비스 유형, 버전 등을 이름에 포함

    • 예: <env>-<service-name>-<version>

  3. 대상 그룹 설계

    • 유사한 특성을 가진 대상을 동일한 대상 그룹에 배치

    • 상태 확인 경로 및 간격 최적화

    • 적절한 비정상 임계값 설정

성능 최적화

  1. 상태 확인 최적화

    • 적절한 상태 확인 간격 설정 (너무 짧지 않게)

    • 가벼운 상태 확인 엔드포인트 구현

    • 상태 확인 경로가 중요한 종속성을 확인하도록 구성

  2. 연결 재사용

    • 클라이언트 측 연결 풀링 구현

    • Keep-Alive 헤더 사용

    • 연결 제한 시간 최적화

  3. 캐싱 전략

    • 정적 콘텐츠에 대한 클라이언트 측 캐싱 구현

    • Cache-Control 헤더 최적화

    • 필요한 경우 CDN 통합

보안 강화

  1. 최소 권한 원칙

    • 필요한 최소한의 권한만 부여

    • 서비스별 IAM 정책 생성

    • 정기적인 권한 검토 및 감사

  2. 네트워크 보안

    • 보안 그룹을 사용하여 트래픽 제한

    • 필요한 포트만 개방

    • VPC 엔드포인트 사용 고려

  3. 암호화

    • 전송 중 데이터 암호화를 위한 TLS 사용

    • 최신 TLS 버전 및 암호 제품군 사용

    • 인증서 자동 갱신 구성

모니터링 및 관찰성

  1. 포괄적인 모니터링

    • 모든 서비스에 대한 CloudWatch 대시보드 생성

    • 주요 메트릭에 대한 경보 설정

    • 로그 분석 및 이상 탐지 구현

  2. 로깅 전략

    • 모든 서비스에 대한 액세스 로깅 활성화

    • 로그 보존 정책 설정

    • 로그 분석 도구 통합

  3. 분산 추적

    • X-Ray 추적 활성화

    • 서비스 간 추적 상관 관계 구현

    • 추적 데이터 분석 및 시각화

비용 최적화

  1. 리소스 사용량 모니터링

    • 서비스 및 대상 그룹 사용량 추적

    • 미사용 리소스 식별 및 제거

    • 비용 할당 태그 사용

  2. 트래픽 최적화

    • 불필요한 요청 감소

    • 응답 크기 최적화

    • 배치 처리 구현 (가능한 경우)

  3. 자동 확장

    • 트래픽 패턴에 따른 대상 자동 확장

    • 예약된 확장 구현 (예측 가능한 트래픽 패턴의 경우)

    • 확장 임계값 최적화

문제 해결

일반적인 문제 및 해결 방법

1. 연결 문제

문제: 클라이언트가 VPC Lattice 서비스에 연결할 수 없음

해결 방법:

  • VPC와 서비스 네트워크 간의 연결 확인

  • 보안 그룹 규칙 확인

  • DNS 확인 확인

  • 대상 상태 확인

2. 인증 문제

문제: 클라이언트가 인증 오류를 수신함

해결 방법:

  • IAM 정책 및 권한 확인

  • 리소스 정책 확인

  • 서명 버전 및 헤더 확인

  • 임시 자격 증명 만료 확인

3. 라우팅 문제

문제: 요청이 잘못된 대상으로 라우팅됨

해결 방법:

  • 리스너 규칙 및 우선 순위 확인

  • 경로 패턴 및 일치 조건 확인

  • 대상 그룹 구성 확인

  • 가중치 기반 라우팅 설정 확인

4. 상태 확인 실패

문제: 대상이 상태 확인에 실패함

해결 방법:

  • 상태 확인 엔드포인트 가용성 확인

  • 상태 확인 구성 확인

  • 대상 애플리케이션 로그 확인

  • 네트워크 연결 확인

로깅 및 디버깅

1. 액세스 로그 분석

VPC Lattice 액세스 로그를 분석하여 문제를 진단할 수 있습니다.

2. CloudWatch 메트릭 분석

CloudWatch 메트릭을 분석하여 성능 문제를 진단할 수 있습니다.

3. X-Ray 추적 분석

AWS X-Ray를 사용하여 분산 추적을 분석할 수 있습니다.

AWS 지원 및 문제 해결 도구

1. AWS 지원 사례 생성

심각한 문제의 경우 AWS 지원 사례를 생성할 수 있습니다.

2. AWS 리소스 상태 확인

AWS Health Dashboard를 확인하여 AWS 서비스 상태를 확인할 수 있습니다.

결론

Amazon VPC Lattice는 AWS의 애플리케이션 네트워킹 서비스로, 서로 다른 VPC와 계정에 걸쳐 있는 서비스들을 안전하게 연결하고 관리할 수 있게 해줍니다. EKS와의 통합을 통해 Kubernetes 환경에서 서비스 메시 기능을 간소화된 방식으로 제공합니다.

이 문서에서는 다음 내용을 다루었습니다:

  1. 개요: VPC Lattice의 개념, 주요 사용 사례 및 다른 서비스와의 비교

  2. 아키텍처: VPC Lattice의 구성 요소, 서비스 네트워크 아키텍처 및 트래픽 흐름

  3. EKS와 VPC Lattice 통합: AWS Gateway API Controller를 통한 통합 및 이점

  4. 설치 및 구성: AWS Gateway API Controller 설치, IAM 역할 설정 및 서비스 네트워크 생성

  5. 서비스 관리: VPC Lattice 서비스 생성, 검색, 액세스, 업데이트 및 삭제

  6. 라우팅 및 트래픽 관리: 기본 라우팅, 트래픽 분할, 카나리 배포 및 상태 확인

  7. 보안 및 인증: 인증 방법, 리소스 정책, 크로스 계정 액세스 및 TLS 구성

  8. 모니터링 및 로깅: CloudWatch 메트릭, 경보, 액세스 로깅 및 X-Ray 통합

  9. 모범 사례: 설계, 성능, 보안, 모니터링 및 비용 최적화

  10. 문제 해결: 일반적인 문제 및 해결 방법, 로깅 및 디버깅

VPC Lattice를 효과적으로 구현하고 관리하면 마이크로서비스 아키텍처의 복잡성을 줄이고, 서비스 간 통신의 보안을 강화하며, 관찰성을 향상시킬 수 있습니다. AWS의 관리형 서비스로서 운영 오버헤드를 최소화하면서 서비스 메시의 이점을 제공합니다.

참고 자료

퀴즈

이 장에서 배운 내용을 테스트하려면 VPC Lattice 퀴즈를 풀어보세요.

마지막 업데이트