81
Amazed By AWS Series #2 Client interactions 정윤진 솔루션 아키텍트 [email protected]

Amazed by aws 2nd session

Embed Size (px)

DESCRIPTION

AWS Korea MMN & SA team is delivering 5 deep dive sessions in 5 months, as one of AWS Korea's customer obsession program. This is the 2nd preso.

Citation preview

Page 1: Amazed by aws 2nd session

Amazed By AWS Series #2

Client interactions

정윤진솔루션아키텍트[email protected]

Page 2: Amazed by aws 2nd session

오늘내용

a. INTRO – Ice breaking

b. AWS SDK

c. AWS Mobile SDK

d. Unity / Cordova

e. Amazon AppStream

f. Samples and Demo

Page 3: Amazed by aws 2nd session

시작하기전에.

Page 4: Amazed by aws 2nd session

AWS 명령줄도구

http://aws.amazon.com/ko/cli/

$ sudo pip install awscli

Downloading/unpacking awscli

Downloading awscli-1.5.4.tar.gz (253kB): 253kB downloaded

Running setup.py (path:/private/tmp/pip_build_root/awscli/setup.py) egg_info for package awscli

..

.

Successfully installed awscli botocore bcdoc colorama docutils rsa jmespath pyasn1

Cleaning up...

$

$ aws configure

AWS Access Key ID [None]: XXXXXXXXXXXXXXXXX

AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Default region name [None]: ap-northeast-1

Default output format [None]: json

$

Page 5: Amazed by aws 2nd session

$ aws s3 ls s3://yz-ngs-outputs

PRE Redis-snapshots/

PRE hohoho/

PRE pig-apache/

PRE transfer-test/

PRE wordcount/

2013-06-07 17:56:52 6097048 Elastic Beanstalk for Startups.pptx

2013-05-31 13:33:49 0 HG00099.mapped.SOLID.bfast.GBR.exome.20111114.bam

2013-05-06 15:56:56 132644272 TrendMicro-TTi_6.0_HE_Full.exe

2013-11-10 03:16:23 5188 fabricrc.txt

$

AWS 명령줄도구

Page 6: Amazed by aws 2nd session

ICE BREAKING

Page 7: Amazed by aws 2nd session
Page 8: Amazed by aws 2nd session

Amazon RDS – Aurora

Page 9: Amazed by aws 2nd session

Amazon EC2 Container Service – ECS

Page 10: Amazed by aws 2nd session

https://reinvent.awsevents.com/

https://www.youtube.com/user/AmazonWebServices

re:Cap8th Dec 2014

10th Dec 2014

Page 11: Amazed by aws 2nd session
Page 12: Amazed by aws 2nd session

클라이언트게임

다양한플랫폼

서버데이터베이스디스크

조회 / 저장

인증 / 게임플레이

Page 13: Amazed by aws 2nd session

클라이언트게임

다양한플랫폼

서버데이터베이스디스크

조회 / 저장

인증 / 게임플레이

클라이언트개발

Page 14: Amazed by aws 2nd session

http://i1.wp.com/www.cgmeetup.net/home/wp-content/uploads/2014/06/Behind-the-Scenes-of-Assassins-Creed-Unity-2.jpg?resize=960%2C540

Page 15: Amazed by aws 2nd session

클라이언트게임

다양한플랫폼

서버데이터베이스디스크

조회 / 저장

인증 / 게임플레이

서버개발

Page 16: Amazed by aws 2nd session

http://perso.crans.org/~besson/publis/Bomberman/images/exempletextual_server.png

Page 17: Amazed by aws 2nd session

용사여,

이제새로운던전이열렸습니다.

공대를구성하세요.

Page 18: Amazed by aws 2nd session

만약아래의언어/도구중하나를다룰수있다면,

Java Python (boto) PHP .NET Ruby Node.js

iOS Android AWS Toolkit

for Visual

Studio

AWS Toolkit

for Eclipse

