프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

 

 

VPC 세팅이 필요 없는 서버리스

 

AWS의 서버리스 서비스들은 별도의 VPC를 필요로 하지 않기 때문에, 기존에 VPC 자원들에서 사용해야 하는 보안요소에 신경 쓸 필요가 없다. 접근을 IAM Role 위주로만 관리해 주면 되기 때문에 보안적으로 우수하다고도 볼 수 있다.

 

 

특히 Lambda의 경우 서버리스 DB 인 DynamoDB와 연동하게 되면, 복잡한 세팅 없이 서로 Role로 접근하면 되기 때문에 찰덕 궁합이다. 따라서 서버리스는 서버리스와 사용했을 때 장점이 극대화된다고도 볼 수 있다.

 

 

 

 

 

 

 

Lambda와 VPC 내부 자원의 연결

 

하지만 RDBS를 사용해오기 때문에 DynamoDB가 아닌 RDS를 Lambda와 연동해야 할 수도 있다.

이럴 때 Lambda는 리전 level의 서비스인데, RDS와 같이 특정 VPC 내부에 배치되는 자원과는 어떻게 연결해야 할까?

 

 

사실 VPC가 없어 보이는 기본 Lambda도 기본적으로 인터넷에 액세스 할 수 있는 Lambda 관리형 VPC에서 실행된다.

계정의 VPC에 액세스를 위해서는 함수 생성 시, Advanced settings에서 VPC와 서브넷을 선택할 수 있다.

이후 적절한 보안그룹을 선택하면 된다.

 

 

이러한 VPC 내부의 Lambda는 자동으로  AWSLambdaVPCAccessExecutionRole을 통해서 해당 서브넷에 ENI를 생성한다. (이 역할이 삭제되면 ENI를 자동삭제 할 수 없게 되니 주의하자.)

 

이때 생성되는 ENI가 Hyperplane ENI이다.

 

 

 

 

 

 

Lambda Hyperplane ENI

 

Lambda는 AWS의 관리형 VPC에서 동작하기 때문에, VPC와 연결을 위한 엔드포인트인 ENI를 서브넷에 배치한다.

기존의 Lambda는 아래처럼 람다  인스턴스(MicroVM)마다 ENI를 매핑했다.

 

출처: https://aws.amazon.com/ko/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/

 

그림만 봐도 알 수 있듯이 인스턴스마다 ENI를 배치하기 때문에, 처음 생성 시 Cold start 및 환경 세팅 시간이 오래 걸리게 된다. 또한 ENI가 서브넷의 IP를 할당받기 때문에 빠르게 가용 IP가 부족해질 수 있다.

 

(Lambda의 인스턴스  Cold start에 대해서는 해당 게시글을 참조)

 

 

 

 

 

 

 

이러한 문제를 해결하기 위해 Hyperplane ENI가 만들어졌다.

(초평면이라는 뜻이라고 한다.)

 

 

이제 각각의 Lambda 인스턴스가 대상 VPC 서브넷에 ENI를 생성하는 것이 아니라, 하나의 Hyperplane ENI만 생성된다.

AWS의 Lambda 관리형 VPC에서 NAT를 통해 Hyperplane ENI로 접근하게 된다.

 

출처: https://aws.amazon.com/ko/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/

 

 

따라서 ENI 생성을 위한 대기 시간을 줄이고 IP까지 절약할 수 있다.

특히 Lambda 뿐만 아니라 동일한 보안 그룹과 서브넷 그룹을 사용하는 다른 함수도 이 Hyperplane ENI를 활용하여 ENI 수를 획기적으로 줄일 수 있게 된다.

 

Hyperplane ENI는 최대 65,000개의 연결/포트를 지원하기 때문에, 연결이 최대치 이상이라면 추가적인 ENI가 자동으로 배치 조정된다.

 

 

 

단, VPC 내부에서 Lambda를 실행하면 이러한 Hyperplane ENI 준비를 위한 대기 시간이 필요하다.

또한 Lambda 함수가 연속으로 30일 동안 사용되지 않으면, 자동으로 Hyperplane ENI를 회수되며 함수 상태가 유휴 상태로 설정된다. 따라서 유휴 상태에서 함수가 호출되면 활성화까지 시간이 소요된다.

 

 

 

 

 

 

 

참조 및 출처

https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/foundation-networking.html#foundation-nw-eni

 

VPC를 사용한 프라이빗 네트워킹 - AWS Lambda

VPC에서 아웃바운드 IPv6 트래픽을 허용하려면 함수에 연결된 모든 서브넷이 듀얼 스택 서브넷이어야 합니다. Lambda는 VPC의 IPv6 전용 서브넷을 위한 아웃바운드 IPv6 연결, VPC에 연결되지 않은 함수

docs.aws.amazon.com

 

https://aws.amazon.com/ko/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/

 

Announcing improved VPC networking for AWS Lambda functions | Amazon Web Services

September 8, 2021: Amazon Elasticsearch Service has been renamed to Amazon OpenSearch Service. See details. Update – August 5, 2020: We have fully rolled out the changes to the following additional Regions to those mentioned below. These improvements are

aws.amazon.com

 

 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함