48
클클클클 클클클 클클클 클클 클클 클클클 클클 클클클클클클 클클클 [email protected]

2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현

Embed Size (px)

Citation preview

Page 1: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

클라우드 시대의 모바일 게임 운영 플랫폼 구현아이펀팩토리장수원 [email protected]

Page 2: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

About Me✓ 6 년차 Back-end 소프트웨어 엔지니어✓ 2013 ~ : 아이펀팩토리

• 게임 운영 플랫폼 개발 중• 게임 서버 용 Openstack 프라이빗 클라우드 개발

✓ 2011~2012 : LG 전자 , 소프트웨어 역량 강화 센터 , 인프라 팀

Page 3: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

게임 운영 ?

Page 4: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

게임 운영✓ 인프라 관리 : 서버 생성 / 설정 , 로드밸런서 생성 / 설정 , …✓ 서버 관리 : 초기 설정 , 게임 서버 애플리케이션 배포 및 관리✓ 모니터링 : CPU 사용율 , Memory, … ✓ 운영 툴 : 고객 지원 , 프로모션 관리 , …✓ 웹 대시보드

Page 5: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

클라우드 시대달라진 점 ?

Page 6: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

클라우드 = IaaSInfrastructure as a service

Page 7: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

클라우드 시대 - 변한 것✓ 인프라 확장 → 빠르고 쉬워짐 , 비용 낮아짐✓ 개별 머신의 가용성 → 낮아짐✓ Scaling-up → Scaling-out✓ 잦은 인프라 축소 / 확장 → 자동화 필요

Page 8: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

인프라 설치 및 관리 기능게임 운영 시스템으로 편입

Page 9: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

Python 으로 어떻게 구현 했는지 소개

Web 대시보드

인프라 관리 서버 관리

리소스 모니터링 운영 툴

Page 10: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

Web 대시보드

Page 11: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

Web 대시보드 구현

✓ Python 에서 가장 잘 알려진 웹 프레임워크✓ Web client 프레임워크 (HTML,

CSS, JS)✓ Web UI 요소를 쉽게 사용할 수 있음

잘 만드는 것보다 빠르고 쉽게 만들 수 있는 것이 중요 !

Page 12: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

인프라 관리

Page 13: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

클라우드 API 활용

AWS library

ucloud library

libcloud

API 호출

Page 14: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

Apache Libcloudhttps://libcloud.apache.org

Page 15: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

Apache Libcloud

✓ AWS, Azure, Google Compute Engine 등을 포함한30 개 이상의 클라우드 서비스 지원

✓ 공통된 기능은 같은 인터페이스로 제공해 편리

Page 16: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

Provider.RACKSPACE

driver.list_sizes()driver.list_images()

driver.create_node(name=‘

Page 17: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

Libcloud 문제 해결 ?

Page 18: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

각 클라우드 독자적기능을 지원하지 못 함e. g. AWS VPC, KT ucloud biz 로드 밸런서

Page 19: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

Trade-offlibcloud 포기 , 각 벤더 client 라이브러리 직접 사용

Page 20: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

서버 관리

Page 21: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

설정 자동화 도구 사용

Page 22: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

설정 자동화 도구 사용하려면 ...

✓ 통합 관리를 위한 마스터 서버 설치✓ 각 서버 → 해당 도구의 에이전트를 설치 / 설정✓ 에이전트와 마스터 서버가 정상 연결→ 모든 시스템 관리 작업은 마스터 서버를 통해 가능

Page 23: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

agent

agent

⋮Master Server

Page 24: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

에이전트 설치도 자동화

Page 25: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

클라우드시스템 서버 인스턴스

user-data

서버 인스턴스 생성 시설정 자동화 도구 agent 를 설치한다

Page 26: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

에이전트 설치 자동화✓ 에이전트 설치 명령 + 마스터 서버 주소 설정→ user-data 생성✓ 서버 인스턴스 생성 API 호출 시 user-data 전달✓ 이후 모든 관리 작업은 마스터에서

Page 27: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

IaaS API 호출 간 기다림서버 명령 결과 기다림어떻게 처리 ?

Page 28: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

배치 작업

• 비동기적으로 Job 을 처리해줄 Queue 가 필요함

Page 29: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

RQ (Redis queue)

Page 30: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

RQ

✓ Redis 를 이용한 간단한 Job queue✓ 여래 벌의 worker 를 두는 것이 가능✓ 배우기 쉬움

Page 31: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

RQ

q = Queue(connection=Redis()) result = q.enqueue(my_function, arg1, arg2)

Redis 설치 후Job 생성

worker 실행 $ rq worker

Page 32: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

리소스 모니터링

Page 33: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

리소스 모니터링✓ CPU 사용량✓ Memory 점유율✓ 네트워크 사용량✓ 디스크 사용량

Page 34: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

클라우드 벤더 기본 제공 모니터링vs자체 수집

Page 35: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

AWS Cloud Watch

Page 36: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

벤더 기능 사용✓ 장점

• 별 다른 설정이 필요 없음✓ 단점

• 메트릭 제한 (e.g. 메모리 사용량 , 디스크 사용량 )• 벤더 별로 상이

Page 37: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

자체 제작의 경우

✓ 각 VM Collectd 등 -> Graphite, Influx DB 등에 수집

Graphite

collectd

custom reporter

Page 38: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

운영 툴Web 대시보드

인프라 관리 서버 관리

리소스 모니터링

Page 39: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

운영 툴✓ 게임마다 운영 툴을 독자적으로 개발하는 것은 반복 !✓ 운영 툴에 필요한 Rest API 정의하고✓ 게임 서버는 Rest API 구현✓ 대시보드는 Rest API 호출해서 사용하는 방식

Page 40: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

운영 툴Rest API Endpoint

HTTP API 요청

JSON/XML 응답

Page 41: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

REST API 예제

GET /cs-api/v1/account/<type>/<id>/

HTTP/1.1 200 OK

{ "account": { "created": "2016-01-01", "last_login": "2016-03-23", "banned": false, "coin": 100, }}

Page 42: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

시간 지정이 필요한 경우 ?e.g. 프로모션 관리

Page 43: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

Celery

Page 44: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

Celery

✓ eta, countdown 기능 등으로 특정 시간에 Job 을 실행할 수 있음

Rest API Endpoint

Celery Worker

Page 45: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
Page 46: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

요약✓ 클라우드 시대 → 인프라 관리의 소프트웨어 화✓ 게임의 핵심은 아니지만 없어서도 안 됨✓ 개발 생산성 높은 언어 (e.g. Python) 및 framework 을 활용✓ 재밌는 게임 개발 방해받지 말자

Page 47: 2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현

감사합니다 .