aws 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

62
서버 없는 컴퓨팅 아키텍처 구축 - AWS Lambda / Amazon Kinesis 김필중 솔루션즈 아키텍트, 아마존 웹서비스 코리아

Upload: amazon-web-services-korea

Post on 13-Jan-2017

1.625 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

서버 없는 컴퓨팅 아키텍처 구축 - AWS Lambda / Amazon Kinesis

김필중 솔루션즈 아키텍트, 아마존 웹서비스 코리아

Page 2: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

• 서버 없는 컴퓨팅 - 인게임 이벤트 시스템 설계

• AWS Lambda 의 새로운 기능

• Amazon Kinesis 의 새로운 기능

이번 세션에서는

Page 3: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

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 data Run Business Logic Amazon Kinesis (Recorder)

서버 없는 AWS 모바일 게임

Page 4: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

인게임 이벤트 시스템 설계

Page 5: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Revenue DAU

새해 기념 할인

한글날 기념 할인

광복절 이벤트

미디어 광고

추석 맞이 신규 유닛 추가

크리스마스 업데이트

할로윈 이벤트

왜 인게임 이벤트가 중요한가?

Page 6: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

장기적인 리텐션의 중요성

•  거의 대부분의 수입은 적어도 100번 이상 플레이를 한 유저로부터 발생

•  게임 매출 향상을 위해 할 수 있는 최선의 방법은 장기적인 리텐션에 집중하는 것일 것

Source: kongregate

Page 7: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

푸시 메시지 효과

Source: Urban Airship

Page 8: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

푸시 메시지 효과: 고객 경험

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 복구 실패

Page 9: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

인게임 이벤트 시스템 특징 및 요구사항

여기서는 스테이지 방식의 캐주얼 게임이라 가정하며,

이벤트는 특정 스테이지에서 아이템 획득률 상승 및 스테이지 아이템 할인, 난이도 상승으로 가정.

•  매일 혹은 일정 주기로 반복 또는 특정일에 이벤트 진행

•  사용자에게 시작시간과 얻을 수 있는 혜택 등의 정보를 알려주어야 함

•  사용자의 순간적인 접속 증가로 인해 인프라에 높은 부하를 야기할 수 있음

•  주기적으로 반복적인 개발 혹은 운영 업무를 진행하여야 함

•  게임 진행 상황 및 사용자의 행동을 분석하여 다음 이벤트에 반영하여야 함

Page 10: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

인게임 이벤트 시스템 아키텍처

Kinesis Firehose

Amazon SNS

Amazon S3 Amazon Elasticsearch

Lambda

Lambda Scheduling

매일 13시/18시 푸시 메시지 발송 및 이벤트 개시/종료

매일 12시 30분 게임 서버 확장

Lambda Scheduling

12시 30분 13시 ~ 18시

근 실시간 분석

Page 11: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

이벤트에 대한 응답으로 작성한 코드를 실행하는 컴퓨팅 서비스

• 이벤트 트리거들: •  비동기적 혹은 동기적인 직접 호출을 통해 •  Amazon S3 버킷으로의 오브젝트 업로드를 통해 •  API Gateway 엔드포인트 호출을 통해 •  Amazon SNS 메시지를 통해 •  그 이외에도 다양한 방법으로

• 사용처: •  데이터 기반의 감사, 분석 및 알림 등을 수행할 때 •  자동으로 확장하는 백엔드 서비스를 만들 때

AWS Lambda

Page 12: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

AWS Lambda 의 이점

지속적으로 확장 관리할 서버 없이

코드가 각 트리거의 응답에 따라 실행되어 자동으로 확장.

코드는 병렬로 실행하고 개별적으로 트리거를 처리, 워크로드의 볼륨에 정확하게

맞춰 확장

1초 이하의 미터링

매 100ms의 코드 실행 시간과 코드가 실행된

횟수에 따라 비용이 발생, 코드가 실행되지 않을 땐 그 어떤 과금도 발생 안함

서버를 준비하거나 관리할 필요 없이 코드를 자동으로 실행. 코드를 작성하여 업로드만

하면 작동함

1 2 3

Page 13: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

