aws summit seoul 2015 - aws를 통한 게임 운영의 정석

81
SEOUL © 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved

Upload: amazon-web-services-korea

Post on 15-Jul-2015

1.365 views

Category:

Technology


7 download

TRANSCRIPT

Page 1: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

SEOUL

© 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved

Page 2: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

© 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved

게임서비스운영

Solutions Architect

정윤진

Page 3: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

https://speakerdeck.com/hatena/jaws-days-2014-miiverse

Page 4: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
Page 5: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

어떻게만든걸까?

• CentOS 6

• MySQL, Redis, Memcached

• Nginx, HAProxy, Squid

• Quagga, OpenSwan, OpenVPN

• Nagios, CloudWatch, Graphite, Mackerel

• Git, Capistrano, Cinamon

• Chef from OPSCODE

https://speakerdeck.com/hatena/jaws-days-2014-miiverse

Page 6: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

신규게임을출시할때마다이런설치작업을반복해야한다면?

Page 7: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Pain points

• 게임을런칭할때마다환경을직접구성

• AMI 기반의버전관리만으로는부족

• 대부분의게임은장르별로유사한구성

• 정기점검으로인한서비스중단은매출에영향

Page 8: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

인프라를코드로관리

Page 9: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

필요할때즉시

사용한만큼지불

신축성

Page 10: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

=프로그래밍가능한플랫폼

Page 11: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

프로그램밍이가능하다면자동화역시가능

Page 12: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

11.6s

신규코드가반영되는속도

(주중)

1,079

한시간동안최대업데이트횟수

10,000

동시에업데이트가발생하는호스트수

30,000

동시에업데이트가발생하는최대호스트수

AMAZON.COM

연속배포(in 2011)

Page 13: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

소프트웨어배포

≠제품출시

Page 14: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

같은일두번하지말자Don’t re:invent the wheel

Page 15: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

DevOps

Page 16: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

DevOps?

• « DevOps란서비스의라이프사이클관리를위해운영과개발의양쪽엔지니어가함께협업하는모델 »

- theagileadmin.com

Page 17: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

선택가능한다양한옵션

• Configuration Management Systems– Puppet

– Chef

– Saltstack

• Deployment Frameworks– CodeDeploy

– AWS Elastic Beanstalk

– AWS OpsWorks

– Ansible

– Fabric

– Capistrano

• Infrastructure Management– CloudFormation

• Containers– Amazon EC2 Container Service

Page 18: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Bootstrapping

Page 19: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

이미지생성 자동구성

시간이소요되는설정(startup time)

거의변경되지않는설정(less change management)

Bootstrapping

Page 20: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

연속배포

(latest code)

환경종속적요소

(dev-test-prod)

Bootstrapping

이미지생성 자동구성

Page 21: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Continuous Integration

Page 22: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Continuous Integration?

• 코드의변경사항이자동으로서비스에배포– Unit / Mock 테스트완료후

• 코드의변경과배포를하나의덩어리로처리하는대신변경발생시마다지속적으로배포

• 버그의빠른발견

• 자동화된배포

• 신속한개발과배포를가능하게함

Page 23: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

개발자

PICK

TASKS

SUBMIT

CODE

SCHEDULE

BUILD

RECURRENT

BUILDS

CODE

FETCHCODE QUALITY

TESTS

TEST

RESULTS

BUILD OUTPUT

DOCS

BINARIES

& PACKAGES

DEV FACING

NOTIFICATIONS

CLOUDFORMATION

AMIS or CONTAINERS

Page 24: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

SOURCE CODE

REPOSITORY

DNS

CONTINUOUS

INTEGRATION SERVER

PROJECT

MANAGEMENT SERVER

BUILDS

Page 25: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

PAIN POINTS• Unit테스트의비종료• MOCK테스트의메인터넌스• 고비용의테스트환경• 테스트환경 ≠실서비스환경• 배포주기

Page 26: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

소프트웨어개발라이프사이클

