Upload
amazon-web-services-korea
View
612
Download
1
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
오늘내용
a. INTRO – Ice breaking
b. AWS SDK
c. AWS Mobile SDK
d. Unity / Cordova
e. Amazon AppStream
f. Samples and Demo
시작하기전에.
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
$
$ 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 명령줄도구
ICE BREAKING
Amazon RDS – Aurora
Amazon EC2 Container Service – ECS
https://reinvent.awsevents.com/
https://www.youtube.com/user/AmazonWebServices
re:Cap8th Dec 2014
10th Dec 2014
클라이언트게임
다양한플랫폼
서버데이터베이스디스크
조회 / 저장
인증 / 게임플레이
클라이언트게임
다양한플랫폼
서버데이터베이스디스크
조회 / 저장
인증 / 게임플레이
클라이언트개발
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
클라이언트게임
다양한플랫폼
서버데이터베이스디스크
조회 / 저장
인증 / 게임플레이
서버개발
http://perso.crans.org/~besson/publis/Bomberman/images/exempletextual_server.png
용사여,
이제새로운던전이열렸습니다.
공대를구성하세요.
만약아래의언어/도구중하나를다룰수있다면,
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!
또는아래와같은도구들과매우친숙하다면,
오늘날의게임서비스 99.99% 의모습
서버개발자라면
SD
K /
AP
I
클라이언트개발자라면
SD
K /
AP
I
EC2 인스턴스실행및중지
Put,Get
DB 실행및백업
성능확인
REST
SOAPAWS SDK
인증토큰
동작방식
인증정보는어디서?IAM 콘솔
사용자
Access Key ID
Secret Key ID
Ruby, PHP, Python
AWS SDK
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
지원하는 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://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
설정방법
config.inc.php
- SDK에첨부된 config-sample.inc.php 에엑세스키, 비밀키를넣고파일이름을config.inc.php 로변경
PHP 코드에서 SDK 를로딩- require_once ‘sdk.class.php’;
config.inc.php
CFCredentials::set(array(
‘development’ => array(
‘key’ => ‘AKIAIXJXXXXXXXXXXX’,
‘secret’ => ‘sdfli3dfEsfEfGSXVdfestxxxxxxxxx’,
‘default_cache_config’ => ‘./cache’,
‘certificate_authority’ => false
),
‘@default’ => ‘development’
));
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’))
)
);
PHP SDK 를적용하기좋은예
DynamoDBSessionHandler
- DynamoDB를 사용하여 HTTP 세션을공유
EC2DynamoDB
EC2
EC2
ELB 관리가필요없는고속의세션데이터
저장
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();
>
기타 TIPs
EC2 인스턴스의 Role 연동가능
인스턴스의 Role 은인스턴스가시작할때메타정보에엑세스키를포함하는것이가능IAM 관리콘솔에서 Role 작성이가능EC2 시작시해당 Role 을선택SDK 를호출할때설정파일에서인증정보를읽을수없는경우메타데이터에서인증정보획득을시도Role 을사용하게되면인증정보를파일로 EC2 에넣을필요가없음
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
지원하는 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/
사용
require ‘aws-sdk’
Access key ID
Secret key ID
config.yaml
require ‘rubygems’
require ‘yaml’
require ‘aws-sdk’
config = YAML.load(File.read(config_file))
AWS.config(config)
사용예
Access key 와 Secret key는가급적권한이제한된 IAM 사용자의것을사용- 접근권한이없으면권한없음에러가발생 -
사용예
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
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)))
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/
시작하기
[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
사용예
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()
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/
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();
.NET Samples demo
게임서버
SDK
가입고객에게이메일전송
게임내아이템검색서비스제공
세이브포인트,
캐릭터프로파일저장
사용자인증결재관련정보
저장
아이템이미지기타파일저장
로그실시간분석실시간대시보드
게임내 GM 요청
가입고객에게푸시알람
모바일앱에서 AWS 활용법
모바일앱에서의 AWS 활용법
AWS 관리콘솔응용프로그램 어디서나인프라관리및모니터링가능
게임내에서사용자간컨텐츠정보공유를기획한다면아이템의사진, 플레이영상등의컨텐츠를 S3에업로드, 공유
신규생성된아이템에대한데이터를 DynamoDB에저장/참조
사용자수가폭발적으로증가하더라도무리없이처리가가능
유저의게임가입, 등록시메세징구현이필요하다면SNS 와 SQS를조합하여 push notification, 메세지발송
SES를사용하여 Email 을전송
자체서버별도구축없이대량의메세지처리가가능
AWS 를모바일서비스의 Back-end 로사용가능
1. 파일을 S3에업로드, DB에 URL을저장
2. DB 쿼리를통해URL 획득
3. DB를통해획득한URL로 Contents 요청
DynamoDB
S3
AWS를 Backend 로사용한예
SNS와 SQS를사용하여 Pub/Sub
+
1. Publish
2. Notify
SNS topic SQS queue
서버사이드구현을생략
DynamoDB
・메세지저장・채팅그룹과메세지매핑
Simple Notification Service (SNS)
・신규메세지알림
Simple Queue Service (SQS)
・SNS 연동
Simple Storage Service (S3)
・사진, 영상등을저장
awschat – AWS 서비스만으로구성하는채팅어플 : 게시판, 채팅서비스제공
awschat 의동작
1. SQS 큐를작성
채팅그룹의 SNS
topic
클라이언트 A
2. SNS topic에 Subscribe
클라이언트 B
3. 신규메세지저장
4. SNS topic에 Publish
5. SQS를통해통지
0. 메세지목록수신
지난메세지는 DynamoDB 에서검색SQS 에큐를생성, SNS 에 subscribe
awschat 의동작채팅그룹에파일업로드S3에파일업로드후 SNS 를통해알림
채팅그룹의 SNS
topic
클라이언트 A 클라이언트 B
1. 파일업로드
3. SNS topic Publish
4. SQS 를통해통보2. 메세지저장
5. 파일다운로드
비동기일괄처리
Client
Web FrontendWorkers
Job queue
Workers
Job queue
일반 Web application
Android/iOS SDK
로그와이벤트정보집계및처리
Client
Web Frontend 로그이벤트집계
로그이벤트집계
일반 Web application
Android/iOS SDK
SDK에서 AWS를백엔드로사용하면
모바일앱개발에다양한장점:백엔드의개발비용을최소화
백엔드의운용비용을최소화
확장성을걱정할필요없음
엄청난수준의비용절감 (*)
필요에따라 EC2 를도입결정할수있음향후필요한시점에로직을넣은 EC2 를서비스에적용
Security Token Service
AWS에 대한 임시 인증 정보 생성만료시간이정해진인증 정보 (인증 티켓) 발행
Identity and Access Management (IAM)적용가능
사용자에게 다음의 3개 키를 발급 가능 엑세스 ID
비밀 키
세션 토큰
작성한 인증 정보의 유효 기간 설정 가능 기본 12시간 최소 1시간 최대36시간
연장/단축이 불가능
Token Vending Machine
1 STSから
Token Vending Machine (TVM) 을도입•사용자/단말기 인증과토큰발급•각응용프로그램인증및 AWS 인증메커니즘연동서비스
1. Security Token Service에서인증토큰을가져옴
2. 클라이언트에인증토큰을제공
3. 클라이언트는인증토큰을이용하여 AWS에접근
1
2
3
응용프로그램에따라구현가능
STS + 고객사용자인증서비스흐름
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
Amazon Kinesis
Cognito Identity Broker
Identity PoolRole ARN
Cognito IDTemporaly Credential
PUT
Amazon Cognito & Beacon
Bluetooth Low Energy 를이용한 Beacon 단말기를배치등록대신응용프로그램을사용하여게스트인증을통한사용자정보획득Beacon 의위치를잡아 Kinesis 로전송, Kinesis 로직은 Heat map 을작성
Amazon AppStream
높은그래픽또는컴퓨팅성능을클라우드에서처리하고그결과및화면을 PC
및태블릿, 모바일단말로스트리밍하는서비스
Amazon AppStream 특징
단말의성능에영향을받지않는응용프로그램을개발
다양한장치에서비스가가능하므로더많은사용자를대상
풍부한응용프로그램을제공가능
멀티플랫폼을고민할필요가없음
기본적으로단말은스트리밍으로어플리케이션의처리결과를확인하는용도, 다양한장치는 AppStream 의클라이언트가지원
손쉬운관리와배포
웹콘솔을통해최신어플리케이션을클라우드에배포최종사용자가응용프로그램의업데이트를인식할필요는없음
어플리케이션은클라이언트로다운로드가필요없으므로,
대량의클라이언트전송량을줄일수있다.
AppStream 에서직접 Auto Scaling 을관리
적용분야
CAD, CAM, CAE 와같이높은 3D 성능및처리량이요구되는어플리케이션
엄청난크기를가진파일의다운로드가필요한 MMORPG 와같은게임
불법복제로인한피해를줄일수있는어플리케이션
의료에사용되는이미지분석및외과수술시뮬레이션등의그래픽처리가요구되는어플리케이션
동작구조
Amazon EC2
(your app)
Amazon AppStream
EC2 인스턴스에서계산및렌더링을
처리
응용프로그램의화면을스트리밍
(Amazon AppStream
STX 프로토콜)
AppStream 호스트및 AppStream 서비스
AppStream 서비스에서사용하는인스턴스
g2.2xlarge
- 15GiB Memory
- 8 vCPU
- 1 x NVIDIA GRID GPU (Kepler GK104)
- 60GB of local instance storage
- 64bit platform
지원되는클라이언트
클라이언트지원 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
Amazon AppStream STX protocol
고해상도의화면을스트리밍으로경험
H.264로인코딩된동영상및사운드를 UDP 로전송
사용자의입력을서버에 TCP 로전송
항상클라이언트와의네트워크상황을측정및실시간으로품질에반영
클라이언트엑세스를최적의지역에할당
사용포트STX Service : 80
STX TCP for input : 5900
STX UDP for media ports : 9070-9080
Amazon AppStream Demo
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/
게임서버가아닌
단말에서직접!
SDK
가입고객에게이메일전송
게임내아이템검색서비스제공
세이브포인트,
캐릭터프로파일저장
사용자인증결재관련정보
저장
아이템이미지기타파일저장
로그실시간분석실시간대시보드
게임내 GM 요청
가입고객에게푸시알람
Amazon App Store
https://developer.amazon.com/tya/dashboard.html
Test your Android App Now!
다음의사이트를꼭방문해보세요.
http://github.com/awslabs
http://developer.amazon.com
http://aws.amazon.com/game-hosting
http://aws.amazon.com/documentation/
http://aws.amazon.com/blogs
aws.amazon.com/ko/game-hosting