[SAA] Serverless Architectures

Blue·2024년 3월 3일
0

SAA

목록 보기
19/25

Mobile application:MyTodoList

HTTPS 에 REST API 를 노출시켜야하고 serverless architecutre 를 가져야하고 S3 에 바로 접근해야한다.

REST API Layer

먼저 client 는 Cognito으로 부터 인증을 받고 API Gateway 로 접근한다..

giving users access to S3

똑같이 cognito 에서 임시자격증명을 받고 다시 반환하고 그러면 S3에서 전용 공간에 엑세스 하도록 허용한다.

high read throughput,static data

high read 는 할일이 많이 바뀌는건 없다는것이다.
DynamoDB 에 저장되어 있는 정보를 읽기 위해 앞에 DAX 를 두어서 읽기 처리량을 늘리면서 전체 비용을 줄일려면 캐싱 계층으로 DAX 를 두면 ㅗ딘다.

Serverless hosted website:MyBlog.com

전세계로 scale 되고
많이 쓰여지지는 않고 많이 읽는다.
몇몇은 static file 이고 나머지는 dynamic REST API 이다.
가능할떄마다 캐싱 한다.
welcome email 받는다
thumbnail 만든다.

Serving static content,globally

static content 를 전세계적으로 제공하기 위해 client 는 Edge loaction 과 상호작용하고 S3 는 특정 region 에 있다.
cloudfront 로 글로벌을 대상으로 노출하면 된다.

Serving static content,globally,securely

그다음에 좀더 안전하게 제공하기 위해서는 CloudFront 에는 OAC 를 주고 CloudFront 만으로 S3에 접근하게 하고 S3에는 Bucket Policy 를 두어서 또한 안정성을 추가한다.

Adding a public serverless REST API

이제 Serverless RESAPI 를 추가하기위해서 REST HTTPS 를 API Gateway 로 보내고 AWS Lambda 를 실행한다 그리고 DynamoDB 앞에 DAX 를 두어서 많은 읽기를 할수 있게 한다.

User Welcome email flow

이제 DynamoDB에 변경된 값을 확인 하기 위해서 DynamoDB Stream 을 사용하여서 DB의 변경된 값을 전송한다. 그리고 값이 변경되면 AWS Lambda 를 실행하고 IAM Role 을 부여받아서 SES 사용하게 해준다. 그리고 SES 에서 email 을 보내면 된다.

Thumbnail Generation flow

CloudFront 에 OAC 를 두고 S3에 Bucket Policy 를 두고 이미지가 업로드 된다면 AWS Lambda 를 실행시키고 S3에 Thumbnail 을 넣는다.

Micro Services architecutre

micro service architecture 로 전환해야한다.
많은 서비스가 REST API를 사용해서 상호작용한다.

service 1

사용자는 첫 마이크로서비스와 HTTPS를 통해 통신하게 된다.
ELB가 ECS와 통신한 뒤 DynamoDB와 통신
마이크로서비스는 보통 DNS 이름이나 URL이 있다. service1.example.com을 예로 들어보자
정보를 얻으려면 DNS 쿼리를 Route 53에 보내 별칭 레코드를 받고 나서 서비스와 상호 작용이 가능하다.

service 2

전형적인 서버리스용 아키텍처 사용, 하지만 DynamoDB 대신 ElastiCache가 있다. 재미삼아 이것저것 섞어서 사용하려면 Lambda의 백엔드로 ElastiCache를 써도 괜찮다!
service 2는 service 1과 상호작용할 수도 있다. ELB에 람다 함수가 호출을 보내 service 1에서 정보를 얻고 응답을 생성한다.

service 3

ELB 사용
서버리스가 아니라서 Amazon EC2 오토 스케일링과 RDS DB를 사용하는 거라 전형적인 아키텍처에 해당한다.
EC2 인스턴스가 결정을 내리기 전에 service 2를 호출한다.
URL은 service3.example.com

Software updates offloading

종종 소프트웨어 업데이트를 배포한다.새로 업데이트 되면 요청을 많이 받게 되고 많은 요청이 있다. 콘텐츠는 네트워킹을 통해 다수에게 배포되는데 이건 비용이 많이 든다.

근데 우리의 어플리케이션의 변경은 원하지 않고 비용과 cpu 를 최적화해야한다.

현재 상태가 이렇다고 보자
M5 인스턴스가 소프트웨어 업데이트를 배포하고, 소프트웨어 업데이트 모드 EFS 에 위치한다.

그래서 전세계로 확장하고 CPU 사용량을 줄이며 비용을 절감하기 위해서 CloudFront 를 상위에 두면 된다.Edge 에서 소프트웨어 파일은 캐시에 저장되고 CloudFront 는 서버리스이기 때문에 확장한다.
ASG 가 많이 확장하지 않아서 Ec2,네트워크,EFS 비용을 크게 절감할수 있다.

profile
할수있다가 아닌 해야한다!!

0개의 댓글