99
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 이경안 매니저 (AWS), 이성수 CTO (MobilFactory), 최병주 차장 (Smilegate), 최양민 차장 (NZIN) 2016년 5월 17일 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 MobilFactory / Smilegate / NZIN의 활용 사례

게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Embed Size (px)

Citation preview

Page 1: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

이경안 매니저 (AWS), 이성수 CTO (MobilFactory), 최병주 차장 (Smilegate), 최양민 차장 (NZIN)

2016년 5월 17일

게임 고객 사례를 통해 살펴보는 AWS 활용 전략

MobilFactory / Smilegate / NZIN의 활용 사례

Page 2: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

1. Gaming Intro

2. 고객 사례1 (MobilFactroy, 이성수 CTO)

- MobilFactory의 DynamoDB 활용 사례

3. 고객 사례 2 (스마일게이트, 최병주 차장)

- 스마일게이트의 AWS Elastic Beanstalk 및 Amazon Elasticsearch Service활용 사례

4. 고객 사례 3 (NZIN, 최양민 차장)

- NZIN의 AWS CloudFormation 활용 사례

5. 게임 개발과 운영, AWS와 함께하세요.

발표 순서

Page 4: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

한국 Game Reference

MMORPG SOCIAL/CASUAL FPS/PC

Page 5: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Global Game Reference

Mobile PC/Console

Page 6: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

왜 게임 고객들은 AWS에 열광할까요?

Page 7: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

게임 산업의 벨류 체인에 맞춘 AWS (1/4)

기획 개발 배포 및 운영 해외 진출

서버 구성 및 운영

컨텐츠 배포 (업데이트) 및 글로벌 진출

게임 분석 / 빅데이터

게임 커뮤니티 (Social Platform)

게임 수익화

Gaming Workloads

개발

Page 8: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

게임 산업의 벨류 체인에 맞춘 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

Page 9: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

게임 산업의 벨류 체인에 맞춘 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

Page 10: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

게임 산업의 벨류 체인에 맞춘 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

Page 11: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

AWS 게임 고객 사례 발표

Managed DB - DynamoDB

배포 및 로그 수집 –AWS Elastic Beanstalk 및Amazon Elasticsearch Service

개발/서비스 환경 구축 자동화 -CloudFormation

Page 12: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

MOBILFACTORY의 DynamoDB 활용 사례

이성수 CTO, MOBILFACTORY

Page 13: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

• 모빌팩토리 및 마이리틀팜 소개

• 마이리틀팜 AWS Architecture

• 런칭 시 고민

• DynamoDB 활용

• DynamoDB 활용 시 유의 할 점

순서

Page 14: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

모빌팩토리 소개

- 2012. 11 설립

- 마이리틀팜

- 슈팅히어로

- 소녀와디저트

Page 15: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

마이리틀팜

Page 16: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

마이리틀팜 소개

• 농장 시뮬레이션 게임

Page 17: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

마이리틀팜 지표

- Download: 500K

- Google Play Ranking*

- 66th Top Grossing(Games)

- 4th Download (Games)

- 1st Download (Games)

(* 2016.2.2 ~ 3.31)

Page 18: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

AWS Architecture (AP-northeast-2)

Page 19: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

AWS Architecture (AP-northeast-2)

Page 20: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Main User Database : NoSQL

User {

Info {

Level, Exp, Cash, Gold, …

}

Facility {

Location, Producing, …

}

Storage {

Items, …

}

Information {

LastLoginTime, …

}

}

Page 21: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Main User Database : NoSQL

User {

Info {

Level, Exp, Cash, Gold, …

}

Facility {

Location, Producing, …

}

Storage {

Items, …

}

Information {

LastLoginTime, …

}

}

> 100KB

Page 22: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Main User Database : NoSQL

- Q. NoSQL DB서버부하는 어떻게 대응하나요?

Page 23: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Main User Database : NoSQL

- Q. NoSQL DB서버부하는 어떻게 대응하나요?

- A. 더 높은 단계의 instance를새로 올려서,

Data 를 Sync 하고기존 서버는 Failover 처리를 하면 됩니다.

Page 24: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Main User Database : NoSQL

- Q. Failover시 Downtime은 얼마나 발생하나요?

- Q. Sync 상태는 어떻게 파악하죠? 얼마나 걸릴까요?