10/13/14 26

MonitorProvisionDeployTestBuildCode

AWS Elastic Beanstalk

AWS OpsWorks

Amazon

CloudWatch

AWS

CloudFormation

?

Page 27: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

AWS code 서비스

AWS CodeCommit

곧출시됩니다

AWS CodePipeline

곧출시됩니다

AWS CodeDeploy

절찬리판매중

Page 28: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Source Control아마존 S3위에서서비스되는사설 Git코드저장소

• Git완벽호환 (기존의도구그대로사용가능)

• 클라우드사용의잇점을모두도입가능(확장성, 내구성, 신뢰성, 사용량기반의저렴한과금체계)

• 저장소의크기제한없음(바이너리도마음껏저장)

• 온라인도구제공 –코드확인,수정, diff

10/13/14 28

Page 29: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Same Git experience

$ git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/aws-cli

Cloning into 'aws-cli'...

Receiving objects: 100% (16032/16032), 5.55 MiB | 1.25 MiB/s, done.

Resolving deltas: 100% (9900/9900), done.

Checking connectivity... done.

$ nano README.rst

$ git commit -am 'updated README'

[master 4fa0318] updated README

1 file changed, 1 insertion(+)

$ git push

Counting objects: 3, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (3/3), done.

Writing objects: 100% (3/3), 297 bytes | 0 bytes/s, done.

Total 3 (delta 2), reused 0 (delta 0)

remote:

To https://git-codecommit.us-east-1.amazonaws.com/v1/repos/aws-cli

4dacd6d..4fa0318 master -> master

Page 30: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Continuous Delivery커스터마이즈가능한빌드,테스트를포함한배포자동화

• 커스텀된배포자동화흐름을한눈에확인(source build beta gamma prod)

• 자동빌드,테스트,그리고배포

• 커스텀정책,승인및게이트구성이가능

• 3rd party 도구또는커스텀도구와연동가능

10/13/14 30

Page 31: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
Page 32: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

DeploymentEC2 인스턴스그룹에소프트웨어업데이트를조정

• 다운타임없이업데이트가능 -롤링업데이트

• Health check 와함께배포하여손쉬운 Rollback

• 오토스케일연동

• 어떠한어플리케이션과도연동가능

• 기존의설정도구와함께연동가능(Bash, Powershell, Chef, Puppet…)

10/13/14 32

Page 33: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

9/25/14 Slides not intended for

redistribution.

33

Page 34: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Cloud software development lifecycle

10/13/14 34

MonitorProvisionDeployTestBuildCode

AWS Elastic Beanstalk

AWS OpsWorks

CloudWatchCloudFormationCodeDeploy

CodeCommit CodePipeline

Page 35: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

CODECOMMIT

DNS

CODEPIPELINE

PROJECT

MANAGEMENT SERVER

BUILDS

Page 36: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

CONTINUOUS DEPLOYMENT

연속배포작은코드의변경이라도지속적으로서비스시스템에

배포/반영하는것을이르는말

Page 37: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

필수요소 = 반복

Page 38: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

ITERATION (반복)

=사용자를위해지속적으로시스템을더

향상된형태로수정

Page 39: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

© 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved

AWS CLOUDFORMATION스택기반배포서비스

Page 40: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

CLOUDFORMATION

TEMPLATE

Page 41: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

기본워크플로우

디자인

인프라

템플릿생성

어플리케이션

코드생성

스택생성

반복

Page 42: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Infrastructure-as-code workflow

코드

템플릿

버전

컨트롤

코드

리뷰개선

“It’s all software”

Page 43: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Headers

Parameters

Mappings

Resources

Outputs

Page 44: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

{"Description" : "Create RDS with username and password","Resources" : {

"MyDB" : {"Type" : "AWS::RDS::DBInstance","Properties" : {

"AllocatedStorage" : "500","DBInstanceClass" : "db.m1.small","Engine" : "MySQL","EngineVersion" : "5.5","MasterUsername" : "MyName","MasterUserPassword" : "MyPassword"

}}

}}

