1.Mobile application: MyTodoList - pdf에 정리
2.Serverless application: MyBlog.com - pdf에 정리
3.Micro Services architecture
4.Software updates offloading
마이크로서비스 아키텍처로 전환하고자 한다고 가정해보자. 많은 서비스가 REST API를 통해 직접적으로 상호작용한다.
마이크로서비스의 아키텍처는 모습과 형태가 달라 원하는 대로 할 수 있고, 서비스의 개발 수명 주기를 줄이고자 마이크로서비스 아키텍처를 사용한다. 각 서비스가 독립적으로 확장하며 코드 리포지토리를 갖추길 원한다면 마이크로서비스 아키텍처를 사용하면 된다.
example:
1.사용자는 첫 마이크로서비스와 HTTPS를 통해 통신하게 된다.
2.ELB가 ECS와 통신한 뒤 DynamoDB와 통신
3.마이크로서비스는 보통 DNS 이름이나 URL이 있다. service1.example.com을 예로 들어보자
4.정보를 얻으려면 DNS 쿼리를 Route 53에 보내 별칭 레코드를 받고 나서 서비스와 상호 작용이 가능하다.
1.전형적인 서버리스용 아키텍처 사용, 하지만 DynamoDB 대신 ElastiCache가 있다. 재미삼아 이것저것 섞어서 사용하려면 Lambda의 백엔드로 ElastiCache를 써도 괜찮다!
2.service 2는 service 1과 상호작용할 수도 있다. ELB에 람다 함수가 호출을 보내 service 1에서 정보를 얻고 응답을 생성한다.
1.ELB 사용
2.서버리스가 아니라서 Amazon EC2 오토 스케일링과 RDS DB를 사용하는 거라 전형적인 아키텍처에 해당한다.
3.EC2 인스턴스가 결정을 내리기 전에 service 2를 호출한다.
4.URL은 service3.example.com
EC2에서 작동하는 애플리케이션이 있고 종종 소프트웨어 업데이트를 배포한다. 소프트웨어가 새로 업데이트되면 요청을 많이 받게되고, 콘텐츠는 네트워킹을 통해 다수에게 배포되는데 이는 비용이 많이 든다.
소프트웨어 업데이트 비용과 CPU 사용량을 최적화하고 EC2에서 실행 중인 응용 프로그램을 변경하지 않고 소프트웨어 업데이트를 분산하는 방법은 무엇일까?
애플리케이션을 전세계로 확장하고 CPU 사용량을 줄이며 비용을 절감하는 방법
엣지에서 캐싱을 활용하는 정적 콘텐츠가 대부분인 경우 CloudFront가 기존 애플리케이션의 확장성을 높이고 비용을 절감하는데 용이하다!