AWS Tools for

Windows

PowerShell

AWS CLI

JavaScript

new!

Page 19: Amazed by aws 2nd session

또는아래와같은도구들과매우친숙하다면,

Page 20: Amazed by aws 2nd session

오늘날의게임서비스 99.99% 의모습

Page 21: Amazed by aws 2nd session

서버개발자라면

SD

K /

AP

I

Page 22: Amazed by aws 2nd session

클라이언트개발자라면

SD

K /

AP

I

Page 23: Amazed by aws 2nd session

EC2 인스턴스실행및중지

Put,Get

DB 실행및백업

성능확인

REST

SOAPAWS SDK

인증토큰

동작방식

Page 24: Amazed by aws 2nd session

인증정보는어디서?IAM 콘솔

사용자

Access Key ID

Secret Key ID

Page 25: Amazed by aws 2nd session

Ruby, PHP, Python

AWS SDK

Page 26: Amazed by aws 2nd session

AWS SDK for PHP

Amazon 기반의 PHP 개발을지원하기위한 SDK

http://aws.amazon.com/sdkforphp

PHP 5.2 이상, (5.2.17 또는 5.3.5 권장)

Extension 의존성- SimpleXML

- JSON

- PCRE

- SPL

- cURL

Page 27: Amazed by aws 2nd session

지원하는 AWS 서비스

Direct Connect

EC2

Elastic Load Balancing

Auto Scaling

EMR

Route 53

VPC

Amazon S3

Amazon Glacier

CloudFront

Storage Gateway

AWS Import/Export

DynamoDB

RDS

Redshift

ElastiCache

SimpleDB

Elastic Beanstalk

CloudFormation

CloudWatch

Data Pipeline

AWS IAM

AWS OpsWorks

Elastic Transcoder

Amazon SQS

Amazon SNS

Amazon SES

Amazon SWF

Amazon CloudSearch

Kinesis

Page 28: Amazed by aws 2nd session

참고자료

다운로드http://aws.amazon.com/sdkforphp

Github

http://aws.amazon.com/sdkforphp

AWS SDK for PHP subversion

svn co http://svn.github.com/amazonwebservices/aws-sdk-for-php.git

PEAR

sudo pear channel-discover pear.amazonwebservices.com

sudo pear install aws/sdk

Page 29: Amazed by aws 2nd session

설정방법

config.inc.php

- SDK에첨부된 config-sample.inc.php 에엑세스키, 비밀키를넣고파일이름을config.inc.php 로변경

PHP 코드에서 SDK 를로딩- require_once ‘sdk.class.php’;

Page 30: Amazed by aws 2nd session

config.inc.php

CFCredentials::set(array(

‘development’ => array(

‘key’ => ‘AKIAIXJXXXXXXXXXXX’,

‘secret’ => ‘sdfli3dfEsfEfGSXVdfestxxxxxxxxx’,

‘default_cache_config’ => ‘./cache’,

‘certificate_authority’ => false

),

‘@default’ => ‘development’

));

Page 31: Amazed by aws 2nd session

DynamoDB PUT

<?php

require_once ‘sdk.class.php’;

$dynamodb = new AmazonDynamoDB();

$dynamodb->

set_region(‘dynamodb.ap-northeast-1.amazonaws.com’);

$response = $dynamodb->put_item(array(

‘TableName’ => $table_name,

‘Item’ => array(

‘Id’ => array(AmazonDynamoDB::TYPE_NUMBER => ‘1’),

‘firstname’ => array(AmazonDynamoDB::TYPE_STRING => ‘Younjin’),

‘lastname’ => array(AmazonDynamoDB::TYPE_STRING => ‘Jeong’))

)

);

Page 32: Amazed by aws 2nd session

PHP SDK 를적용하기좋은예

DynamoDBSessionHandler

- DynamoDB를 사용하여 HTTP 세션을공유

EC2DynamoDB

EC2

EC2