- Q. Data Sync는 오류 나는 일이 없나요?

- Q. 장애 발생하면 이전 상태로 돌아갈 수 있나요?

- Q. binary log 같은 걸로 복구할 수 있나요?

- Q. 해당 DB는 얼마나 버틸 수 있나요?

- Q. 우리한테 적당한 instance Type은 무엇일까요?

- Q. 나중에 줄이는 것도 가능하겠죠?

- …

Page 25: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB 로 해결!

Page 26: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Amazon DynamoDB란?

• 완전 관리형 NoSQL 데이터베이스 서비스

• 높은 확장성, 낮은 대기시간

• 고가용성– 3x 복제

• 심플하면서 강력한 API

• 저장 용량 제한이 없음

• 운영관리가 필요없음

Page 27: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB: 클릭 한 번으로 Capacity 조절 가능!

클릭과 동시에 즉시 변경은 아님. (1~5)분 내에 적용

Page 28: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB: API Provisioning

Page 29: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB: Burst Mode

갑작스럽게발생하는과도한요청증가는 Burst Mode가일부분버텨줌

Page 30: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB: Pricing

- DynamoDB 생각보다 많이 나온다던데?

Page 31: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB: Pricing

- 서비스 오픈 첫 달 (2월)

- DAU: 40K ~ 70K

- 1 Read / request

- 1 Write / request

- Item Size: 8kB ~ 30kB

Page 32: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB: Pricing

- 서비스 오픈 첫 달 (2월)

- DAU: 40K ~ 70K

- 1 Read / request

- 1 Write / request

- Item Size: 8kB ~ 30kB

- $3500 수준 (Monthly)

Page 33: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB: Pricing RI

- 용량 예약 시 할인 가능

- 1Year: 53% (한 달 약 $1,750)

- 3Year: 76% (한 달 약 $840)

- Cache Layer 를 두는 것도 도움

- Ex. 친구 농장 정보를 불러올 때 Redis 에서 Read Cache

- 더저렴 하게쓸수 있어요

Page 34: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB 사용 시 주의점

Page 35: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB

- Provisioned Throughput limit

- MAX Throughput 이 10,000 으로 으로 제한 되어 있음 (Soft Limit)

- 초과 사용 시 AWS에 추가 요청이 필요함

Page 36: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB

- Provisioned Throughput limit

- Item Max Size: 400 KB

- 아이템 분리 및 테이블 데이터 설계 시 주의

- 마이리틀팜에서는 JSON 압축해서 BLOB 처럼 사용하고 있음

Page 37: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB

- Provisioned Throughput limit

- Item Max Size: 400 KB

- Throughput Scale down limit : 4회- DynamoDB 파티션 동작 방식에 의한 제한

- Throughput 줄이는 시점에 대한 정책을 잘 결정할 필요가 있음

Page 38: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB

- Provisioned Throughput limit

- Item Max Size: 400 KB

- Throughput Scale down limit : 4회

- Throughput Exceeded Exception

- Burst mode 허용치를 넘어서는 요청에 대해서는 Exception이 발생

- Application에서 지연 시도 혹은 장애 처리 필요

Page 39: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB

- Provisioned Throughput limit

- Item Max Size: 400 KB

- Throughput Scale down limit : 4회

- Throughput Exceeded Exception

- Back-up: data-pipeline (AP-northeast-2)

Page 40: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

DynamoDB

- Provisioned Throughput limit

- Item Max Size: 400 KB

- Throughput Scale down limit : 4회

- Throughput Exceeded Exception

- Back-up: data-pipeline (AP-northeast-2)

- AWS Documentation(http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html )

Page 41: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Dynamic DynamoDB (3rd party)

Page 42: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Dynamic DynamoDB

- Scale up and down DynamoDB automatically

Page 43: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Dynamic DynamoDB: Scale-up

서비스안정성을 위해 잘 늘리는 것이 중요

- 최근 5분 내 사용량이

- 80%를 넘으면

- 현재 사용량의 20% 증가

Page 44: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Dynamic DynamoDB: Scale-up

비용절감을 위해 잘 줄이는 것이 중요

- 최근 5분 내 사용량이

- 30% 이하인 경우가

- 6번 연속 확인된 경우

- 현재 사용량의 50%로 감소

Page 45: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Dynamic DynamoDB: 주의점

