서버리스 아키텍쳐
MyTodoList 모바일 애플리케이션
- HTTPS 엔드포인트가 있는 REST API가 노출되어야한다
- 서버리스 아키텍쳐
- 유저는 자신의 S3 폴더와 직접적인 상호작용이 가능해야한다
- 관리형 서버리스 서비스로 인증 가능해야한다
- 사용자가 할 일을 읽고 쓰지만 읽기가 많으니 읽기 처리량을 늘려야한다
classic한 서버리스 아키텍쳐
S3 상호작용을 위한 인증 절차
AWS 사용자 자격증명을 모바일 클라이언트에 저장하지 않는다
S3 - Cognito - STS를 활용한다
모바일앱의 읽기처리량은 늘리고 전체적인 비용은 줄이기
DAX를 통한 캐싱 레이어를 갖는다.
서버리스 아키텍쳐로 확장이 용이해진다.
이 외에도 API Gateway로 캐시값을 진행할 수 있다.
서버리스 웹사이트 MyBlog.com
- 글로벌 스케일 아웃이 가능해야한다
- 읽는 빈도가 쓰이는 것보다 높다
- 대부분 정적 파일로 구성되고 REST API로 구성
- 캐시를 적용해서 비용 절감 및 UX 향상
- 블로그 이미지는 섬네일이 생성되어야한다
정적인 컨텐츠를 글로벌하게 배포
이후 CloudFront에서만 접근할 수있도록 버킷 정책을 설정한다
이후 DynamoDB를 글로벌하게 설정할 수 있다(비용 고려)
이미지를 넣지 않았지만 SES를 통한 환영 이메일 발송 기능또한 구현할 수 있다
썸네일 이미지 저장하기
S3 Transfer Acceleration을 통한 업/다운로드를 빠르게 진행할 수 있고 이후 람다함수를 사용해 기존에 있던 S3 버킷 혹은 새로운 S3 버킷으로 저장할 수 있다.
Micro Services Architecture
- 많은 서비스가 REST API를 통해 소통
- 각각의 서비스 아키텍쳐는 모습과 형태가 매우 달라 원하는 대로 설정 가능
- 서비스 개발 수명 주기를 줄이기 위함이며, 서비스가 독립적으로 확장하며 각각의 코드 리포지토리를 사용하기 원한다면 Micro Services Architecture를 사용한다
- 동기식 패턴
- API Gateway , Load Balancer
- 비동기식 패턴
- SQS, Kinesis, Lambda triggers, SNS
- 마이크로 서비스의 문제
- 새로운 마이크로 서비스를 생성할 때 오버헤드
- 서버 밀도나 사용률 최적화하는데 어려움을 겪는다
- 여러 버전의 마이크로 서비스를 동시에 가동하려면 어렵다
- 여러 서비스와 통합하려다 클라이언트 코드 요구사항이 급증할 수도 있다
- 서버리스 패턴으로 어느정도 상쇄가 가능
- 자동화 + 쉬운 API 복제, 재생산 가능 + Client SDK를 통한 통합
서비스
- ECS(Docker Container)를 사용한 서비스 방식
- 서버리스 구성 방식
- 오토 스케일링을 활용한 클래식한 방식
서비스별로 구성이 다르다
- 두 번째 마이크로 서비스는 첫 번째 서비스의 로드밸런서로 요청을 보내 두 번째 서비스에서 응답을 생성가능
- 세 번째 서비스의 오토스케일링을 결정하는데 두 번째 서비스의 지표를 통해 가능하다
Software updates offloading
- EC2에서 업데이트를 위해 소프트웨어를 다운받고 설치하는 과정은 매우 반복적이다
- 소프트웨어가 새로 업데이트 되면 사용자로부터 업데이트를 위한 요청을 많이 받게 된다. 이때 콘텐츠는 네트워킹을 통해 다수에게 배포되기 위한 많은 비용을 필요로 한다
CloudFront를 통한 확장의 장점
- 아키텍쳐 변경이 필요없다
- 업데이트 파일 캐싱 가능한데 업데이트파일은 정적인 파일이기 때문
- EC2 인스턴스는 서버리스가 아니라 확장이 어렵지만 CloudFront는 서버리스라 확장 쉬움
- CloudFront가 있기 때문에 ASG가 많은 확장을 하지 않아 더 비싼 자원(EFS, EC2 네트워크 비용)을 줄일 수 있다
- 가용성, 확장성, 비용 절감 등을 이룰 수 있다
엣지에서 캐싱을 활용하는 정적 콘텐츠가 많을 경우 사용가능하며 상당히 절약할 수 있는 플랜
'TIL > AWS' 카테고리의 다른 글
AWS 데이터 & 분석 (0) | 2023.06.05 |
---|---|
AWS의 데이터베이스 (0) | 2023.06.05 |
AWS Serverless (1) | 2023.06.03 |
AWS 컨테이너 ECS, Fargate, ECR과 EKS (1) | 2023.06.03 |
AWS 통합과 메시징: SQS, SNS, Kinesis, Active MQ (0) | 2023.06.01 |