모바일 게임에는 사용자 인증, 컨텐츠 제공, 데이터 저장 및 분석은 물론 모네타이제이션을 위한 다양한 기능들의 개발이 요구됩니다. 이를 위해 AWS 를 활용하여 필요한 백엔드를 간단하지만 유저가 많아져도 항상 예측 가능한 성능으로, 또 사용한 만큼만 비용이 발생하는 형태로 구현할 수 있는 방법을 소개합니다.
7. • 모든 서비스에 공통의 인증 메커니즘을 제공
• 간헐적으로 발생하는 네트워크 연결을 자동으로 처리
• 크로스 플랫폼 지원: Android, iOS, Fire OS, Unity, JavaScript
• 모바일 OS에 최적화된 SDK, 예로 단말의 오프라인 캐싱 아키텍처를
사용
• 메모리 사용 최적화; 필요한 서비스만 선택하여 사용
• 최신 플랫폼 향상에 따라 지속적으로 업데이트
10. ”앱 데이터는 안전하고 오프라인에서 사용할 수 있으며 단말간에 동기화 상태를 유지 ”
인증 및 접근
관리 단순화
모바일 장치에서 모든
AWS 서비스에 안전
하게 접근
크로스 디바이스 및
크로스 플랫폼 동기화
보안 모범 사례 구현
장치와 플랫폼에서
사용자 데이터 동기화
인증 공급자을 걸쳐
고유한 아이디로 관리
또는 직접 제공
11. End Users
App with
AWS Mobile SDK Access
to AWS Services
Login OAUTH/OpenID
Access Token
Cognito ID,
Temp Credentials
Access Token
Pool ID
Role ARNs
Cognito ID
(Temp Credentials)
DynamoDB
Developer
Cognito Identity
Broker
S3
Mobile Analytics
Cognito Sync Stor
e
AWS Manage
ment Console
14. Cognito ID
(Temp Credentials)
DynamoDB
End Users
Developer
App with
AWS Mobile SDK
Access
to AWS Services
Cognito Identity
Broker
Get OpenID Token
Username
password
Cognito ID,
Temp Credentials
S3
Mobile Analytics
Cognito Sync
Store
AWS
Management
Console
OIDC Token
Pool ID
Role ARNs
User Authentication
System
(Running on AWS or not)
OIDC Token
OIDC Token
15. 사용자 인증 시스템
몇몇 앱은 인증을 위해 공개 신원 제공자 대신 자신의 사용자
이름과 암호를 갖는 것을 선호
기존 시스템과 손쉬운 통합
Java, Python, Ruby 등의 서버 측 SDK 를 사용하여
GetOpenIdTokenForDeveloperIdentity() 를 구현
매핑을 쉽게 관리
Cognito 는 고유한 Cognito ID 를 사용하여 로그인 시스템
(공개 또는 비공개) 간의 매핑을 관리
자신의
사용자 이름과 암호
16. 오프라인: 클라이언트 SDK는 로컬 SQLite 데이터 저장소를 관리하여
연결을 사용할 수 없는 경우에도 게임이 작동할 수있게 함
속도: 데이터를 읽고 쓰는 메소드는 로컬 SQLite 데이터베이스와만
상호 작용함
지능형 동기화: sync 메소드는 로컬 버전의 데이터를 클라우드 동기화
저장소와 비교하여 델타를 밀어 올리며 새로운 변경 사항을 가져옴
유연한 충돌 해결: sync 메소드는 변경 사항을 먼저 읽은 다음 로컬
변경 사항을 클라우드 동기화 저장소에 기록; 기본적으로 Cognito는
마지막 쓰기가 성공했다고 가정; 개발자는 프로그래밍 방식으로
자체적인 충돌 해결을 재정의하고 구현할 수 있음
로컬 SQLite 캐시
21. 도큐먼트 또는 키-값 어떤 워크로드에도 맞게 확장완전 관리형 NoSQL
접근 제어 이벤트 기반 프로그래밍신속하고 일관성있는
22. 테이블
아이템
속성
파티션 키 정렬 키
필수 요소
Key-value 접근 패턴
데이터 분산처리의 기준
추가 요소 (필수 아님)
1:N 관계 모델에 사용
Rich query 환경을 제공
All items for key
==, <, >, >=, <=
“begins with”
“between”
“contains”
“in”
sorted results
counts
top/bottom N values
24. “DynamoDB 처리량을 최대한으로 활용하려면 파티션 키에 고유 값이 많이 있는
테이블을 만들고, 값이 가능한 한 임의로 매우 균일하게 요청되도록 합니다.”
—DynamoDB 개발자 안내서
•Space: 접근이 키 공간에 균등하게 분산되게
•Time: 요청은 일정한 간격으로 균등하게 수행
29. • 아이템 크기는 작게 유지
• 메타데이터는 DynamoDB에, 큰 blobs 은 S3에 저장
• 매우 높은 규모를 위해 해시키와 함께 테이블을 사용
• time series 데이터 저장을 위해 일, 주, 월 등의 단위로 테이블을 사
용
• 중복제거를 위해 조건 업데이트를 사용
• 모델을 위해 hash-range 테이블과 (또는) GSI를 사용
• 1:N, M:N 관계
• Hot keys 와 Hot partitions 을 피해야함
30. • DynamoDB Accelerator (DAX) 를 통해 데이터를 캐시!
• TTL 을 통해 데이터의 생명주기를 관리!
• AWS Database Migration Service (DMS)를 통해
데이터 마이그레이션을 쉽게!
34. API Gateway를 사용하여
Lambda의 API 호출
스케줄된 이벤트 커스텀 이벤트 소스로
호출
Pull
Kinesis-enabled app
Kinesis stream
Event Push
SNS
S3
API Gateway
REST API
Lambda에 이벤트 푸시 Lambda의 이벤트 풀
커스텀 인증 흐름
Android SDK Cognito
DynamoDB
Lambda
Lambda
Lambda
Lambda
Lambda
Lambda
42. 복수 버전과 환경으로
의 배포를 관리
APIs 정의와 제공
클라우드 리소스들에
대한 접근 권한을 부여
하기 위해 IAM 활용
AWS 인증 시스템 통합
백엔드를 보호하기
위해 DDoS 방어와
요청 쓰로틀링
네트워크 트래픽 관리
43. • API 응답을 저장하기 위한 관리형 캐시
• CloudFront (CDN) 를 통한 응답속도 개선 및 DDoS 방어
• iOS, Android, Javascript 및 Java 를 위한 SDK 생성
• API 정의를 위한 Swagger 지원 (import/export)
• 요청/응답 데이터 변형과 API mocking 지원
45. • 기기에서 발생하는 데이터 수집
• 보통의 KPI 분석
• 리텐션 분석
• 유저 행동 분석
47. 확장성과 Free Tier
의미 있는 지표에 집중;
60분 동안 가용한 사용
리포트
빠름
매일 수백만 사용자로
부터 생성되는
수억개의 이벤트를
수용할 수 있는 확장성
데이터를
직접 소유
”규모와 상관 없이 앱 사용 데이터를 쉽게 수집, 가시화, 이해하기 위한 서비스”
수집된 데이터를 공유
되지 않으며, 재사용되
지 않음
48. 보통의 KPI (Key Business Metrics)
1. Monthly Active Users (MAU)
2. Daily Active Users (DAU)
3. New Users,
4. Daily Sessions,
5. Sticky Factor,
6. 1-Day Retention,
7. Avg. Revenue per DAU,
8. Daily Paying Users,
9. Avg. Paying DAU
50. 사용자가 행한 특정 행동으로 앱에 대한
행동의 통찰력을 얻을 수 있음
얼마나 자주 Custom Event 가 발생하였고,
Attribute 와 Metric 으로 추가 정보를
포함한 리포트를 제공
예제
좋아요/공유
횟수를 추적
레벨별 사용자의
플레이 중지 비율에
대한 이해
사용자 세션별 음악이
재생된 횟수
In-app 아이템의
인기도
58. Amazon S3 에 적재된 데이터를
표준 SQL(Standard SQL) 을 사용하여 쉽게 분석할 수 있는
대화형 쿼리 서비스 (Interactive Query Service)
• Serverless 특징 (인프라 없음, 관리자 없음, 스핀업 시간 없음)
• 오픈 표준과 포맷들을 기반으로 동작
• 성능에 맞춰 튜닝되며 쿼리는 병렬로 처리
• 쿼리 당 과금, 스캔된 TB 당 $5 의 효율적인 비용 (압축 및 파티션을 통해 절약 가능)
61. • 빠르고, 안정적이며, 확장 가능한 완전 관리형 큐 서비스
• 구성요소간에 메시지를 보내고, 저장하고, 수신
• AWS SDK 또는 Java Message Service (JMS) API
고객 주문 큐
주문 메시지
Amazon Cloud
Watch
우선 주문 큐
Client
데드레터
큐
우선 순위 메
시지
Amazon
RDS
Amazon
EC2
스탠다드 큐:
• 한번 이상 전송
• 최대한 순서를 지키려고 함
• 거의 무제한 트랜잭션 수
FIFO 큐:
• 순서를 보장하는 선입 선출
• 정확히 한번 처리
• 초당 300 회의 트랜잭션
62. • 빠르고, 안정적이며, 확장 가능한
완전 관리형 Pub-Sub 서비스
• 메시지 알림이 구독자에게 푸시 됨
• 메시지 Fan-out 을 위해 토픽이 사용됨:
• Amazon SQS 큐
• HTTP 엔드포인트 (웹 서버)
• AWS Lambda 함수
• 모바일 푸시, SMS, 이메일
Amazon SNS
크로스 플랫폼
모바일 푸시
Apple APNS
Google FCM
Amazon ADM
Windows WNS an
d MPNS
Baidu CP
Amazon SNS 를 통해 개발자는 여러 플랫폼에 푸시 알림을 보내고 전 세계 모바일
사용자아게 도달할 수 있습니다.
Android Phones and Tablets
Apple iPhones and iPads
Kindle Fire Devices
Android Phones and Tablets in China
iOS
Windows Desktop and Windows P
hone Devices
63. 지역별 활동별 제품별
KR Korea Daily Actives SurvivalShooter
관심별 티어별 세그먼트별
Unity Premium Top 100 Players
64. Mobile client
(받는이)
2-1. 히스토리 기록
1. 큐 polling
AWS
Lambda
Amazon
DynamoDB
3. 선물 적용
2. 선물 획득
Mobile client
(보내는이)
1. 메시지 전송
3. 메시지 큐에 더함
Amazon
SNS
Amazon
SQS
Mobile client Amazon
SQS
1. 큐 생성
게임 실행 시
2. 정보 업데이트
AWS
Lambda
2-2. 받는이 결정
Redis
Redis
Amazon
DynamoDB
65. 2. 싱크 트리거
AWS
Lambda
3. 보상 적용
Mobile client
1. 싱크
3. 메시지 큐에 더함
Amazon
Cognito
Amazon
SQS
1. 큐 폴링
2. 보상 획득
Redis
Amazon
DynamoDB
68. • 더 적은 결합
• 더 많은 내결함성
• 더 빠른 혁신
• 더 크게 확장 가능
• 더 적은 의존성
Publish-subscribe (pub-sub)
• Broadcast
• Point-to-multipoint
Producer Topic
Consumer
Consumer
Message Queueing
• Asynchronous
• Point-to-point
Producer Queue
Consumer
Consumer
72. 사용자 인증 및 제어
비지니스 로직 수행
사용자 행동 분석
데이터 동기화
콘텐츠 저장, 공유, 전송
푸시 알림 전송
실 시간 데이터 스트림
공유 데이터 저장
대화형 입력 처리리텐션 추적
모바일 게임
AWS Mobile SDK
사용자와 인증 제공
관리
서버 없이 상태 없는
커스텀 코드 실행
디바이스 간의
사용자 설정 동기화
활성 유저,
인게이지먼트 추적
사용자 제작 사진과 미디어
저장, 공유 및 글로벌로 빠르게 전송
메시지를 전송하여
사용자 인게이지먼트 레벨 향상
사용자와 디바이스 간
데이터를 저장 및 쿼리
실 시간 클릭스트림 로그 수집 및
빠르게 동작 수행
실 시간 클릭스트림 로그 수집 및
빠르게 동작 수행
서버 없이 상태 없는
커스텀 코드 실행
73. 사용자 인증 및 제어
비지니스 로직 수행
사용자 행동 분석
데이터 동기화
Amazon Mobile
Analytics
Amazon Cognito
(Sync)
Amazon Lambda
Amazon Cognito
(Identity)
IAM
콘텐츠 저장, 공유, 전송
푸시 알림 전송
Amazon CloudFront
Amazon S3
Amazon SNS Mobile Push
Amazon Pinpoint
실 시간 데이터 스트림
Amazon Kinesis
Amazon Pinpoint
공유 데이터 저장
Amazon DynamoDB
Amazon RDS
대화형 입력 처리리텐션 추적
Amazon Lex
모바일 게임
AWS Mobile SDK