- 빠른 증가 대응 어려움 (push, event, daily refresh 등)

Page 46: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Dynamic DynamoDB: 주의점

- 빠른 증가 대응 어려움 (push, event, daily refresh 등)

- 서버 장애 발생시 지나친 감소로 2차 장애 가능성

Page 47: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Dynamic DynamoDB: 주의점

- 빠른 증가 대응 어려움 (push, event, daily refresh 등)

- 서버 장애 발생시 지나친 감소로 2차 장애 가능성

- 서버 점검 등에 의한 감소 지연

Page 48: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Dynamic DynamoDB: 주의점

- 빠른 증가 대응 어려움 (push, event, daily refresh 등)

- 서버 장애 발생시 지나친 감소로 2차 장애 가능성

- 서버 점검 등에 의한 감소 지연

- 감소 횟수 제한으로 인한 어려움

Page 49: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Dynamic DynamoDB: 망한 하루

Page 50: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Dynamic DynamoDB: 개선

- Lambda로 직접 구현

- 서비스패턴에맞는정책결정

- 낮 시간에는 감소 없이 항상 증가

- 새벽 2시, 3시, 4시 등 현재 사용량 수준으로 감소

- 사용량이 급격히 낮을 때는 장애나 점검으로 탐지

Page 51: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

정리

Page 52: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

정리

- NoSQL DB라면, DynamoDB 쓰세요

- 잘 아껴 쓰려면, Dynamic DynamoDB 쓰세요

- 더 잘 쓰려면, Dynamic DynamoDB보다 Lambda를통해 직접구현해서 쓰세요!

Page 53: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Links

AWS DynamoDB documentationhttps://aws.amazon.com/ko/documentation/dynamodb/

AWS Blog - Dynamic DynamoDBhttps://aws.amazon.com/ko/blogs/aws/auto-scale-dynamodb-with-dynamic-dynamodb/

Dynamic-DynamoDBhttp://dynamic-dynamodb.readthedocs.org/en/latest/

Visualize cloud architecturehttps://cloudcraft.co/

Page 54: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

스마일게이트의 AWS Elastic Beanstalk 및Amazon Elasticsearch Service활용 사례- Deploy, Log -

최병주 차장, Smilegate, InfraTech Team

Page 55: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

• NTL / NCSoft / Nexon Infra Engineer

• Smilegate InfraTech Team

발표자 소개

Page 56: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Agenda

Elastic Beanstalk+Docker 를 이용한 배포

통합 로그수집 및 알람시스템(AWS+On Premise)

Page 57: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

EB+Docker 를 이용한 배포

Page 58: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Stove - About

• Mobile Game Open Platform

• API Base Service

• Auth / Billing / Push / Chat / Coupon / Item / Membership / Admin 등

Page 59: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Stove

Stove - About

Page 60: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Stove – Architecture(Tokyo)

Page 61: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

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 로만가능

Page 62: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Elastic? Elastic!!

AWS?? Cloud?? 하면 생각나는 것은?

Page 63: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Elastic? Elastic!!

AutoScalingELB EC2

Page 64: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

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

Page 65: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

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

Page 66: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

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

Page 67: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Deploy – Demo

Page 68: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Next Step

• MultiDocker 로 전환 : Application 과 OS Level 의 완전격리

• AWS Elastic Beanstalk 에서는 ECS 로 지원

• ECR(Tokyo 미출시) + ECS(Elastic Beanstalk) 으로 전환예정

Page 69: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

통합 로그수집 및 알람시스템

Page 70: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Log, Log, Log…

Page 71: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

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

Page 72: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Challenge – Challenge 1

• 모든 로그 수집

• 매번 S3 로 Export 해야 함

• On Premise Log는?

Cloudwatch Logs

Page 73: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Challenge – Challenge 2

• On Premise Log 도 수집

• Linux/Windows 모두 지원

• 단점 : Logstash 부하가 높음

LogStash

Page 74: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Solution – Beats

Page 75: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Beats

Solution – Solution

• Service Instance 부하 해소

• Plugin 지원으로 간단한 설정

• System Log 의 Bucket 분리

AWS Log 와 System Log 별도 저장

Page 76: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Alarm

로그수집 – Alarm

• Elastic Search Service 의 Plugin 제한

• Watcher 를 사용할 수 없음

• Lambda Function 자체 구현

Page 77: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