ELB 관리가필요없는고속의세션데이터

저장

Page 33: Amazed by aws 2nd session

DynamoDBSessionHandler 사용예

<?php

require_once ‘sdk.class.php’;

$dynamodb = new AmazonDynamoDB();

$handler = $dyanmodb->register_session_handler(array(

‘table_name’ => ‘my-session-table’

));

session_start();

$_SESSION[‘username’] = ‘younjin’;

$_SESSION[‘role’] = ‘admin’;

session_commit();

>

Page 34: Amazed by aws 2nd session

기타 TIPs

EC2 인스턴스의 Role 연동가능

인스턴스의 Role 은인스턴스가시작할때메타정보에엑세스키를포함하는것이가능IAM 관리콘솔에서 Role 작성이가능EC2 시작시해당 Role 을선택SDK 를호출할때설정파일에서인증정보를읽을수없는경우메타데이터에서인증정보획득을시도Role 을사용하게되면인증정보를파일로 EC2 에넣을필요가없음

Page 35: Amazed by aws 2nd session

AWS SDK for Ruby

Amazon 의 AWS 가개발한 RubySDK

http://aws.amazon.com/sdkforuby

http://ruby.awsblog.com/

지원버전 : 1.08 이후최신버전 : 1.5.7

의존라이브러리 :

- crack

- httparty

- json

- nokogiri

- uuidtools

- Rails integration

Page 36: Amazed by aws 2nd session

지원하는 AWS 서비스

Direct Connect

EC2

Elastic Load Balancing

Auto Scaling

EMR

Route 53

VPC

Amazon S3

Amazon Glacier

CloudFront

Storage Gateway

AWS Import/Export

DynamoDB

RDS

Redshift

ElastiCache

SimpleDB

Elastic Beanstalk

CloudFormation

CloudWatch

Data Pipeline

AWS IAM

AWS OpsWorks

Elastic Transcoder

Amazon SQS

Amazon SNS

Amazon SES

Amazon SWF

Amazon CloudSearch

Kinesis

http://docs.aws.amazon.com/AWSRubySDK/latest/

Page 37: Amazed by aws 2nd session

사용

require ‘aws-sdk’

Access key ID

Secret key ID

config.yaml

Page 38: Amazed by aws 2nd session

require ‘rubygems’

require ‘yaml’

require ‘aws-sdk’

config = YAML.load(File.read(config_file))

AWS.config(config)

사용예

Access key 와 Secret key는가급적권한이제한된 IAM 사용자의것을사용- 접근권한이없으면권한없음에러가발생 -

Page 39: Amazed by aws 2nd session

사용예

s3 = AWS::S3.new

b = s3.buckets.create(bucket_name)

basename = File.basename(file_name)

o = b.objects[basename]

o.write(:file => file_name)

puts o.url_for(:read)

o.delete

Page 40: Amazed by aws 2nd session

Rails 에서의이용방법

SimpleDB 에서의사용

gem “aws-sdk”

bundle install

config/aws.yaml

config/initializers/aws.rb

access_key_id: REPLACE_WITH_ACCESS_KEY_ID

secret_access_key: REPLACE_WITH_SECRET_ACCESS_KEY

require ‘aws’

AWS.config(:logger => Rails.logger)

config_path = File.expand_path(File.dirname(__FILE__)+”/../aws.yaml”)

AWS.config(YAML.load(File.read(config_path)))

Page 41: Amazed by aws 2nd session

AWS SDK for Python (Boto)

Python 용 AWS SDK

http://aws.amazon.com/sdkforpython

Python version 2, 3를모두지원SDK version 3가현재개발자 preview

https://github.com/boto/boto3

시작하기http://aws.amazon.com/developers/getting-started/python/

Page 42: Amazed by aws 2nd session

시작하기

[default]

aws_access_key_id = YOUR_ACCESS_KEY_ID

aws_secret_access_key = YOUR_SECRET_ACCESS_KEY

