본문 바로가기
정보공유

[정보] AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석

by 날고싶은커피향 2015. 4. 29.

날고싶은 커피향


AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석과 관련된 자료입니다. 

내용 참고 하시기 바랍니다. 




Transcript

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

2. © 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved 게임 서비스 운영 Solutions Architect 정윤진

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

4. 어떻게 만든걸까? 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

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

6. Pain points 게임을 런칭 할때마다 환경을 직접 구성 AMI 기반의 버전 관리만으로는 부족 대부분의 게임은 장르별로 유사한 구성 정기 점검으로 인한 서비스 중단은 매출에 영향

7. 인프라를 코드로 관리

8. 필요할때 즉시 사용한 만큼 지불 신축성

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

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

11. 11.6s 신규 코드가 반영되는 속도 (주중) 1,079 한시간 동안 최대 업데이트 횟수 10,000 동시에 업데이트가 발생하는 호스트 수 30,000 동시에 업데이트가 발생하는 최대 호스트 수 AMAZON.COM 연속 배포 (in 2011)

12. 소프트웨어 배포 제품 출시

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

14. DevOps

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

16. 선택 가능한 다양한 옵션 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

17. Bootstrapping

18. 이미지 생성 자동 구성 시간이 소요되는 설정 (startup time) 거의 변경되지 않는 설정 (less change management) Bootstrapping

19. 연속 배포 (latest code) 환경 종속적 요소 (dev-test-prod) Bootstrapping 이미지 생성 자동 구성

20. Continuous Integration

21. Continuous Integration? 코드의 변경 사항이 자동으로 서비스에 배포 Unit / Mock 테스트 완료 후 코드의 변경과 배포를 하나의 덩어리로 처리하는 대신 변경 발생시 마다 지속적으로 배포 버그의 빠른 발견 자동화된 배포 신속한 개발과 배포를 가능하게 함

22. 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

23. SOURCE CODE REPOSITORY DNS CONTINUOUS INTEGRATION SERVER PROJECT MANAGEMENT SERVER BUILDS

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

25. 소프트웨어 개발 라이프사이클 10/13/14 26 MonitorProvisionDeployTestBuildCode AWS Elastic Beanstalk AWS OpsWorks Amazon CloudWatch AWS CloudFormation ?

26. AWS code 서비스 AWS CodeCommit 곧 출시 됩니다 AWS CodePipeline 곧 출시 됩니다 AWS CodeDeploy 절찬리 판매중

27. Source Control 아마존 S3 위에서 서비스되는 사설 Git 코드 저장소 Git 완벽 호환 (기존의 도구 그대로 사용 가능) 클라우드 사용의 잇점을 모두 도입 가능 (확장성, 내구성, 신뢰성, 사용량 기반의 저렴한 과금 체계) 저장소의 크기 제한 없음(바이너리도 마음껏 저장) 온라인 도구 제공 코드 확인, 수정, diff 10/13/14 28

28. 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

29. Continuous Delivery 커스터마이즈 가능한 빌드, 테스트를 포함한 배포 자동화 커스텀된 배포 자동화 흐름을 한눈에 확인 (source build beta gamma prod) 자동 빌드, 테스트, 그리고 배포 커스텀 정책, 승인 및 게이트 구성이 가능 3rd party 도구 또는 커스텀 도구와 연동 가능 10/13/14 30

30. Deployment EC2 인스턴스 그룹에 소프트웨어 업데이트를 조정 다운타임 없이 업데이트 가능 - 롤링 업데이트 Health check 와 함께 배포하여 손쉬운 Rollback 오토 스케일 연동 어떠한 어플리케이션과도 연동 가능 기존의 설정 도구와 함께 연동 가능 (Bash, Powershell, Chef, Puppet) 10/13/14 32

31. 9/25/14 Slides not intended for 33

32. Cloud software development lifecycle 10/13/14 34 MonitorProvisionDeployTestBuildCode AWS Elastic Beanstalk AWS OpsWorks CloudWatchCloudFormationCodeDeploy CodeCommit CodePipeline