로그수집 – Lambda# /usr/bin/env python

# -*- coding: utf-8 -*-

from __future__ import print_function

from elasticsearch import Elasticsearch, RequestsHttpConnection

from requests_aws4auth import AWS4Auth

import slackweb

YOUR_ACCESS_KEY = 'YOUR_ACCESS_KEY'

YOUR_SECRET_KEY = 'YOUR_SECRET_KEY'

REGION = 'ap-northeast-1'

SLACK_URL = 'WEBHOOK URL'

host = '엘라스틱서치주소.ap-northeast-1.es.amazonaws.com'

auth = AWS4Auth(YOUR_ACCESS_KEY, YOUR_SECRET_KEY, REGION, 'es')

def lambda_handler(event, context):

es = Elasticsearch(

hosts=[{'host': host, 'port': 443}],

http_auth=auth,

use_ssl=True,

verify_certs=True,

connection_class=RequestsHttpConnection)

res = es.search(index="*_syslog_*", doc_type="secure",

body={

"query": {

"filtered": {

"query": {

"query_string": {

"query": "message:failure",

"default_field": "message"

}

},

"filter": {

"range": {

"@timestamp": {

"from": "now-5m/m",

"to": "now"

}

}

}

}

},

"size": 0,

"aggs": {

"group_by_host.raw": {

"terms": {

"field": "host.raw"

}

}

}

})

Page 78: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

로그수집 – Lambda

items = res["aggregations"]["group_by_host.raw"]["buckets"]

for item in items:

if item["doc_count"] >= 3:

print(item)

message = item["doc_count"]

slack = slackweb.Slack(url=SLACK_URL)

slack.notify(text=message)

print(" Remaining time (ms): " + str(context.get_remaining_time_in_millis()) + "\n")

Page 79: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

AutoScaling

로그수집 – LogStash AutoScaling

• Logstash 의 AutoScaling

• 부하의 주범 ELB Access Log

• S3-Logstash Plugin 중복처리S3 Plugin

Page 80: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

AutoScaling

로그수집 – Next Step

• SQS 로 중복처리문제 해결

• Logstash 의 AutoScaling 확대

Page 81: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Summary – Logging with ELK

• 수집/전송/조회 를 한번에

• 지원하는 Plugin 이 많아 구현 난이도가 쉽다

Slack 과의 연동도 매우 간편

• S3 와 조합시 아무리 장기간 고용량의 Log 가 쌓여도 무관

• AWS Elasticsearch Service(AWS Managed)

HA / 도메인 추가 / 노드교체 / 백업 등에 소요되는 리소스가 절감

Kibana 자동 설치 : 설정이 필요 없고 URL 로 접속만 하면 사용가능

Plugin 제한은 불편

Reserved Instance 요금을 적용할 수 없어 비용이 상승

Page 82: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

NZIN의 AWS CloudFormation 활용- 개발/서비스환경 구축 자동화 -

최양민 차장, NZIN, 인프라 운영팀

Page 83: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

• 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

순서

Page 84: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

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

엔진은 비즈니스, 폴리싱, 기술, 서비스 운영에 이르기까지게임 서비스를 위한 인프라를 제공합니다.

Page 85: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

서비스 런칭을 위해 유기적이고 분업화된 업무 프로세스가 진행됨.

Publishing Service 런칭 프로세스

Page 86: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

• 서비스 Owership, 개발사 접속 권한 분리, 서비스 단위 비용 산정의 이유로 서비스 단위로 AWS 계정 생성하여 구성

• 서비스 단계( Beta/Live ) 별 VPC 를 구성하며, AZ 고려 Public 2개, Private 2개 의 Subnet 구성하여 고유의 IP 대역을 할당

Common Service Infrastructure

Page 87: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

- 약 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

Page 88: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

AWS

CloudFormation

AWS CloudFormation은 AWS 리소스 모음을 쉽게 생성 및 관리하고,

인프라스트럭처의 프로비저닝과 업데이트할 수 있는 간편한 방법을 제공 합니다.

• 초기 인프라 구성 요소들을 템플릿화, 빠르게 프로비저닝 가능

• 대부분의 AWS 리소스를 지원하며, JSON 포멧으로 구성됨.

• 인프라스트럭처의 자동화하고 구성 실수/누락를 방지

• 인프라스트럭처의 버전 관리와 통합 환경을 마련할 수 있음.

