AWS Serverless

Serverless

AWS in Serverless

프로비저닝하지 않고 완전 관리형 서비스들을 서버리스 개념으로 이해할 수 있다.

서버리스 개념은 현재 중요하게 사용되는만큼 시험에서도 자주 출제됨

AWS Lambda

Benefits of AWS Lambda

람다가 지원하는 언어

AWS Lambda Integrations Main ones

람다 예시

Serverless Thumbnail creation

Serverless CRON Job

람다로 코드를 실행하면 매우매우 저렴해진다

람다는 대규모 작업에 적절한 비용절감 메커니즘으로 활용 가능

AWS Lambda Limits to Know(한도)

한도는 리전당 존재하며 두 가지 한도가 있다

Execution 한도

Deployment 한도

Lambda@Edge & CloudFront Functions

Lambda@Edge & CloudFront Functions 사용 사례

사용자 지정에 활용 된다

CloudFront Functions

뷰어 요청 → 클라이언트가 CloudFront에 요청

Origin 요청 → CloudFront가 서버에 요청

응답도 마찬가지이다

Lambda@Edge

CloudFront Functions vs Lambda@Edge

CloudFront Functions → 경량이라 요청도 많이 처리하지만 실행 시간이 짧고 한정적

Lambda@Edge → 요청은 적제 처리하지만 실행 시간이 길고 트리거도 다양함

CloudFront Functions vs Lambda@Edge - 사용사례

CloudFront Functions

Lambda@Edge

Lambda in VPC

이러한 옵션이 기본 설정되어 있음

따라서 이 문제를 해결하려면 사용자의 VPC에서 람다 함수를 시작하면 된다.

→ 기본설정이 AWS VPC로 되어있음

VPC ID로 람다함수를 시작하려는 서브넷을 지정하고 람다 함수에 보안그룹을 추가해야 한다

그러면 람다가 서브넷에 ENI(Elastic Network Interface)를 생성해 사용자의 AWS 서비스에 엑세스가 가능하다.

이렇게 하면 VPC내 모든 항목에 비공개로 연결이 가능하다

Usecase - Lambda with RDS Proxy

RDS가 Private Subnet에 있어도 람다 함수로 직접 해당 RDS 인스턴스에 접근 가능하다.

하지만 이런 방식을 사용하게 되면 람다 함수가 계속 생성되었다가 사라지길 반복하면서 개방된 연결이 너무 많아 RDS 데이터베이스의 로드가 상승해 여러 문제로 이루어진다

이를 해결하는 방법이 RDS 프록시를 시작하는 것이다

연결을 모아서 RDS 인스턴스 연결을 줄인다

RDS proxy

람다 함수가 RDS 프록시에 연결될 수 있으러면 반드시 사용자의 VPC내에서 실행되어야 한다.

RDS 프록시는 퍼블릭 엑세스가 불가능해서 람다 함수를 퍼블릭(기본)으로 시작하면 RDS 프록시 네트워크에 연결할 수 없다 → RDS는 프라이빗이기 때문

Amazon DynamoDB

DynamoDB 기본

기본키(Partition Key + Sort Key(Optional)) + Attributes(Nullable)

Read/Write Capacity Modes

프로비저닝 모드

온디맨드 모드

실습

데이터베이스와 관계없이 테이블을 만들어 서버리스로 관리된다 Read Capacity / Write Capacity를 따로 설정 가능하며 unit 단위로 관리

DynamoDB 고급 기능

DynamoDB Accelerator (DAX)

DynamoDB Accelerator (DAX) vs ElastiCache

Stream Processing

테이블의 모든 수정 사항 → 생성, 업데이트, 삭제를 포함해서 스트림을 생성할 수 있다

DynamoDB Streams

Kinesis Data Streams로 변경 사항을 바로 보낸다

DynamoDB Global Table

여러 리전간에 복제를 할 수 있는 테이블

DynamoDB - TTL

Backups for disaster recovery

Integration with Amazon S3

Export to S3

Import to s3

AWS API Gateway

클라이언트가 직접 람다함수를 호출할 수 있게 하려면 클라이언트에게 IAM 권한이 필요한데 이때 ALB로 람다와 클라이언트를 연결하면 람다 함수의 HTTP 엔드포인트가 노출된다

따라서 API Gateway로 연결하여 요청을 프록시한다

API Gateway 개요

Integrations High Level

AWS Service Integration Kinesis Data Streams example

AWS 서비스와 통합되는 예시

키네시스 데이터 스트림으로 사용자가 데이터를 전송할 수는 있지만 AWS 자격증명은 가질 수 없도록 보안 설정이 가능하다

API Gateway를 통해 AWS 서비스를 외부에 노출시키는게 핵심이다

EndPoint Types

Edge-Optimized (default): 글로벌 클라이언트용

Regional

Private

Security

사용자 식별하는 방법

Custom Domain Name HTTPS security through integration with AWS Certificate Manager (ACM)

AWS Step functions