Distributing paid content
- 온라인에서 영상을 판매할 때 수많은 고객이 영상을 구매하러 오지만 프리미엄 사용자에게만 영상을 배포하도록 함
즉, 영상을 얻고자 돈을 지불한 사용자에게만 영상을 배포 - 이를 위해 프리미엄 사용자 데이터베이스를 마련해서 프리미엄 사용자에게 단시간 사용 가능하고 안전한 링크를 보내서
다른 사용자는 링크에 접속하지 못하도록 할 수 있는 전세계를 대상으로 한 서버리스 애플리케이션을 만들 수 있음
Start simple, premium user service
- 프리미엄 사용자 서비스를 설계
- 클라이언트가 있고 REST HTTPS는 API Gateway, 람다 함수, DynamoDB 테이블과 통신
- DynamoDB 테이블에서 사용자 내역을 읽고 업데이트하며 삭제하는데
사용자 테이블을 보면 누가 어떤 영상의 프리미엄 사용자인지 확인할 수 있음
Add authentication
- Amazon Cognito로 인증하고 API Gateway로 검증하는 방법을 사용
Add Videos Storage Service
- 영상 스토리지 서비스를 추가해 영상을 S3에 보관하여 안심하고 영상을 넣어둘 수 있고, 사용자는 S3에서 바로 영상을 볼 수 있음
- S3는 서버리스도 확장이 가능
Distribute Globally and Secure
- 하지만 이때 글로벌하면서 안전한 배포를 원하므로 S3 버킷에 영상을 넣어두고,
버킷 정책이 있는 S3와 통신하는 OAI를 사용해 CloudFront 글로벌 배포를 하도록 시도하여
사람들이 CloudFront를 통해 컨텐츠에 액세스하도록 보장하면서 컨텐츠를 전세계로 배포하도록 함
Distribute Content only to premium users
- 클라이언트가 CloudFront와 통신하도록 허락하고 CloudFront 내 컨텐츠에 프리미엄 사용자만 접근하도록 설정
- REST API는 프리미엄 사용자를 위해 DynamoDB에 쓰기를 하고 CloudFront와 S3는 버킷 액세스를 관히
- CloudFront에 있는 기능인 서명된 URL을 이용해 프리미엄 혹은 유료 컨텐츠를 사용자에게 배포
- 서명된 URL을 생성하려면 해당 애플리케이션을 새로 만들거나 갖추고 있어야 하므로
API Gateway의 두 번째 API를 생성해서 클라이언트 인증을 확인해주고,
(즉, 서버리스 애플리케이션 중 하나는 프리미엄 사용자 등록에 사용, 다른 하나는 CloudFront의 서명된 URL을 생성)
클라이언트가 API를 호출해 서명된 URL을 요구하면 API Gateway는 이를 위해 특별히 코딩된 람다 함수를 호출하게 되고
람다 함수는 API를 호출한 사용자가 프리미엄인지 확인하기 위해 DynamoDB를 살펴본 후, 프리미엄 사용자가 맞다면
AWS SDK를 사용해 CloudFront API를 통해서 5분의 만료시간을 설정한 서명된 URL을 생성하여 이를 반환
반환된 서명된 URL을 가지고 클라이언트는 CloudFront 글로벌 배포에 액세스할 수 있게 됨
'Cloud > AWS' 카테고리의 다른 글
[SAA] 빅 데이터 수집 파이프라인 (0) | 2022.04.15 |
---|---|
[SAA] 소프트웨어 업데이트 배포 (0) | 2022.04.14 |
[SAA] 마이크로서비스 아키텍처 (0) | 2022.04.14 |
[SAA] 서버리스 웹사이트 : MyBlog.com (0) | 2022.04.14 |
[SAA] 모바일 애플리케이션 : MyTodoList (0) | 2022.04.14 |