Page 45: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

"AWS::CloudFormation::Init" : { "config" : {

"packages" : {"yum" : {

"mysql" : [],"mysql-server" : [],"httpd" : [],"php" : [],"php-mysql" : []

}},"sources" : {"/var/www/html" :

"https://s3.amazonaws.com/my-builds/build-v4.zip"}

}

Page 46: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

{"Parameters" : {"KeyName" : {

"Description" : "Name of an existing EC2KeyPair to enable SSHaccess to the instance",

"Type" : "String"}

},}

Page 47: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

CLOUDFORMATION

TEMPLATE

PROCEDURAL

DEFINITION생성

KNOWN

CONFIGURATION코드저장소에템플릿을저장하여관리

PARAMETER

DRIVEN사용자가원하는형태로동적인템플릿구성가능

COLLABORATION다른사람들과파일만공유하면됨

Page 48: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
Page 49: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

어플리케이션버전관리

+인프라버전관리

Page 50: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

CLOUDFORMATION

TEMPLATE

Page 51: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

© 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved

AWS OpsWorks어플리케이션라이프사이클관리서비스

Page 52: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

AWS OpsWorks

• 어플리케이션라이프사이클관리서비스– 빠르고안전한배포구성

– 복잡한인프라에대한확장,관리,모델링등을자동화

– 기본구성을사용하여쉽게사용가능

– 추가비용없음

Page 53: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

OpsWorks의기본구조

EC2인스턴스의OpsWorks Agent

OpsWorkstalks with

Page 54: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

OpsWorks기본구조

OpsWorks에정의된일련의명령을다운로드,

Agent에서 Chef solo(Chef

Zero)에서레시피를실행

EC2인스턴스의OpsWorks Agent

Chef 11.10에서 Chef

Client의 local mode

Page 55: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

OpsWorks요구사항

• Amazon Linux또는 Ubuntu 12.04LTS,14.04LTS기반– 사용자가생성한 AMI역시사용가능

• Chef버전 0.9, 11.4, 11.10지원

• VPC지원– Default VPC, Customer VPC 모두사용가능

• ELB, RDS, CloudFormation, CloudTrail지원

• 신규로구동한인스턴스에서 OpsWorks endpoint 에접근하도록구성가능

Page 56: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

OpsWorks사용방법

• AWS 관리 콘솔

• AWS SDK

• AWS CLI

• OpsWorks Agent CLI

– OpsWorks에서 시작된 인스턴스에 SSH로 로그인하여 agent 전용 명령어를 실행

Page 57: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

첫번째인스턴스를추가

App

서버

Setup Deploy Configure Execute Recipe Shutdown

Page 58: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

첫번째인스턴스를시작하면 Setup이실행

App서버를시작

App

서버

Setup Deploy Configure Execute Recipe Shutdown

Page 59: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Setup실행후 Deploy가자동으로실행

App서버를시작

App

서버

Setup Deploy Configure Execute Recipe Shutdown

Page 60: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

인스턴스가 online되면 Configure가실행

App서버를시작

App

서버

Setup Deploy Configure Execute Recipe Shutdown

Page 61: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

데이터베이스인스턴스추가

App서버시작

App

서버

DB

서버

Setup Deploy Configure Execute Recipe Shutdown

Page 62: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Setup, Deploy자동수행

App서버시작

App

서버

DB

서버

App

서버

DB서버시작

Setup Deploy Configure Execute Recipe Shutdown

Page 63: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

DB서버가 online되면스택의모든인스턴스에서Configure가수행됨

App서버시작

App

서버

DB

서버

DB서버시작

Setup Deploy Configure Execute Recipe Shutdown

Page 64: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

인스턴스를추가

App서버시작

App

서버

DB

서버

App

서버

DB서버시작

Setup Deploy Configure Execute Recipe Shutdown

Page 65: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

Setup, Deploy가자동실행

App서버시작

App

서버

DB

서버

App

서버

DB서버시작

Setup Deploy Configure Execute Recipe Shutdown

App서버시작

Page 66: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

새로운인스턴스가 online이되면스택의모든인스턴스에서 configure가실행됨

App서버시작

App

서버

DB

서버

App

서버

DB서버시작

Setup Deploy Configure Execute Recipe Shutdown

App서버시작

Page 67: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

수동배포

App서버시작

App

서버

DB

서버

App

서버

DB서버시작

Setup Deploy Configure Execute Recipe Shutdown

App서버시작

수동배포실행

Page 68: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

레시피수동실행

App서버시작

DB서버시작

Setup Deploy Configure Execute Recipe Shutdown

App서버시작

수동배포실행

레시피실행

App

서버

DB

서버

App

서버

Page 69: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

인스턴스중지

App서버시작

App

서버

DB

서버

App

서버

DB서버시작

Setup Deploy Configure Execute Recipe Shutdown

App서버시작

수동배포실행

레시피실행 App서버종료

Page 70: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

인스턴스가상태가변경되면 Configure가실행

Setup Deploy Configure Execute Recipe Shutdown

App서버시작

App

서버

DB

서버

App

서버

DB서버시작

App서버시작

수동배포실행

레시피실행 App서버종료

Page 71: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

시간기반으로인스턴스를 rolling update 예

• 매일 지정된 시간에 인스턴스를 시작 / 중지

– 각 인스턴스별로 시간을 늦추어 시작 / 중지

• 인스턴스가 부팅할 때마다 Setup, Deploy 라이프사이클 이벤트에 의해 업데이트되어 최신 버전으로어플리케이션을 구동

Page 72: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

배포한 App 의 rollback

• 1회 이전의 버전의 App 으로도 rollback 이 가능– 예:App의 업데이트를 3회 수행한 경우, 한번 롤백하면 두번째 버전으로, 두번롤백하면 첫번째 버전으로 롤백

• OpsWorks는 기본적으로 5가지 버전의 App 을 보유– 보유하고 있는 버전 수를 넘어 롤백을 시도하면 실패하게되고, 가장 오래된버전으로 적용된다.

– [:opsworks][:deploy_keep_releases]을 변경하여 전체 스택에서 유지할버전의 수를 변경 가능

– 개별 App 버전의 보유 수를 변경하려면[:deploy][‘appshortname’][:keep_releases]를 변경

Page 73: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

CloudWatch를통한모니터링

• OpsWorks는 CloudWatch를 사용하여 다음의 메트릭을 1분 단위로모니터링

• 14개 메트릭 (무료 제공)– CPU(5)

• Idle / User CPU / System CPU / IO Wait / nice(Unix)

– 메모리• 메모리 합계 / 사용중인 메모리 / swap / free / 메모리 버퍼

– 부하 (3)• 1분 / 5분 / 15분 단위 평균 부하

– 프로세스(1)• 프로세스의 수

• 인스턴스의 OS 레벨에서 얻을 수 있는 정보는 OpsWorks 에이전트가수집하여 CloudWatch 서비스로 전송하여 얻어진다.

– 이를 통해 메모리, 프로세스 같은 표준 CloudWatch 모니터링에선 얻을 수 없는데이터도 확인할 수 있다.

Page 74: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

CloudWatch를사용한 OpsWorks모니터링

각레이어별모니터링 인스턴스모니터링

Page 75: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

데이터기반아키텍처

Page 76: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

METRICS @ETSY

Page 77: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

모니터링옵션

CloudWatch

… and many more

Page 78: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

CONTINUOUS DEPLOYMENT

(배포의연속)

=

CONTINUOUS EXPERIMENTATION

(실험의연속)

Page 79: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

CONTINUOUS DEPLOYMENT

(배포의연속)

=

CONTINUOUS IMPROVEMENT

(개선의연속)

Page 80: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

INNOVATE

Page 81: AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

SAN FRANCISCO