cd aws-python-sample

python s3_sample.py

git clone https://github.com/awslabs/aws-python-sample.git

pip install boto

Page 43: Amazed by aws 2nd session

사용예

conn = boto.connect_dynamodb()

table_schema = conn.create_schema(

hash_key_name=‘frame_no’,

hash_key_proto_value=‘12345’

)

table = conn.create_table(

name=‘Table Name’,

schema=table_schema,

read_units=10,

write_units=10,

)

for x in xrange(1000);

item = table.new_item(

hash_key=x,

attrs={‘comment’: ‘xxxxxxx’})

item.put()

Page 44: Amazed by aws 2nd session

AWS SDK for .NET

.NET 용 AWS SDK

http://aws.amazon.com/sdkfornet

Windows Store 와 Windows Phone Apps 를지원Amazon DynamoDB 를 .NET class 와매핑하여데이터를저장하는것이가능Amazon DynamoDB 를 Session 저장소로사용하는것이가능멀티스레드가지원되는 S3 TransferUtility 를사용가능S3에 Client-side encryption 을지원

공식블로그http://blogs.aws.amazon.com/net/

Page 45: Amazed by aws 2nd session

DynamoDB JSON support 사용예

//Create a Document from JSON data

var jsonDoc = Document.FromJson(json);

// Use the Document as an attribute

var doc = new Document();

doc["Id"] = 123;

doc["NestedDocument"] = jsonDoc;

// Put the item

table.PutItem(doc);

// Load the item

doc = table.GetItem(42);

// Convert the Document to JSON

var jsonText = doc.ToJson();

var jsonPrettyText = doc["NestedDocument"].AsDocument().ToJsonPretty();

Page 46: Amazed by aws 2nd session

.NET Samples demo

Page 47: Amazed by aws 2nd session

게임서버

SDK

가입고객에게이메일전송

게임내아이템검색서비스제공

세이브포인트,

캐릭터프로파일저장

사용자인증결재관련정보

저장

아이템이미지기타파일저장

로그실시간분석실시간대시보드

게임내 GM 요청

가입고객에게푸시알람

Page 48: Amazed by aws 2nd session

모바일앱에서 AWS 활용법

Page 49: Amazed by aws 2nd session

모바일앱에서의 AWS 활용법

AWS 관리콘솔응용프로그램 어디서나인프라관리및모니터링가능

게임내에서사용자간컨텐츠정보공유를기획한다면아이템의사진, 플레이영상등의컨텐츠를 S3에업로드, 공유

신규생성된아이템에대한데이터를 DynamoDB에저장/참조

사용자수가폭발적으로증가하더라도무리없이처리가가능

유저의게임가입, 등록시메세징구현이필요하다면SNS 와 SQS를조합하여 push notification, 메세지발송

SES를사용하여 Email 을전송

자체서버별도구축없이대량의메세지처리가가능

AWS 를모바일서비스의 Back-end 로사용가능

Page 50: Amazed by aws 2nd session

1. 파일을 S3에업로드, DB에 URL을저장

2. DB 쿼리를통해URL 획득

3. DB를통해획득한URL로 Contents 요청

DynamoDB

S3

AWS를 Backend 로사용한예

Page 51: Amazed by aws 2nd session

SNS와 SQS를사용하여 Pub/Sub

+

1. Publish

2. Notify

SNS topic SQS queue

Page 52: Amazed by aws 2nd session

서버사이드구현을생략

DynamoDB

・메세지저장・채팅그룹과메세지매핑

Simple Notification Service (SNS)

・신규메세지알림

Simple Queue Service (SQS)

・SNS 연동

Simple Storage Service (S3)

・사진, 영상등을저장

awschat – AWS 서비스만으로구성하는채팅어플 : 게시판, 채팅서비스제공

Page 53: Amazed by aws 2nd session

awschat 의동작

1. SQS 큐를작성

채팅그룹의 SNS

topic

클라이언트 A

