Mobile application : MyTodoList
- MyTodoList라는 모바일 애플리케이션
- 요구사항
1) HTTPS 엔드 포인트가 있는 REST API가 노출되어야 함
2) 서버리스 아키텍처
3) 사용자가 원한다면 스스로 데이터를 관리하도록 S3에 있는 폴더와 직접 상호작용이 가능해야 함
4) 사용자가 관리형 서버리스 서비스로 인증할 수 있어야 함
5) 사용자가 대부분 읽기를 많이 하므로 관련된 성능이 필요함
6) 데이터베이스 계층은 확장을 할 수 있도록 구축해 읽기 처리량을 높여야 함
Mobile app : REST API layer
- REST API를 위해 Amazon API Gateway를 사용
- 일반적인 서버리스 API 방식으로 API Gateway가 람다 함수를 호출해 확장을 허용하고 서버리스 인프라를 사용하도록 함
- Lambda는 데이터베이스에서 할 일을 저장하거나 읽어야 하는데 서버리스이면서 확장이 잘 되는 DynamoDB를 백엔드로 사용
- 인증 계층이 있어야 하므로 Amazon Congnito 같은 서버리스 기술을 사용해
모바일 클라이언트가 Cognito에 연결하고 인증하면 API Gateway는 Cognito와 함께 인증을 확인
Mobile app : giving users access to S3
- S3 버킷에 사용자 액세스 권한을 주기 위해 Cognito를 사용
- Cognito에 인증을 요청하는 모바일 클라이언트가 있을 때
Cognito는 AWS STS를 통해 임시 자격 증명을 제공하고 이 자격 증명을 모바일 클라이언트에게 반환 - 자격 증명을 통해 클라이언트가 S3에 파일을 저장하고 회수하며 S3 전용 공간에 액세스하도록 허용
Mobile app : high read throughput, static data
- 읽기 처리량을 늘리면서 전체 비용을 줄이고 애플리케이션을 확장하기 위해 아키텍처 중 캐싱 계층으로 DAX를 사용해 변경
- DynamoDB 이전에 DynamoDB DAX를 사용해 캐싱 계층을 갖춰 읽기를 많이 하는 것을 DAX 캐시에 저장하여
DynamoDB 읽기 용량 단위가 많이 필요하지 않게 되고 확장이 용이하여 비용이 줄어들게 됨 - 아주 많은 내용을 읽어 캐시에 저장하므로 서버리스 방식으로 꾸준히 아키텍처를 개선하기에 적합
Mobile app : caching at the API Gateway
- 캐시에 응답을 저장할 때 DAX 대신 Amazon API Gateway 레벨에서 진행할 수 있으며
이 방법은 거의 아키텍처를 바꾸지 않으면서 API 라우트에 대한 응답을 캐시에 저장하는 경우 (응답이 고정된 경우) 유용 - 데이터베이스 관리는 생각할 필요 없으며 단지 사용량에 따라 비용만 지불하면 됨
'Cloud > AWS' 카테고리의 다른 글
[SAA] 마이크로서비스 아키텍처 (0) | 2022.04.14 |
---|---|
[SAA] 서버리스 웹사이트 : MyBlog.com (0) | 2022.04.14 |
[SAA] 서버리스 애플리케이션 모델(SAM) 개요 (0) | 2022.04.14 |
[SAA] Cognito 개요 (0) | 2022.04.14 |
[SAA] API Gateway 보안 (0) | 2022.04.13 |