AWS Lambda 업데이트

1.  Python 함수 지원

2.  함수 실행시간 증가

3.  함수 버전 및 별칭 지원

4.  함수 스케줄링 지원

5.  VPC 내 리소스 접근 가능 (아직 출시 되지 않음)

Page 14: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

AWS Lambda 업데이트 Python 함수 지원

Python 2.7 지원

Python 함수를 작성하여 Lambda 에 업로드하여 사용 가능함

Page 15: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
Page 16: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

AWS Lambda 업데이트 Python 함수 지원

Python 함수 예제

- Amazon S3 버킷이 이벤트를 트리거하고 Lambda 에서는 객체의 메타데이터를 확인

Page 17: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

AWS Lambda 업데이트 함수 실행시간 증가

60초의 실행시간 제한이 300초로 증가

비디오 트랜스코딩이나 ETL 애플리케이션과 같은 더 복잡한 코드 실행 가능

다음의 코드로 함수가 종료되기까지 남은 시간을 확인 가능

Page 18: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
Page 19: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

AWS Lambda 업데이트 함수 버전 및 별칭 지원

동일한 Lambda 함수의 다양한 버전들을 업로드하고 관리

각 함수 버전은 자체 설정 정보를 포함(언어, 런타임, 메모리 크기 및 타임아웃 등)

각 버전은 자체적인 CloudWatch 측정값을 생성

CloudWatch 로그는 스트림 이름에 함수 버전을 포함

Lambda 에서는 각 함수마다 다중 버전을 저장, 1.5GB 까지 코드를 저장한 뒤 이전 버전은 삭제

Page 20: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
Page 21: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
Page 22: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
Page 23: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
Page 24: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
Page 25: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
Page 26: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
Page 27: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

AWS Lambda 업데이트 함수 스케줄링 지원

스케줄에 따라 Lambda 함수를 실행

Cleanup, Aggregation, 모니터링 작업 같은 배치성 작업 처리 가능

이벤트 소스 선택시 Scheduled event를 선택할 수 있고 드롭다운 리스트에서 rate 와 cron 을 선택하여 설정할 수 있음

Page 28: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

AWS Lambda 업데이트 (미리보기) VPC 내 리소스 접근

Lambda 함수 내에서 VPC 내의 리소스들에 접근

EC2, ELB, RDS, ElastiCache, Redshift 등 VPC 내의 private 리소스에 접근 가능

사용할 서브넷과 시큐리티 그룹을 선택할 수 있음

Page 29: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

인게임 이벤트 시스템 아키텍처

Kinesis Firehose

Amazon SNS

Amazon S3 Amazon Elasticsearch

Lambda

Lambda Scheduling

매일 13시/18시 푸시 메시지 발송 및 이벤트 개시/종료

매일 12시 30분 게임 서버 확장

Lambda Scheduling

12시 30분 13시 ~ 18시

근 실시간 분석

Page 30: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

게임 서버 확장 Lambda 함수

Page 31: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

게임 서버 확장 Lambda 함수

Page 32: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

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분마다

Page 33: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

인게임 이벤트 시스템 아키텍처

Kinesis Firehose

Amazon SNS

Amazon S3 Amazon Elasticsearch

Lambda

Lambda Scheduling

매일 13시/18시 푸시 메시지 발송 및 이벤트 개시/종료

매일 12시 30분 게임 서버 확장

Lambda Scheduling

12시 30분 13시 ~ 18시

근 실시간 분석

Page 34: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Streams

스트리밍 데이터를 처리하거나 분석하는 커스텀 애플

리케이션을 개발

Amazon Kinesis Firehose

방대한 볼륨의 스트리밍 데이터를 Amazon S3나 Redshift 로 쉽게 로드

Amazon Kinesis Analytics

표준 SQL 쿼리를 이용하여 데이터 스트림을 쉽게 분석

Amazon Kinesis: 스트리밍 데이터를 쉽게 이용 AWS 에서 실시간 데이터 스트림 관련 작업을 쉽게하는 서비스

Page 35: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Kinesis 사용 고객 사례

Ad Tech Gaming IoT

Page 36: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