CloudFormation을 통한 자동화

Page 89: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Automation Common Service Infrastructure

- CDN, Beta, Live 서비스 등 3가지 Stack 을 사전 구성 .

- 약 50회의 마우스 클릭과 15분 가량의 작업

Page 90: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

CloudFormation Designer 특징

- Resources의시각화

- drag-and-drop을통한 간단한 작성

- JSON Editor 와 통합

Canvas paneResource pane

JSON editor

Errors pane

CloudFormation - Designer

Page 91: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

{

"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

Page 92: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

"Mappings" : {

"AWSRegionArch2AMI" : {

"ap-northeast-1" : { " t2.micro ": "ami-f885ae96", "t2.medium": "ami-1ecae776" },

"ap-southeast-1" : { " t2.micro ": "ami-c9b572aa", "t2.medium": "ami-d7hude73" },

"ap-northeast-2" : { " t2.micro ": "ami-249b554a", "t2.medium": "ami-81efa384" },

"us-east-1" : { " t2.micro ": "ami-8fcee4e5", "t2.medium": "ami-7a11e213" },

"us-west-1" : { " t2.micro ": "ami-d5ea86b5", "t2.medium": "ami-6411e20d" },

"us-west-2" : { " t2.micro ": "ami-f0091d91", "t2.medium": "ami-5343e46a" }

}

},

CloudFormation - JSON Template

Page 93: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

"Parameters" : {

"KeyName" : {

"Description" : "Name of an existing EC2 KeyPair ex) xxx-xx-key ",

"Type" : "String",

"Default" : "xxx-xx-key"

},

"BastionInstanceType" : {

"Description" : "Bastion instance type",

"Type" : "String",

"Default" : "t2.micro",

"AllowedValues" : [ "t2.micro" ],

},

"dnsHostZone" : {

"Type" : "String",

"Default" : "xxx.nzincorp.com"

}

},

CloudFormation - JSON Template

Page 94: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

"Resources" : {"LiveBastionHost" : {

"Type" : "AWS::EC2::Instance","DependsOn" : "GatewayToInternet","Properties" : {

"InstanceType" : { "Ref" : "BastionInstanceType" },"KeyName" : { "Ref" : "KeyName" },"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, "AMI" ] },"NetworkInterfaces" : [{

"GroupSet" : [{ "Ref" : "BastionSG" }], "DeleteOnTermination" : "true", "SubnetId" : { "Ref" : "LivePubZone" } }],"Tags" : [ {"Key" : "Name", "Value" : “xxxxxxxxxxxxxxxxxxx"} ],"IamInstanceProfile": { "Ref": "MgmtProfile" },"BlockDeviceMappings" : [{

"DeviceName" : "/dev/xvda", "Ebs" : { "VolumeSize" : "20", "VolumeType":"gp2", "DeleteOnTermination":"true"} }]} }

"BastionSG" : { "Type" : "AWS::EC2::SecurityGroup","Properties" : {

"GroupDescription" : "Enable access to the bastion host","VpcId" : { "Ref" : "VPC" },"SecurityGroupIngress" : [

{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "xxx.xxx.xxx.xxx/32"},{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : " xxx.xxx.xxx.xxx/32"},{ "IpProtocol" : "udp", "FromPort" : "123", "ToPort" : "123", "CidrIp" : "0.0.0.0/0"} ] } }, }

},

Ref, Fn::Join, Fn::Select , Fn::GetAtt, Fn::GetAZs

CloudFormation - JSON Template

Page 95: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

- 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

Page 96: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

- AWS CloudFormation Template

- https://aws.amazon.com/ko/cloudformation/aws-cloudformation-templates/

- CloudFormation Template Snippets

- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/CHAP_TemplateQuickRef.html

- CloudFormation Template Reference

- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-reference.html

- CloudFormation Template Anatomy

- http://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/template-anatomy.html

- Intrinsic Function Reference

- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html

참고

Page 97: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

아직도 남아 있는 많은 AWS에 대한 고민들

Page 98: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

게임 개발과 운영, AWS와 함께 하세요.

고객 기술지원 프로페셔널컨설팅 서비스

전담 영업담당 조직

파트너를 통한지원 체계

솔루션스 아키텍트기술 지원

교육 및인증 프로그램

Page 99: 게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016

Thank you!