2. SNS topic에 Subscribe

클라이언트 B

3. 신규메세지저장

4. SNS topic에 Publish

5. SQS를통해통지

0. 메세지목록수신

지난메세지는 DynamoDB 에서검색SQS 에큐를생성, SNS 에 subscribe

Page 54: Amazed by aws 2nd session

awschat 의동작채팅그룹에파일업로드S3에파일업로드후 SNS 를통해알림

채팅그룹의 SNS

topic

클라이언트 A 클라이언트 B

1. 파일업로드

3. SNS topic Publish

4. SQS 를통해통보2. 메세지저장

5. 파일다운로드

Page 55: Amazed by aws 2nd session

비동기일괄처리

Client

Web FrontendWorkers

Job queue

Workers

Job queue

일반 Web application

Android/iOS SDK

Page 56: Amazed by aws 2nd session

로그와이벤트정보집계및처리

Client

Web Frontend 로그이벤트집계

로그이벤트집계

일반 Web application

Android/iOS SDK

Page 57: Amazed by aws 2nd session

SDK에서 AWS를백엔드로사용하면

모바일앱개발에다양한장점:백엔드의개발비용을최소화

백엔드의운용비용을최소화

확장성을걱정할필요없음

엄청난수준의비용절감 (*)

필요에따라 EC2 를도입결정할수있음향후필요한시점에로직을넣은 EC2 를서비스에적용

Page 58: Amazed by aws 2nd session

Security Token Service

AWS에 대한 임시 인증 정보 생성만료시간이정해진인증 정보 (인증 티켓) 발행

Identity and Access Management (IAM)적용가능

사용자에게 다음의 3개 키를 발급 가능 엑세스 ID

비밀 키

세션 토큰

작성한 인증 정보의 유효 기간 설정 가능 기본 12시간 최소 1시간 최대36시간

연장/단축이 불가능

Page 59: Amazed by aws 2nd session

Token Vending Machine

1 STSから

Token Vending Machine (TVM) 을도입•사용자/단말기 인증과토큰발급•각응용프로그램인증및 AWS 인증메커니즘연동서비스

1. Security Token Service에서인증토큰을가져옴

2. 클라이언트에인증토큰을제공

3. 클라이언트는인증토큰을이용하여 AWS에접근

1

2

3

응용프로그램에따라구현가능

Page 60: Amazed by aws 2nd session

STS + 고객사용자인증서비스흐름

Page 61: Amazed by aws 2nd session
Page 62: Amazed by aws 2nd session

Amazon Cognito

User ID(Temp

Credentials)

DynamoDB

End Users

Developer

App w/SDKAccessto AWS Services

Cognito Identity Broker

Login OAUTH/OpenIDAccess Token

Cognito ID, Temp

Credentials

S3

Mobile Analytics

Cognito Sync Store

AWS Managemet

Console

AccessToken

Pool IDRole ARNs

Page 63: Amazed by aws 2nd session

Amazon Kinesis

Cognito Identity Broker

Identity PoolRole ARN

Cognito IDTemporaly Credential

PUT

Amazon Cognito & Beacon

Bluetooth Low Energy 를이용한 Beacon 단말기를배치등록대신응용프로그램을사용하여게스트인증을통한사용자정보획득Beacon 의위치를잡아 Kinesis 로전송, Kinesis 로직은 Heat map 을작성

Page 64: Amazed by aws 2nd session
Page 65: Amazed by aws 2nd session
Page 66: Amazed by aws 2nd session

Amazon AppStream

높은그래픽또는컴퓨팅성능을클라우드에서처리하고그결과및화면을 PC

및태블릿, 모바일단말로스트리밍하는서비스

Page 67: Amazed by aws 2nd session

Amazon AppStream 특징

단말의성능에영향을받지않는응용프로그램을개발

다양한장치에서비스가가능하므로더많은사용자를대상

풍부한응용프로그램을제공가능

