발표영상 다시보기: https://youtu.be/uC1Eb20ZjGs
거의 모든 산업 분야의 기업은 전례없는 속도의 변화를 경험하고 있으며, 작고 빠른 기업이 몇달 만에 시장을 앞서나가기도 합니다. 하지만 전통적인 모놀리틱 애플리케이션 환경에서는 시장 변화에 민첩하게 대응하거나 실험을 자주 시도하는 것이 어려웠습니다. 컨테이너와 서버리스 기술, MSA, CI/CD의 특징을 가진 모던 어플리케이션 개발은 여러분이 빠르게 혁신할 수 있도록 도와드릴 수 있습니다. 이 세션에서는 실제 비즈니스 케이스를 위해 AWS에 구현한 다양한 모던 어플리케이션 디자인 패턴들을 사례와 함께 소개합니다.
6. 빠른 혁신의 중심은 디지털 기술입니다.
Strategy
Culture
Technology
Talent
7. 빠른 혁신을 가능하게 하는 모범 사례
• 애플리케이션 구조화 - 마이크로서비스
• 전체 애플리케이션 생애주기에 보안 적용 - 자동화된 보안 체계
• 인프라 관리 단순화 - 서버리스 기술
• 잦은 빈도의 실험 수행 - 작고 독립적인 팀 구성
• 애플리케이션과 인프라를 빠르게 변경 - 자동화된 CI/CD
• 운영 표준화 – 코드를 사용한 애플리케이션과 인프라의 모델링
• 애플리케이션 성능 향상 - 향상된 모니터링
10. • API Gateway
• Service Discovery and Service Registries
• Circuit Breaker
• Command-Query Responsibility Segregation
• Event Sourcing
• Choreography
• Log Aggregation
현대적 애플리케이션 구현을 위한 일반적인 패턴
13. Service Discovery and Service Registries
클라이언트의 서비스 연결에 프록시 필요
서비스 디스커버리 추상화
서비스 가용성 및 용량에 영향 받음
추가적인 지연
Server-side service discovery pattern
Request
Elastic Load Balancing
+
Service
Registry
Register
Register
User Service
Service
Service
Request Request
Register
Register
Register
Query
AWS Cloud Map
Service Registry
User Service
Service
Service
클라이언트가 서비스를 바로 연결
시스템 내 더 적은 컴포넌트 필요
클라이언트가 서비스 등록을 감지
클라이언트 사이드 로드 밸런싱
Client-side service discovery pattern
14. User Service BService A Circuit Breaker User Service BService A Circuit Breaker
Circuit Breaker
15. CQRS (Command-Query Responsibility Segregation)
처리량, 대기 시간, 일관성 요구 사항이 다른 경우
User
Service A
Data
Transfer
Object
Update Query
Data
Domain
Model
ORM ORM
User
Command Service
Data
Transfer
Object
Update Query
Domain
Model
Query Service
Amazon AuroraAmazon DynamoDB AWS Lambda
Data
Transfer
Object
Data
20. AfterShip
Circuit Breaker Pattern
AfterShip
SaaS 플렛폼, 이커머스 배송 추적 솔루션 제공
17개국 666개 배송 회사를 지원
Mission
99.95% SLA Up time
20,000 ~ 30,000 req/sec (성수기 기준)
https://www.youtube.com/watch?v=M-G8VdOGyzw&list=PLhr1KZpdzukdeX8mQ2qO73bg6UKQHYsHb&index=8&did=ta_card&trk=ta_card
21. AfterShip
Circuit Breaker Pattern
APIGateway를 통한 사용자의 요청을 받아
외부 시스템과 연계한 배송정보를 제공
두 개의 AWS Lambda function과 Amazon SQS 쌍을 사용
앞의 쌍은 높은 SLA를 달성, 뒤는 3rd 파티, 외부 연계 수행
실패를 해도 재시작 할 수 있으며 서비스에는 지장 없는
구조
https://www.youtube.com/watch?v=M-G8VdOGyzw&list=PLhr1KZpdzukdeX8mQ2qO73bg6UKQHYsHb&index=8&did=ta_card&trk=ta_card
AWS Cloud
API Gateway 1st Lambda
2nd Lambda
1st SQS
2nd SQS
Extern Services
Users
22. AfterShip
Circuit Breaker Pattern
APIGateway를 통한 사용자의 요청을 받아
외부 시스템과 연계한 배송정보를 제공
두 개의 AWS Lambda function과 Amazon SQS 쌍을 사용
앞의 쌍은 높은 SLA를 달성, 뒤는 3rd 파티, 외부 연계 수행
실패를 해도 재시작 할 수 있으며 서비스에는 지장 없는
구조
https://www.youtube.com/watch?v=M-G8VdOGyzw&list=PLhr1KZpdzukdeX8mQ2qO73bg6UKQHYsHb&index=8&did=ta_card&trk=ta_card
AWS Cloud
API Gateway 1st Lambda
2nd Lambda
1st SQS
2nd SQS
Extern Services
Users
23. Zalando
Event Sourcing
Zalando
리테일 패션 플렛폼으로 파트너,브랜드, 고객을 연결
패션과 라이프스타일을 유럽의 17개 국가에 제공
Mission
High Scalable data processing pipeline
9명의 직원으로 모든 것을 개발/구축/운영
https://www.youtube.com/watch?v=RxAmb57NCPM&feature=youtu.be&did=ta_card&trk=ta_card
24. Zalando
Event Sourcing
수 많은 내부 Micro Service로부터 이벤트를 받아
데이터 레이크를 구성
각 단계마다 Amazon S3 bucket을 구성
단계별 이벤트처리는 두 개의 SQS와 연결된 AWS
Lambda function을 사용
SQS #1 : 이벤트 buffer Queue
SQS #2 : Dead Letter Queue
이벤트 처리 단계마다 Event Sourcing 을 사용,
각 단계마다 적절한 이벤트 처리에 효과적
https://www.youtube.com/watch?v=RxAmb57NCPM&feature=youtu.be&did=ta_card&trk=ta_card
NAK
ADI
Amazon Simple
Notification Service
AWS Lambda Amazon S3
AWS Lambda
AWS Lambda
Amazon S3
Amazon S3
Raw
Main
Internal
Micro Services
Amazon Simple Queue Service
25. Zalando
Event Sourcing
수 많은 내부 Micro Service로부터 이벤트를 받아
데이터 레이크를 구성
각 단계마다 Amazon S3 bucket을 구성
단계별 이벤트처리는 두 개의 SQS와 연결된 AWS
Lambda function을 사용
SQS #1 : 이벤트 buffer Queue
SQS #2 : Dead Letter Queue
이벤트 처리 단계마다 Event Sourcing 을 사용,
각 단계마다 적절한 이벤트 처리에 효과적
https://www.youtube.com/watch?v=RxAmb57NCPM&feature=youtu.be&did=ta_card&trk=ta_card
NAK
ADI
Amazon Simple
Notification Service
AWS Lambda Amazon S3
AWS Lambda
AWS Lambda
Amazon S3
Amazon S3
Raw
Main
Internal
Micro Services
Amazon Simple Queue Service
26. Healthdirect Australia
CQRS (Command Query Request Responsibility Segregation)
https://www.youtube.com/watch?v=dy-drIboyNA&feature=youtu.be
Healthdirect Australia
호주의 국가 공공 의료 정보 서비스 제공
Mission
대량의 읽기 요청에 대한 실시간 스케일링 필요
쓰기는 대량의 읽기에 영향을 받으면 안됨.
각종 보안 규제로 25년간 데이터 보관 필요
27. Healthdirect Australia
CQRS (Command Query Request Responsibility Segregation)
https://www.youtube.com/watch?v=dy-drIboyNA&feature=youtu.be
대량의 데이터 쓰기와 읽기가 동시에 수행되는
의료 정보 서비스를 제공하기 위해
읽기와 쓰기가 아키텍처적으로 완벽히 분리
APIGateway와 Static 웹서비스로 데이터 수집
EMR로 데이터를 검증/정제 후 S3에 자정
읽기를 위해 DynamoDB, 엘라스틱서치 사용
외부 서비스에서 읽이 위한 APIGatway 사용
대량의 쓰기와 읽이가 서로 영향을 주지않으면서
각 목적에 충실한 최적화된 아키텍처 구현
Amazon EMR
Amazon Kinesis
AWS Lambda
Amazon API Gateway Amazon DynamoDB
Amazon Elasticsearch
Amazon Athena
Amazon S3
Amazon S3
Amazon Kinesis
Amazon API Gateway
AWS Lambda
Write Read
28. Healthdirect Australia
CQRS (Command Query Request Responsibility Segregation)
https://www.youtube.com/watch?v=dy-drIboyNA&feature=youtu.be
대량의 데이터 쓰기와 읽기가 동시에 수행되는
의료 정보 서비스를 제공하기 위해
읽기와 쓰기가 아키텍처적으로 완벽히 분리
APIGateway와 Static 웹서비스로 데이터 수집
EMR로 데이터를 검증/정제 후 S3에 자정
읽기를 위해 DynamoDB, 엘라스틱서치 사용
외부 서비스에서 읽이 위한 APIGatway 사용
대량의 쓰기와 읽이가 서로 영향을 주지않으면서
각 목적에 충실한 최적화된 아키텍처 구현
Amazon EMR
Amazon Kinesis
AWS Lambda
Amazon API Gateway Amazon DynamoDB
Amazon Elasticsearch
Amazon Athena
Amazon S3
Amazon S3
Amazon Kinesis
Amazon API Gateway
AWS Lambda
Write Read
29. Klap
Saga / Orchestration
Klap
자동화된 비디오 편집과 스포츠용 비디오 처리
서비스를 제공(프랑스) : 스포츠 베팅과 모든
종류의 이벤트에 사용.
Mission
시간당 25GByte 비디오 처리
신뢰성 높은 비디오 관리에만 집중
https://www.youtube.com/watch?v=lTSZT10JMQA&feature=youtu.be&did=ta_card&trk=ta_card
30. Klap
Saga / Orchestration
AWS Step Function을 이용한 오케이스트레이션
비디오 처리과정마다 분리된 Lambda Function
Event Sourcing Pattern 적용
ECS 클러스터를 이용한 슬로우모션 생성
EC2에서 비디오 생성 엔진 구현
최종 비디오는 스트리밍 서비스로 전송
하루 백만~5백만장의 이미지처리
저렴한 비용으로 높은 처리랑과 확장성, 가용성 확보
https://www.youtube.com/watch?v=lTSZT10JMQA&feature=youtu.be&did=ta_card&trk=ta_card
AWS Lambda
AWS Lambda
AWS LambdaAmazon S3
AWS Step Functions AWS Lambda * n
Amazon Elastic Container
Service
Amazon EC2
Streaming
Platform
31. Klap
Saga / Orchestration
AWS Step Function을 이용한 오케이스트레이션
비디오 처리과정마다 분리된 Lambda Function
Event Sourcing Pattern 적용
ECS 클러스터를 이용한 슬로우모션 생성
EC2에서 비디오 생성 엔진 구현
최종 비디오는 스트리밍 서비스로 전송
하루 백만~5백만장의 이미지처리
저렴한 비용으로 높은 처리랑과 확장성, 가용성 확보
https://www.youtube.com/watch?v=lTSZT10JMQA&feature=youtu.be&did=ta_card&trk=ta_card
AWS Lambda
AWS Lambda
AWS LambdaAmazon S3
AWS Step Functions AWS Lambda * n
Amazon Elastic Container
Service
Amazon EC2
Streaming
Platform
32. Ancestry
Log Aggregation
Ancestry
DNA 검사와 가족의 족보,계보,
연결 관계 추적 서비스 제공
Mission
DNA와 연결 관계 분석을 위한
대량의 데이터 수집,저장, 분석
실시간, On-demand logging
다양한 보안 규제(Sox,PCI,HIPPA)
https://www.youtube.com/watch?v=igcnes0PI10&did=ta_card&trk=ta_card
33. Ancestry
Log Aggregation
수 천개의 EC2와 Fargate 에서 로그 생성
대량의 로그를 온-디맨드로 엘라스틱서치에 저장
클라우드와치에 저장 후 키네시스로 가져옴
Amazon S3 버킷에 순서조정, 카테고리 지정, 메타
데이터를 추가해 저장, 데이터 소스 역할
각종 규제를 충족할 수 있도록 지원
Lambda로 실시간 로그, Historical Loader로
시간기반 로그 로딩하여 엘라스틱서치에 저장
비용에 효과적이며 확장성이 뛰어난 아키텍처 구현
https://www.youtube.com/watch?v=igcnes0PI10&did=ta_card&trk=ta_card
Historical
Loader
AWS Lambda
Amazon S3Amazon Kinesis
Amazon API
Gateway
Developers
Amazon EC2
AWS Fargate
Amazon CloudWatch Amazon Kinesis Amazon Elasticsearch
Service
34. Ancestry
Log Aggregation
수 천개의 EC2와 Fargate 에서 로그 생성
대량의 로그를 온-디맨드로 엘라스틱서치에 저장
클라우드와치에 저장 후 키네시스로 가져옴
Amazon S3 버킷에 순서조정, 카테고리 지정, 메타
데이터를 추가해 저장, 데이터 소스 역할
각종 규제를 충족할 수 있도록 지원
Lambda로 실시간 로그, Historical Loader로
시간기반 로그 로딩하여 엘라스틱서치에 저장
비용에 효과적이며 확장성이 뛰어난 아키텍처 구현
https://www.youtube.com/watch?v=igcnes0PI10&did=ta_card&trk=ta_card
Historical
Loader
AWS Lambda
Amazon S3Amazon Kinesis
Amazon API
Gateway
Developers
Amazon EC2
AWS Fargate
Amazon CloudWatch Amazon Kinesis Amazon Elasticsearch
Service
35. Ancestry
Log Aggregation
수 천개의 EC2와 Fargate 에서 로그 생성
대량의 로그를 온-디맨드로 엘라스틱서치에 저장
클라우드와치에 저장 후 키네시스로 가져옴
Amazon S3 버킷에 순서조정, 카테고리 지정, 메타
데이터를 추가해 저장, 데이터 소스 역할
각종 규제를 충족할 수 있도록 지원
Lambda로 실시간 로그, Historical Loader로
시간기반 로그 로딩하여 엘라스틱서치에 저장
비용에 효과적이며 확장성이 뛰어난 아키텍처 구현
https://www.youtube.com/watch?v=igcnes0PI10&did=ta_card&trk=ta_card
Historical
Loader
AWS Lambda
Amazon S3Amazon Kinesis
Amazon API
Gateway
Developers
Amazon EC2
AWS Fargate
Amazon CloudWatch Amazon Kinesis Amazon Elasticsearch
Service