33. CODECOMMIT DNS CODEPIPELINE PROJECT MANAGEMENT SERVER BUILDS

34. CONTINUOUS DEPLOYMENT 연속 배포 작은 코드의 변경이라도 지속적으로 서비스 시스템에 배포/반영하는것을 이르는 말

35. 필수 요소 = 반복

36. ITERATION (반복) = 사용자를 위해 지속적으로 시스템을 더 향상된 형태로 수정

37. © 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved AWS CLOUDFORMATION 스택 기반 배포 서비스

38. CLOUDFORMATION TEMPLATE

39. 기본 워크 플로우 디자인 인프라 템플릿 생성 어플리케이션 코드 생성 스택 생성 반복

40. Infrastructure-as-code workflow 코드 템플릿 버전 컨트롤 코드 리뷰 개선 “It’s all software”

41. Headers Parameters Mappings Resources Outputs

42. { "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" } } } }

43. "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" } }

44. { "Parameters" : { "KeyName" : { "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance", "Type" : "String" } }, }

45. CLOUDFORMATION TEMPLATE PROCEDURAL DEFINITION 생성 KNOWN CONFIGURATION 코드 저장소에 템플릿을 저장하여 관리 PARAMETER DRIVEN 사용자가 원하는 형태로 동적인 템플릿 구성 가능 COLLABORATION 다른 사람들과 파일만 공유하면 됨

46. 어플리케이션 버전 관리 + 인프라 버전 관리

47. CLOUDFORMATION TEMPLATE

48. © 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved AWS OpsWorks 어플리케이션 라이프사이클 관리 서비스

49. AWS OpsWorks 어플리케이션 라이프사이클 관리 서비스 빠르고 안전한 배포 구성 복잡한 인프라에 대한 확장, 관리, 모델링 등을 자동화 기본 구성을 사용하여 쉽게 사용 가능 추가 비용 없음

50. OpsWorks의 기본 구조 EC2 인스턴스의 OpsWorks Agent OpsWorks talks with

51. OpsWorks 기본 구조 OpsWorks에 정의된 일련의 명령을 다운로드, Agent에서 Chef solo(Chef Zero)에서 레시피를 실행 EC2 인스턴스의 OpsWorks Agent Chef 11.10에서 Chef Clientlocal mode

52. 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 에 접근 하도록 구성 가능

53. OpsWorks 사용 방법 AWS 관리 콘솔 AWS SDK AWS CLI OpsWorks Agent CLI OpsWorks에서 시작된 인스턴스에 SSH로 로그인하여 agent 전용 명령어를 실행

54. 첫번째 인스턴스를 추가 App 서버 Setup Deploy Configure Execute Recipe Shutdown

55. 첫번째 인스턴스를 시작하면 Setup이 실행 App서버를 시작 App 서버 Setup Deploy Configure Execute Recipe Shutdown

56. Setup 실행 후 Deploy가 자동으로 실행 App 서버를 시작 App 서버 Setup Deploy Configure Execute Recipe Shutdown

57. 인스턴스가 online되면 Configure가 실행 App 서버를 시작 App 서버 Setup Deploy Configure Execute Recipe Shutdown

58. 데이터베이스 인스턴스 추가 App 서버 시작 App 서버 DB 서버 Setup Deploy Configure Execute Recipe Shutdown

59. Setup, Deploy 자동 수행 App 서버 시작 App 서버 DB 서버 App 서버 DB 서버 시작 Setup Deploy Configure Execute Recipe Shutdown

60. DB 서버가 online되면 스택의 모든 인스턴스에서 Configure 가 수행됨 App 서버 시작 App 서버 DB 서버 DB 서버 시작 Setup Deploy Configure Execute Recipe Shutdown

61. 인스턴스를 추가 App 서버 시작 App 서버 DB 서버 App 서버 DB 서버 시작 Setup Deploy Configure Execute Recipe Shutdown