Page 68: Amazed by aws 2nd session

멀티플랫폼을고민할필요가없음

기본적으로단말은스트리밍으로어플리케이션의처리결과를확인하는용도, 다양한장치는 AppStream 의클라이언트가지원

Page 69: Amazed by aws 2nd session

손쉬운관리와배포

웹콘솔을통해최신어플리케이션을클라우드에배포최종사용자가응용프로그램의업데이트를인식할필요는없음

어플리케이션은클라이언트로다운로드가필요없으므로,

대량의클라이언트전송량을줄일수있다.

AppStream 에서직접 Auto Scaling 을관리

Page 70: Amazed by aws 2nd session

적용분야

CAD, CAM, CAE 와같이높은 3D 성능및처리량이요구되는어플리케이션

엄청난크기를가진파일의다운로드가필요한 MMORPG 와같은게임

불법복제로인한피해를줄일수있는어플리케이션

의료에사용되는이미지분석및외과수술시뮬레이션등의그래픽처리가요구되는어플리케이션

Page 71: Amazed by aws 2nd session

동작구조

Amazon EC2

(your app)

Amazon AppStream

EC2 인스턴스에서계산및렌더링을

처리

응용프로그램의화면을스트리밍

(Amazon AppStream

STX 프로토콜)

Page 72: Amazed by aws 2nd session

AppStream 호스트및 AppStream 서비스

AppStream 서비스에서사용하는인스턴스

g2.2xlarge

- 15GiB Memory

- 8 vCPU

- 1 x NVIDIA GRID GPU (Kepler GK104)

- 60GB of local instance storage

- 64bit platform

Page 73: Amazed by aws 2nd session

지원되는클라이언트

클라이언트지원 OS

- Android 2.3 (Gingerbread 이후)

- Apple iOS 7.0 이상- Chrome Browser 37 이후- Mac OSX Mountain Lion (10.8.5) 이후- Microsoft Windows 7 이상

스트리밍 Application 동작플랫폼- Windows Server 2008 R2 64bit

클라이언트네트워크- 3Mbps Internet

Page 74: Amazed by aws 2nd session

Amazon AppStream STX protocol

고해상도의화면을스트리밍으로경험

H.264로인코딩된동영상및사운드를 UDP 로전송

사용자의입력을서버에 TCP 로전송

항상클라이언트와의네트워크상황을측정및실시간으로품질에반영

클라이언트엑세스를최적의지역에할당

사용포트STX Service : 80

STX TCP for input : 5900

STX UDP for media ports : 9070-9080

Page 75: Amazed by aws 2nd session

Amazon AppStream Demo

Page 76: Amazed by aws 2nd session

WWW Class

(API call)

Asset store

SDK

https://developer.amazon.com/post/Tx11T5FKD3STFWP/Official-GameCircle-

Plug-In-Available-for-Free-in-the-Unity-Asset-Store.html

http://u3d.as/content/ouija-paw-games-llc/aws-no-sql-dynamo-db-helper/7F2

http://assets.twoorb.com/

Page 77: Amazed by aws 2nd session

게임서버가아닌

단말에서직접!

SDK

가입고객에게이메일전송

게임내아이템검색서비스제공

세이브포인트,

캐릭터프로파일저장

사용자인증결재관련정보

저장

아이템이미지기타파일저장

로그실시간분석실시간대시보드

게임내 GM 요청

가입고객에게푸시알람

Page 78: Amazed by aws 2nd session

Amazon App Store

Page 79: Amazed by aws 2nd session

https://developer.amazon.com/tya/dashboard.html

Test your Android App Now!

Page 80: Amazed by aws 2nd session

다음의사이트를꼭방문해보세요.

http://github.com/awslabs

http://developer.amazon.com

http://aws.amazon.com/game-hosting

http://aws.amazon.com/documentation/

http://aws.amazon.com/blogs

Page 81: Amazed by aws 2nd session

aws.amazon.com/ko/game-hosting