7. 게임 산업의 벨류 체인에 맞춘 AWS (1/4)
기획 개발 배포 및 운영 해외 진출
서버 구성 및 운영
컨텐츠 배포 (업데이트) 및 글로벌 진출
게임 분석 / 빅데이터
게임 커뮤니티 (Social Platform)
게임 수익화
Gaming Workloads
개발
8. 게임 산업의 벨류 체인에 맞춘 AWS (2/4)
기획 개발 배포 및 운영 해외 진출
Gaming Workloads
원 클릭 앱 개발
DevOps 리소스 관리
콘테이너 서비스
컴퓨팅
VMs, Auto-scaling, Load
Balancing, Containers,
Cloud functions
스토리지
Object, Blocks,
File, Archival,
Import/Export
데이터베이스
Relational,
NoSQL, Caching,
Migration
네트워킹
VPC, DX,
DNS
글로벌 리전
(Region)
콘텐츠 배포
지점(Edges)
콘텐츠 배포
(CDN)
데이터웨어
하우스
Hadoop/
Spark
머신 러닝
Elastic Search
서비스
실시간 데이터
분석
비지니스
인텔리전스
Amazon
GameLift
9. 게임 산업의 벨류 체인에 맞춘 AWS (2/4)
기획 개발 배포 및 운영 해외 진출
Gaming Workloads
원 클릭 앱 개발
DevOps 리소스 관리
콘테이너 서비스
컴퓨팅
VMs, Auto-scaling, Load
Balancing, Containers,
Cloud functions
스토리지
Object, Blocks,
File, Archival,
Import/Export
데이터베이스
Relational,
NoSQL, Caching,
Migration
네트워킹
VPC, DX,
DNS
글로벌 리전
(Region)
콘텐츠 배포
지점(Edges)
콘텐츠 배포
(CDN)
데이터웨어
하우스
Hadoop/
Spark
머신 러닝
Elastic Search
서비스
실시간 데이터
분석
비지니스
인텔리전스
Amazon
GameLift
10. 게임 산업의 벨류 체인에 맞춘 AWS (4/4)
기획 개발 배포 및 운영 해외 진출
Gaming Workloads
원 클릭 앱 개발
DevOps 리소스 관리
콘테이너 서비스
컴퓨팅
VMs, Auto-scaling, Load
Balancing, Containers,
Cloud functions
스토리지
Object, Blocks,
File, Archival,
Import/Export
데이터베이스
Relational,
NoSQL, Caching,
Migration
네트워킹
VPC, DX,
DNS
글로벌 리전
(Region)
콘텐츠 배포
지점(Edges)
콘텐츠 배포
(CDN)
데이터웨어
하우스
Hadoop/
Spark
머신 러닝
Elastic Search
서비스
실시간 데이터
분석
비지니스
인텔리전스
Amazon
GameLift
11. AWS 게임 고객 사례 발표
Managed DB - DynamoDB
배포 및 로그 수집 –
AWS Elastic Beanstalk 및
Amazon Elasticsearch Service
개발/서비스 환경 구축 자동화 -
CloudFormation
23. Main User Database : NoSQL
- Q. NoSQL DB서버 부하는 어떻게 대응하나요?
- A. 더 높은 단계의 instance를 새로 올려서,
Data 를 Sync 하고
기존 서버는 Failover 처리를 하면 됩니다.
24. Main User Database : NoSQL
- Q. Failover시 Downtime은 얼마나 발생하나요?
- Q. Sync 상태는 어떻게 파악하죠? 얼마나 걸릴까요?
- Q. Data Sync는 오류 나는 일이 없나요?
- Q. 장애 발생하면 이전 상태로 돌아갈 수 있나요?
- Q. binary log 같은 걸로 복구할 수 있나요?
- Q. 해당 DB는 얼마나 버틸 수 있나요?
- Q. 우리한테 적당한 instance Type은 무엇일까요?
- Q. 나중에 줄이는 것도 가능하겠죠?
- …
31. DynamoDB: Pricing
- 서비스 오픈 첫 달 (2월)
- DAU: 40K ~ 70K
- 1 Read / request
- 1 Write / request
- Item Size: 8kB ~ 30kB
32. DynamoDB: Pricing
- 서비스 오픈 첫 달 (2월)
- DAU: 40K ~ 70K
- 1 Read / request
- 1 Write / request
- Item Size: 8kB ~ 30kB
- $3500 수준 (Monthly)
33. DynamoDB: Pricing RI
- 용량 예약 시 할인 가능
- 1Year: 53% (한 달 약 $1,750)
- 3Year: 76% (한 달 약 $840)
- Cache Layer 를 두는 것도 도움
- Ex. 친구 농장 정보를 불러올 때 Redis 에서 Read Cache
- 더 저렴 하게 쓸 수 있어요
37. DynamoDB
- Provisioned Throughput limit
- Item Max Size: 400 KB
- Throughput Scale down limit : 4회
- DynamoDB 파티션 동작 방식에 의한 제한
- Throughput 줄이는 시점에 대한 정책을 잘 결정할 필요가 있음
38. DynamoDB
- Provisioned Throughput limit
- Item Max Size: 400 KB
- Throughput Scale down limit : 4회
- Throughput Exceeded Exception
- Burst mode 허용치를 넘어서는 요청에 대해서는 Exception이 발생
- Application에서 지연 시도 혹은 장애 처리 필요
61. Stove
Stove – Architecture
• Micro Service Architecture 적용
• Elastic Beanstalk / Docker / Jenkins 를
이용한 배포 자동화
• 1 VPC / Multi-AZ
• VPC 내 Public / Private Subnet 분리
• Service Request 는 모두 ELB 를 통해 L/B
• Proxy(AutoScale) 를 통한 서비스별 URL
Redirect
• 관리목적 접근은 VPN을 통한 Private IP 로만
가능
64. Auto Scaling group
Availability Zone
#1
security group
EC2 instance
Launch Configuration
Availability Zone
#2
security group
EC2 instance
security group
ELB
Elastic Beanstalk – Before
• ELB 와 Instance 연계 수동 관리
• 별도 배포 : AMI 로 배포…
• AutoScale 된 Instance 의 배포는?
• Nginx(Tomcat) 새버전이 나왔는데?
• EC2 구성 후 접근용 URL 설정은?
AMI
65. Elastic Beanstalk – After
• ELB 와 Instance 자동 연동
• 배포 지원(Rolling Update)
• AutoScaling 설정 자동
• Application Health 자동 체크
• 기본모니터링 자동
• 접근용 URL 자동 생성
Elastic Beanstalk Environment
Auto Scaling group
Availability Zone
#1
security group
EC2 instance
Launch Configuration
Availability Zone
#2
security group
EC2 instance
security group
ELB
AMI
66. Simplify of Deploy - Docker
Deploy – EB with Docker
Deploy Automation
• 배포의 고민거리 Configuration
• 소스만 달라지는게 아님
• 소스파일만 Docker 에 Push
• Docker 를 사용하므로 다른 변경점에
대한 관리가 가능해짐
1
Image push
2
3
./ebextensions
elasticbeanstalk
Template Config
Update
docker registry
tomcat image
Push
Build Server
4 5
67
Jenkins Build
68. Next Step
• MultiDocker 로 전환 : Application 과 OS Level 의 완전격리
• AWS Elastic Beanstalk 에서는 ECS 로 지원
• ECR(Tokyo 미출시) + ECS(Elastic Beanstalk) 으로 전환예정
71. Log, Log, Log…
• 서비스가 커지면 로그는 기하급수적으로 증가
• Windows, Linux Log
syslog-ng, rsyslog 도 좋은 Solution
• ELB, CloudTrail, VPC Flow Log 까지 다 모으려면?
AWS Elasticsearch Service + LogStash + Kibana (ELK)
• 전체로그가 다 모이면 용량이..
S3
• 모은 다음에 조회는 어떻게..
AWS Elasticsearch Service
72. Challenge – Challenge 1
• 모든 로그 수집
• 매번 S3 로 Export 해야 함
• On Premise Log는?
Cloudwatch Logs
73. Challenge – Challenge 2
• On Premise Log 도 수집
• Linux/Windows 모두 지원
• 단점 : Logstash 부하가 높음
LogStash
81. Summary – Logging with ELK
• 수집/전송/조회 를 한번에
• 지원하는 Plugin 이 많아 구현 난이도가 쉽다
Slack 과의 연동도 매우 간편
• S3 와 조합시 아무리 장기간 고용량의 Log 가 쌓여도 무관
• AWS Elasticsearch Service(AWS Managed)
HA / 도메인 추가 / 노드교체 / 백업 등에 소요되는 리소스가 절감
Kibana 자동 설치 : 설정이 필요 없고 URL 로 접속만 하면 사용가능
Plugin 제한은 불편
Reserved Instance 요금을 적용할 수 없어 비용이 상승
83. • NZIN Publishing Platform
• Publishing Service 런칭 프로세스
• Common Service Infrastructure
• Configure Common Service Infrastructure
• CloudFormation을 통한 자동화
• Automation Common Service Infrastructure
• CloudFormation - Designer
• CloudFormation - JSON Template
• Best Practices for CloudFormation Templates
순서
84. NZIN Publishing Platform
비즈니스
투자
비즈니스 모델
마케팅
PR
기술지원
Service Platform
Scalable Infra
Security
서비스 운영
Quality Assurance
Customer Service
Service Operations (GM)
폴리싱
UX GUIDE
Balancing
Focus Group Test
Closed Beta Test
엔진은 비즈니스, 폴리싱, 기술, 서비스 운영에 이르기까지 게임 서비스를 위한 인프라를 제공합니다.
85. 서비스 런칭을 위해 유기적이고 분업화된 업무 프로세스가 진행됨.
Publishing Service 런칭 프로세스
86. • 서비스 Owership, 개발사 접속 권한 분리, 서비스 단위 비용 산정의 이유로 서비스 단위로 AWS 계정 생성하여 구성
• 서비스 단계( Beta/Live ) 별 VPC 를 구성하며, AZ 고려 Public 2개, Private 2개 의 Subnet 구성하여 고유의 IP 대역을 할당
Common Service Infrastructure
87. - 약 30가지의 AWS 리소스를 구성해야 함.
서비스 DNS Zone 구성, CloudFront 구성, S3 구성, Beta/Live Key Pair 파일 생성, IAM Role 생성, IAM User 생성,
Beta/Live VPC 구성 (Public Subnet, Private Subnet, Routing, Network ACL, EC2 Security Group,
RDS Security Group, RDS Subnet, ElastiCache Subnet ), Bastion Host, NAT Gateway, EIP 할당 등…
- VPC 생성에 약 1000회의 마우스 클릭과 최소 2시간 가량의 작업 시간 소요
- 각 AWS 리소스 간 유기적인 구조를 고려하며 작업.
‘우리 올해 17개 서비스를 런칭 할 꺼야 ~ 잘 할 수 있지!!’
‘VPC 작업을 Beta/Live 합쳐서 32회를 해야 한다는 건데…. ‘
Configure Common Service Infrastructure
88. AWS
CloudFormation
AWS CloudFormation은 AWS 리소스 모음을 쉽게 생성 및 관리하고,
인프라스트럭처의 프로비저닝과 업데이트할 수 있는 간편한 방법을 제공 합니다.
• 초기 인프라 구성 요소들을 템플릿화, 빠르게 프로비저닝 가능
• 대부분의 AWS 리소스를 지원하며, JSON 포멧으로 구성됨.
• 인프라스트럭처의 자동화하고 구성 실수/누락를 방지
• 인프라스트럭처의 버전 관리와 통합 환경을 마련할 수 있음.
CloudFormation을 통한 자동화
89. Automation Common Service Infrastructure
- CDN, Beta, Live 서비스 등 3가지 Stack 을 사전 구성 .
- 약 50회의 마우스 클릭과 15분 가량의 작업
90. CloudFormation Designer 특징
- Resources의 시각화
- drag-and-drop을 통한 간단한 작성
- JSON Editor 와 통합
Canvas paneResource pane
JSON editor
Errors pane
CloudFormation - Designer
91. {
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : " ",
"Mappings" : { },
"Parameters" : { },
"Resources" : { },
"Outputs" : { },
}
설명을 추가 할 수 있는 섹션, String 최대 1024 byte까지 가능
Template의 버전을 설정하는 섹션
Region마다 AMI ID가 차이가 있는데 mapping을 사용, OS와 AMI를 테이블 형식으로 명시.
Stack을 생성할 때 사용자로부터 값을 전달 받을 수 있는 섹션
Stack에 포함되는 AWS 리소스를 정의 하는 부분
stack에 대한 리소스 정보를 Return 받고 싶을 때 사용
CloudFormation - JSON Template
95. - CloudFormation templates의 관리를 위해 버전 관리툴을 사용하세요.
- Metadata 의 Comment 를 활용하여 주석을 작성하세요. JSON 은 주석 작성이 불가능 합니다.
- Stack 생성 후 주요 정보를 바로 확인하고 싶다면, Outputs 섹션을 사용하세요.
- Resources 생성 시 Tag 속성값을 이용하여 그룹화 하세요.
- 반복적인 구성이 필요한 리소스는 Stack 단위로 구성하세요.
- Cloudformation 내장 함수 ( Ref, Fn::GetAtt, Fn::GetAZs, Fn::Join, Fn::Select )을 사용하세요.
CloudFormation는 손쉽게 인프라스트럭처를 구성하고,
효율적인 관리/운영 할 수 있도록 해 드릴 것 입니다.
어려워 하지 마시고, 지금 사용해 보세요.
Best Practices for CloudFormation Templates