62. Setup, Deploy 가 자동 실행 App 서버 시작 App 서버 DB 서버 App 서버 DB 서버 시작 Setup Deploy Configure Execute Recipe Shutdown App 서버 시작

63. 새로운 인스턴스가 online이 되면 스택의 모든 인스턴스에서 configure가 실행됨 App 서버 시작 App 서버 DB 서버 App 서버 DB 서버 시작 Setup Deploy Configure Execute Recipe Shutdown App 서버 시작

64. 수동 배포 App 서버 시작 App 서버 DB 서버 App 서버 DB 서버 시작 Setup Deploy Configure Execute Recipe Shutdown App 서버 시작 수동 배포 실행

65. 레시피 수동 실행 App 서버 시작 DB 서버 시작 Setup Deploy Configure Execute Recipe Shutdown App 서버 시작 수동 배포 실행 레시피 실행 App 서버 DB 서버 App 서버

66. 인스턴스 중지 App 서버 시작 App 서버 DB 서버 App 서버 DB 서버 시작 Setup Deploy Configure Execute Recipe Shutdown App 서버 시작 수동 배포 실행 레시피 실행 App 서버 종료

67. 인스턴스가 상태가 변경되면 Configure가 실행 Setup Deploy Configure Execute Recipe Shutdown App 서버 시작 App 서버 DB 서버 App 서버 DB 서버 시작 App 서버 시작 수동 배포 실행 레시피 실행 App 서버 종료

68. 시간 기반으로 인스턴스를 rolling update 매일 지정된 시간에 인스턴스를 시작 / 중지 각 인스턴스별로 시간을 늦추어 시작 / 중지 인스턴스가 부팅할 때마다 Setup, Deploy 라이프 사이클 이벤트에 의해 업데이트되어 최신 버전으로 어플리케이션을 구동

69. 배포한 App rollback 1회 이전의 버전의 App 으로도 rollback 이 가능 App의 업데이트를 3회 수행한 경우, 한번 롤백하면 두번째 버전으로, 두번 롤백하면 첫번째 버전으로 롤백 OpsWorks는 기본적으로 5가지 버전의 App 을 보유 보유하고 있는 버전 수를 넘어 롤백을 시도하면 실패하게되고, 가장 오래된 버전으로 적용된다. [:opsworks][:deploy_keep_releases]을 변경하여 전체 스택에서 유지할 버전의 수를 변경 가능 개별 App 버전의 보유 수를 변경하려면 [:deploy][‘appshortname’][:keep_releases]를 변경

70. CloudWatch 를 통한 모니터링 OpsWorksCloudWatch를 사용하여 다음의 메트릭을 1분 단위로 모니터링 14개 메트릭 무료 제공) – CPU(5) Idle / User CPU / System CPU / IO Wait / nice(Unix) 메모리 메모리 합계 / 사용중인 메모리 / swap / free / 메모리 버퍼 부하 (3) 1/ 5/ 15분 단위 평균 부하 프로세스(1) 프로세스의 수 인스턴스의 OS 레벨에서 얻을 수 있는 정보는 OpsWorks 에이전트가 수집하여 CloudWatch 서비스로 전송하여 얻어진다. 이를 통해 메모리, 프로세스 같은 표준 CloudWatch 모니터링에선 얻을 수 없는 데이터도 확인할 수 있다.

71. CloudWatch를 사용한 OpsWorks 모니터링 각 레이어별 모니터링 인스턴스 모니터링

72. 데이터 기반 아키텍처

73. METRICS @ETSY

74. 모니터링 옵션 CloudWatch and many more

75. CONTINUOUS DEPLOYMENT (배포의 연속) = CONTINUOUS EXPERIMENTATION (실험의 연속)

76. CONTINUOUS DEPLOYMENT (배포의 연속) = CONTINUOUS IMPROVEMENT (개선의 연속)

77. INNOVATE

78. SAN FRANCISCO

반응형