API Gateway Pattern, VPC Links

Suyeon Pi·2023년 8월 9일
0

AWS Summit Korea 2023의 12가지 디자인 패턴으로 알아보는 클라우드 네이티브 마이크로서비스 아키텍처 세션을 다시 듣고 정리를 해보려고 한다.
추가로 AWS 블로그에 있는 해당 아키텍처에 쓰인 서비스에 관한 글을 읽고 정리해보려고 한다.

API Gateway Pattern

먼저 API Gateway Pattern 이란 마이크로 서비스로 나눠진 백엔드 서버들 앞에 하나의 API Gateway를 둠으로써 클라이언트는 API Gateway에 노출된 경로만 호출하고 요청된 라우트에 따라 적절한 서비스로 라우팅 시키고 response를 내려주는 것이다.

API Gateway를 둠으로써 백엔드 서비스들을 감출 수 있고 라우팅 뿐만 아니라 로드밸런싱, 캐싱, 인증 등을 할 수 있다.

실제 아키텍처에는 Private한 VPC구조로 인해 내부에 있는 서비스과 외부에 있는 게이트웨이가 소통하기 위해서는 Private Link, VPC Endpoint가 필요하다.

AWS PrivateLink 를 사용하면 AWS 네트워크 내에서 네트워크 트래픽을 유지하면서 AWS 서비스 및 다른 AWS고객이 호스팅하는 서비스에 접근 할 수 있다. 서비스는 private IP로 노출되기 때문에 모든 통신은 public으로 노출되지 않고 private하게 이루어진다.

Customer VPC -> AWS API Gateway를 private하게 호출하려면 Customer VPC에 VPC Endpoint를 만들고 Private Link를 통해 API Gateway를 호출하면된다.

VPC Endpoint에서는 Customer VPC의 요청을 API Gateway로의 호출을 비공개적으로 라우팅한다.

요청 -> VPC Endpoint -> PrivateLink -> API Gateway

REST API를 위한 VPC Link를 만들면 Private Link가 생성된 Region에 VPC Endpoint도 생성된다. (각 리전에 대해 API Gateway를 제공하는 AWS 계정이 VPC Endpoint Service 허용 목록에 있기 때문)
Network Load Balancer는 AWS Private Link를 통해 요청을 수신한다.

API Gateway -> VPC Endpoint -> Private Link -> Customer VPC의 NLB -> Target

REST API Gateway private integration
https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-private-integration.html

HTTP API는 최신 유형의 API Gateway이다. REST API보다 저렴하고 빠르다.
HTTP API Gateway의 VPC Link에서는 VPC Endpoint와 NLB가 필요하지 않다. 즉, ALB나 다른 AWS Cloud MAP Service를 private Target으로 지정할 수 있고 여러 Target을 지정할 수도 있다.
(AWS Cloud MAP Service는 클라우드 리소스 검색 서비스이며 리소스의 업데이트 된 위치를 유지관리하며, 항상 최진 리소스의 위치를 검색할수 있도록 하는 서비스다.)

AWS Hyperplane은 AWS Private Link를 포함한 여러 유형의 네트워크 가상화 구성을 제공한다. REST API의 VPC link는 AWS Private link에만 의존했다면, HTTP API의 VPC link는 VPC-to-VPC NAT을 사용한다. 이것은 더 높은 레벨의 추상화를 제공한다.

VPC-to-VPC NAT은 VPC끼리의 터널과 같은 컨셉인데, VPC link를 생성할때 AWS Hyperplane은 각 VPC에 Elastic Network Interface (ENI)를 생성, 관리한다.
API Gateway의 요청은 Customer VPC의 ENI의 보안그룹 구성에 따라 연결이 허용된다.

이 방법은 람다에서 내부의 customer VPC를 호출할 때와 비슷하다.

HTTP API Gateway private integration
https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vpc-links.html

참고한 글
https://aws.amazon.com/blogs/compute/understanding-vpc-links-in-amazon-api-gateway-private-integrations/
https://aws.amazon.com/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/

profile
Stay hungry, Stay foolish!

1개의 댓글

comment-user-thumbnail
2023년 8월 9일

큰 도움이 되었습니다, 감사합니다.

답글 달기