•  Zero administration: 애플리케이션 개발 및 관리 인프라 없이 S3 또는 Redshift로 스트리밍 데이터를 캡처하여 전송

•  Direct-to-data store integration: 간단한 설정만으로 스트리밍 데이터를 일괄처리, 압축, 암호화하여 거의 60초 이내에 목적지에 전송

•  Seamless elasticity: 특별한 개입없이 데이터 처리량에 맞는 원활한 확장

Firehose 로 스트리밍 데이터를 캡처하고 전송

Firehose는 지속적으로 S3 또는 Redshift로 스트리밍 데이터를 로드

선호하는 BI 툴들을 사용하여 스트리밍 데이터를 분석

Amazon Kinesis Firehose 방대한 양의 스트리밍 데이터를 Amazon S3 나 Amazon Redshift 로 쉽게 로드

Page 37: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Firehose 3가지 간단한 컨셉

1.  Delivery Stream(전송 스트림): Firehose 의 기본 엔터티. 전송 스트림을 생성 후 대상을 지정하고 데이터를 보낼 수 있음. •  스트림 또는 샤드를 생성할 필요 없음

•  파티션 키를 지정할 필요 없음

2.  Records(레코드): 데이터 생선자가 전송 스트림에 전송하는 대상 데이터. 최대 크기는 Base64 인코딩 전 1,000KB.

3.  Data Producers(데이터 생산자): 전송 스트림에 데이터를 전송하는 역활을 수행. 예를들어, 웹 서버는 로그 데이터를 전송 스트림에 전달하는 데이터 생산자임.

Page 38: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis 콘솔

Page 39: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Firehose 콘솔

Page 40: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Firehose 콘솔 (S3) 앱 개발 없이 전송을 위한 완전히 관리되는 리소스 생성

Page 41: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Firehose 콘솔 콘솔을 사용하여 간단히 데이터 전송 옵션들을 설정

Page 42: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Firehose 콘솔 콘솔을 사용하여 간단히 데이터 전송 옵션들을 설정

-  Buffer Size : 1 MB – 128 MB -  Buffer Interval : 60 – 900 Seconds -  GZIP, ZIP, SNAPPY (Redshift 는 GZIP 만!)

Page 43: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Firehose - Redshift

Page 44: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Firehose – Redshift 두단계 절차

• 중간 저장소로 직접 제공한 S3 버킷을 사용

• Redshift 에 대규모의 데이터를 로드하는 가장 효율적인 방법

• 데이터 손실 없음, 언제나 안전함, S3 버킷에서 확인 가능 1

Page 45: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Firehose – Redshift 두단계 절차

• 중간 저장소로 직접 제공한 S3 버킷을 사용

• Redshift 에 대규모의 데이터를 로드하는 가장 효율적인 방법

• 데이터 손실 없음, 언제나 안전함, S3 버킷에서 확인 가능

• 직접 제공한 Redshift에 COPY 명령을 동기적으로 수행함. 이전 COPY 명령이 끝나고 Redshift 로 부터 확인이 되면 COPY 명령을 지속적으로 수행.

1

2

Page 46: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Firehose 콘솔 콘솔을 사용하여 간단히 Redshift 로 데이터 전달을 설정

Page 47: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Agent

• 파일을 모니터링하여 새로운 데이터를 전송 스트림에 보냄

• 파일 로테이션, 체크포인트, 실패시 재시도를 처리

• 신뢰성을 가지고 적시에 간단한 방식으로 모든 데이터를 전달

• 스트리밍 프로세스의 문제해결과 더 나은 모니터링을 위해 CloudWatch 메트릭을 보냄

•  Amazon Linux AMI 버전 2015.09 또는 그 이후 버전이나 Red Hat Enterprise Linux 버전 7 또는 그 이후 버전에서 지원. 웹 서버나, 프론트 엔드, 로그 서버 등의 Linux 기반의 서버 환경에서 설치.

• Kinesis Streams 에도 사용 가능

Page 48: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Firehose? Amazon Kinesis Streams? 뭘 써야 하지?

Page 49: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Streams 와 Firehose

