[Keynote] Data Driven Organizations with AWS Data - 발표자: Agnes Panosian, Head...
AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
1. 서버 없는 컴퓨팅 아키텍처 구축
- AWS Lambda / Amazon Kinesis
김필중 솔루션즈 아키텍트, 아마존 웹서비스 코리아
2. • 서버 없는 컴퓨팅 - 인게임 이벤트 시스템 설계
• AWS Lambda 의 새로운 기능
• Amazon Kinesis 의 새로운 기능
이번 세션에서는
3. TYCOON
Hotpot
AWS Mobile SDK
Authenticate users
Authorize access
Analyze User Behavior
Synchronize data
Amazon Mobile
Analytics
Amazon Cognito
(Sync)
AWS Identity and
Access Management
Amazon Cognito
(Identity Broker)
Store and share content
Deliver media
Amazon S3
Transfer Manager
Amazon CloudFront
(Device Detection)
Store shared data
Amazon DynamoDB
(Object Mapper)
Send push notifications
Amazon SNS
Mobile Push
Amazon Lambda
Stream real-time dataRun Business Logic
Amazon Kinesis
(Recorder)
서버 없는 AWS 모바일 게임
8. 푸시 메시지 효과: 고객 경험
180,000
190,000
200,000
210,000
220,000
230,000
9 11 13 15 17 19 21 23 25 27
Game #2P
DAU
Push Notification
서버 장애
DAU 복구 실패
9. 인게임 이벤트 시스템 특징 및 요구사항
여기서는 스테이지 방식의 캐주얼 게임이라 가정하며,
이벤트는 특정 스테이지에서 아이템 획득률 상승 및 스테이지 아이템 할인, 난이도 상승으로 가정.
• 매일 혹은 일정 주기로 반복 또는 특정일에 이벤트 진행
• 사용자에게 시작시간과 얻을 수 있는 혜택 등의 정보를 알려주어야 함
• 사용자의 순간적인 접속 증가로 인해 인프라에 높은 부하를 야기할 수 있음
• 주기적으로 반복적인 개발 혹은 운영 업무를 진행하여야 함
• 게임 진행 상황 및 사용자의 행동을 분석하여 다음 이벤트에 반영하여야 함
10. 인게임 이벤트 시스템 아키텍처
Kinesis
Firehose
Amazon SNS
Amazon S3Amazon
Elasticsearch
Lambda
Lambda
Scheduling
매일 13시/18시
푸시 메시지 발송 및 이벤트 개시/종료
매일 12시 30분
게임 서버 확장
Lambda
Scheduling
12시 30분 13시 ~ 18시
근 실시간 분석
11. 이벤트에 대한 응답으로 작성한 코드를 실행하는 컴퓨팅 서비스
• 이벤트 트리거들:
• 비동기적 혹은 동기적인 직접 호출을 통해
• Amazon S3 버킷으로의 오브젝트 업로드를 통해
• API Gateway 엔드포인트 호출을 통해
• Amazon SNS 메시지를 통해
• 그 이외에도 다양한 방법으로
• 사용처:
• 데이터 기반의 감사, 분석 및 알림 등을 수행할 때
• 자동으로 확장하는 백엔드 서비스를 만들 때
AWS Lambda
12. AWS Lambda 의 이점
지속적으로 확장관리할 서버 없이
코드가 각 트리거의 응답에
따라 실행되어 자동으로 확장.
코드는 병렬로 실행하고
개별적으로 트리거를 처리,
워크로드의 볼륨에 정확하게
맞춰 확장
1초 이하의 미터링
매 100ms의 코드 실행
시간과 코드가 실행된
횟수에 따라 비용이 발생,
코드가 실행되지 않을 땐
그 어떤 과금도 발생 안함
서버를 준비하거나 관리할 필요
없이 코드를 자동으로 실행.
코드를 작성하여 업로드만
하면 작동함
1 2 3
13. AWS Lambda 업데이트
1. Python 함수 지원
2. 함수 실행시간 증가
3. 함수 버전 및 별칭 지원
4. 함수 스케줄링 지원
5. VPC 내 리소스 접근 가능 (아직 출시 되지 않음)
16. AWS Lambda 업데이트
Python 함수 지원
Python 함수 예제
- Amazon S3 버킷이 이벤트를 트리거하고 Lambda 에서는 객체의 메타데이터를 확인
17. AWS Lambda 업데이트
함수 실행시간 증가
60초의 실행시간 제한이 300초로 증가
비디오 트랜스코딩이나 ETL 애플리케이션과 같은 더 복잡한 코드 실행 가능
다음의 코드로 함수가 종료되기까지 남은 시간을 확인 가능
18.
19. AWS Lambda 업데이트
함수 버전 및 별칭 지원
동일한 Lambda 함수의 다양한 버전들을 업로드하고 관리
각 함수 버전은 자체 설정 정보를 포함(언어, 런타임, 메모리 크기 및 타임
아웃 등)
각 버전은 자체적인 CloudWatch 측정값을 생성
CloudWatch 로그는 스트림 이름에 함수 버전을 포함
Lambda 에서는 각 함수마다 다중 버전을 저장, 1.5GB 까지 코드를 저장
한 뒤 이전 버전은 삭제
20.
21.
22.
23.
24.
25.
26.
27. AWS Lambda 업데이트
함수 스케줄링 지원
스케줄에 따라 Lambda 함수를 실행
Cleanup, Aggregation, 모니터링 작업 같은 배치성 작업 처리 가능
이벤트 소스 선택시 Scheduled event를 선택할 수 있고 드롭다운 리스트에서
rate 와 cron 을 선택하여 설정할 수 있음
28. AWS Lambda 업데이트 (미리보기)
VPC 내 리소스 접근
Lambda 함수 내에서 VPC 내의 리소스들에 접근
EC2, ELB, RDS, ElastiCache, Redshift 등 VPC 내의 private 리소스에 접근 가능
사용할 서브넷과 시큐리티 그룹을 선택할 수 있음
29. 인게임 이벤트 시스템 아키텍처
Kinesis
Firehose
Amazon SNS
Amazon S3Amazon
Elasticsearch
Lambda
Lambda
Scheduling
매일 13시/18시
푸시 메시지 발송 및 이벤트 개시/종료
매일 12시 30분
게임 서버 확장
Lambda
Scheduling
12시 30분 13시 ~ 18시
근 실시간 분석
32. Lambda 함수 스케줄링
• 스케줄에 맞춰 Lambda 함수를 실행
• 두가지 표현 형식 지원
• rate(Value Unit)
- Value: 양수, Unit: minute(s) / hour(s) / day(s)
- Ex, rate(1 minute), rate(5 minutes), rate(1 hour), rate(7 hours), rate(1 day), rate(10 days)
• cron(Minutes Hours Day-of-month Month Day-of-week Year)
- cron(0 10 * * ? *) => 매일 10시에
- cron(15 12 * * ? *) => 매일 12시 15분에
- cron(0 18 ? * MON-FRI *) => 주중 18시에
- cron(0/10 8-17* ? * MON-FRI *) => 주중 8시부터 17시 사이 매 10분마다
33. 인게임 이벤트 시스템 아키텍처
Kinesis
Firehose
Amazon SNS
Amazon S3Amazon
Elasticsearch
Lambda
Lambda
Scheduling
매일 13시/18시
푸시 메시지 발송 및 이벤트 개시/종료
매일 12시 30분
게임 서버 확장
Lambda
Scheduling
12시 30분 13시 ~ 18시
근 실시간 분석
34. Amazon Kinesis
Streams
스트리밍 데이터를 처리하
거나 분석하는 커스텀 애플
리케이션을 개발
Amazon Kinesis
Firehose
방대한 볼륨의 스트리밍
데이터를 Amazon S3나
Redshift 로 쉽게 로드
Amazon Kinesis
Analytics
표준 SQL 쿼리를 이용하여
데이터 스트림을 쉽게 분석
Amazon Kinesis: 스트리밍 데이터를 쉽게 이용
AWS 에서 실시간 데이터 스트림 관련 작업을 쉽게하는 서비스
36. • Zero administration: 애플리케이션 개발 및 관리 인프라 없이 S3 또는 Redshift로 스트리밍 데이터를
캡처하여 전송
• Direct-to-data store integration: 간단한 설정만으로 스트리밍 데이터를 일괄처리, 압축, 암호화
하여 거의 60초 이내에 목적지에 전송
• Seamless elasticity: 특별한 개입없이 데이터 처리량에 맞는 원활한 확장
Firehose 로 스트리밍 데이터를
캡처하고 전송
Firehose는 지속적으로 S3 또는 Redshift로
스트리밍 데이터를 로드
선호하는 BI 툴들을 사용하여 스트리밍 데이터를 분석
Amazon Kinesis Firehose
방대한 양의 스트리밍 데이터를 Amazon S3 나 Amazon Redshift 로 쉽게 로드
37. Amazon Kinesis Firehose
3가지 간단한 컨셉
1. Delivery Stream(전송 스트림): Firehose 의 기본 엔터티. 전송 스트림을 생성 후
대상을 지정하고 데이터를 보낼 수 있음.
• 스트림 또는 샤드를 생성할 필요 없음
• 파티션 키를 지정할 필요 없음
2. Records(레코드): 데이터 생선자가 전송 스트림에 전송하는 대상 데이터. 최대 크기
는 Base64 인코딩 전 1,000KB.
3. Data Producers(데이터 생산자): 전송 스트림에 데이터를 전송하는 역활을 수행.
예를들어, 웹 서버는 로그 데이터를 전송 스트림에 전달하는 데이터 생산자임.
44. Amazon Kinesis Firehose – Redshift
두단계 절차
• 중간 저장소로 직접 제공한 S3 버킷을 사용
• Redshift 에 대규모의 데이터를 로드하는 가장 효율적인 방법
• 데이터 손실 없음, 언제나 안전함, S3 버킷에서 확인 가능1
45. Amazon Kinesis Firehose – Redshift
두단계 절차
• 중간 저장소로 직접 제공한 S3 버킷을 사용
• Redshift 에 대규모의 데이터를 로드하는 가장 효율적인 방법
• 데이터 손실 없음, 언제나 안전함, S3 버킷에서 확인 가능
• 직접 제공한 Redshift에 COPY 명령을 동기적으로 수행함. 이전 COPY
명령이 끝나고 Redshift 로 부터 확인이 되면 COPY 명령을 지속적으로
수행.
1
2
47. Amazon Kinesis Agent
• 파일을 모니터링하여 새로운 데이터를 전송 스트림에 보냄
• 파일 로테이션, 체크포인트, 실패시 재시도를 처리
• 신뢰성을 가지고 적시에 간단한 방식으로 모든 데이터를 전달
• 스트리밍 프로세스의 문제해결과 더 나은 모니터링을 위해 CloudWatch
메트릭을 보냄
• Amazon Linux AMI 버전 2015.09 또는 그 이후 버전이나 Red Hat Enterprise Linux 버전 7 또는
그 이후 버전에서 지원. 웹 서버나, 프론트 엔드, 로그 서버 등의 Linux 기반의 서버 환경에서 설치.
• Kinesis Streams 에도 사용 가능
49. Amazon Kinesis Streams 와 Firehose
Amazon Kinesis Streams 는 1초 이하의 처리 지연으로 스트리밍되는 각 레코드마다
커스텀 처리를 수행하고 선택적으로 스트림 처리 프레임워크들을 사용할 수 있는
워크로드에 맞는 서비스
Amazon Kinesis Firehose 는 관리 운영 없이 S3 또는 Redshift 를 기반으로하는
기존 분석 툴들을 그대로 사용할 수 있고 60초 또는 그 이상의 데이터 지연을 요구하는
워크로드에 맞는 서비스
50. 인게임 이벤트 시스템 아키텍처
Kinesis
Firehose
Amazon SNS
Amazon S3Amazon
Elasticsearch
Lambda
Lambda
Scheduling
매일 13시/18시
푸시 메시지 발송 및 이벤트 개시/종료
매일 12시 30분
게임 서버 확장
Lambda
Scheduling
12시 30분 13시 ~ 18시
근 실시간 분석
52. 인게임 이벤트 시스템 아키텍처
Kinesis
Firehose
Amazon SNS
Amazon S3Amazon
Elasticsearch
Lambda
Lambda
Scheduling
매일 13시/18시
푸시 메시지 발송 및 이벤트 개시/종료
매일 12시 30분
게임 서버 확장
Lambda
Scheduling
12시 30분 13시 ~ 18시
근 실시간 분석
53. Amazon Elasticsearch Service
Amazon Elasticsearch Service 는 클라우드에서 Elasticsearch 클러스터를
쉽게 구성하고, 운영하며 확장할 수 있는 관리형 서비스
쉽게 클러스터를 구성하고
설정을 관리
IAM 를 통한 보안
Amazon CloudWatch를
통한 모니터링
CloudTrail 을 통한 감사
AWS 서비스들과 통합 가능
(CloudWatch Logs,
Amazon DynamoDB,
Amazon S3, Amazon Kinesis)
ELK 를 지원
58. • 스트림에 SQL 적용: 데이터 스트림에 쉽게 연결하고 기존 SQL 기술을 적용
• 실시간 애플리케이션 개발: 서브-초 처리 지연의 스트리밍 빅데이터에 대한 연속적인 처리
• 탄력적인 확장: 운영자의 개입없이 데이터 처리 속도에 맞게 탄력적으로 확장
Amazon Kinesis Analytics
표준 SQL 쿼리를 이용하여 데이터 스트림을 쉽게 분석
Kinesis Streams 또는 Firehose
전송 스트림에 연결
데이터 스트림에 표준 SQL
쿼리문을 수행
Kinesis Analytics 는 처리된 데이터를
분석 툴로 보낼 수 있어 실시간 응답이나
알림을 만들 수 있음
59. 인게임 이벤트 시스템 아키텍처
Kinesis
Firehose
Amazon SNS
Amazon S3Amazon
Elasticsearch
Lambda
Lambda
Scheduling
매일 13시/18시
푸시 메시지 발송 및 이벤트 개시/종료
매일 12시 30분
게임 서버 확장
Lambda
Scheduling
12시 30분 13시 ~ 18시
근 실시간 분석
61. • http://bit.ly/1Ll3wc9 : Build a Serverless Mobile Game w/ Cognito, Lam
bda & DynamoDB
• http://bit.ly/1X6KNb5 : New! Streaming Data Flows with Amazon Kinesi
s Firehose
• http://bit.ly/1Ll3ilr : Amazon Kinesis Capture, Deliver, and Process Real
-time Data Streams on AWS
• http://bit.ly/1kDTBJG : AWS Lambda and the Serverless Cloud
참고자료