Amazon Kinesis Streams 는 1초 이하의 처리 지연으로 스트리밍되는 각 레코드마다 커스텀 처리를 수행하고 선택적으로 스트림 처리 프레임워크들을 사용할 수 있는 워크로드에 맞는 서비스

Amazon Kinesis Firehose 는 관리 운영 없이 S3 또는 Redshift 를 기반으로하는 기존 분석 툴들을 그대로 사용할 수 있고 60초 또는 그 이상의 데이터 지연을 요구하는 워크로드에 맞는 서비스

Page 50: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

인게임 이벤트 시스템 아키텍처

Kinesis Firehose

Amazon SNS

Amazon S3 Amazon Elasticsearch

Lambda

Lambda Scheduling

매일 13시/18시 푸시 메시지 발송 및 이벤트 개시/종료

매일 12시 30분 게임 서버 확장

Lambda Scheduling

12시 30분 13시 ~ 18시

근 실시간 분석

Page 51: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

푸시 메시지 Lambda 함수

Page 52: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

인게임 이벤트 시스템 아키텍처

Kinesis Firehose

Amazon SNS

Amazon S3 Amazon Elasticsearch

Lambda

Lambda Scheduling

매일 13시/18시 푸시 메시지 발송 및 이벤트 개시/종료

매일 12시 30분 게임 서버 확장

Lambda Scheduling

12시 30분 13시 ~ 18시

근 실시간 분석

Page 53: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Elasticsearch Service

Amazon Elasticsearch Service 는 클라우드에서 Elasticsearch 클러스터를 쉽게 구성하고, 운영하며 확장할 수 있는 관리형 서비스

쉽게 클러스터를 구성하고설정을 관리

IAM 를 통한 보안 Amazon CloudWatch를 통한 모니터링 CloudTrail 을 통한 감사

AWS 서비스들과 통합 가능 (CloudWatch Logs, Amazon DynamoDB, Amazon S3, Amazon Kinesis)

ELK 를 지원

Page 54: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
Page 55: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

인게임 이벤트 시스템 데이터 분석

Page 56: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

이벤트 기간내 Top 10 결제 유저

이벤트 스테이지에서 결제 발생 횟수 및 금액

스테이지별 결제 발생 횟수 (녹색: 이벤트 스테이지)

이벤트 대상 아이템 획득 횟수

전체 아이템 획득 횟수(3: 이벤트 아이템)

스테이지별 클리어 성공 및 실패 횟수

Page 57: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

Amazon Kinesis Analytics

Page 58: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

•  스트림에 SQL 적용: 데이터 스트림에 쉽게 연결하고 기존 SQL 기술을 적용

•  실시간 애플리케이션 개발: 서브-초 처리 지연의 스트리밍 빅데이터에 대한 연속적인 처리

•  탄력적인 확장: 운영자의 개입없이 데이터 처리 속도에 맞게 탄력적으로 확장

Amazon Kinesis Analytics 표준 SQL 쿼리를 이용하여 데이터 스트림을 쉽게 분석

Kinesis Streams 또는 Firehose 전송 스트림에 연결

데이터 스트림에 표준 SQL 쿼리문을 수행

Kinesis Analytics 는 처리된 데이터를 분석 툴로 보낼 수 있어 실시간 응답이나

알림을 만들 수 있음

Page 59: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

인게임 이벤트 시스템 아키텍처

Kinesis Firehose

Amazon SNS

Amazon S3 Amazon Elasticsearch

Lambda

Lambda Scheduling

매일 13시/18시 푸시 메시지 발송 및 이벤트 개시/종료

매일 12시 30분 게임 서버 확장

Lambda Scheduling

12시 30분 13시 ~ 18시

근 실시간 분석

Page 60: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

User Application

Application Service

Middleware Service

Language Interpreter

Operating System

Host

개발에만 집중하세요!! 매니지드 서비스의 이점을 얻어

Page 61: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

• http://bit.ly/1Ll3wc9 : Build a Serverless Mobile Game w/ Cognito, Lambda & DynamoDB

• http://bit.ly/1X6KNb5 : New! Streaming Data Flows with Amazon Kinesis 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

참고자료

Page 62: AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍

감사합니다!