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

Post on 18-Jan-2017

539 views 12 download

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

클라우드 시대의 모바일 게임 운영 플랫폼 구현아이펀팩토리장수원 sw.jang@ifunfactory.com

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

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

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

게임 운영 ?

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

클라우드 시대달라진 점 ?

클라우드 = IaaSInfrastructure as a service

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

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

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

Web 대시보드

인프라 관리 서버 관리

리소스 모니터링 운영 툴

Web 대시보드

Web 대시보드 구현

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

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

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

인프라 관리

클라우드 API 활용

AWS library

ucloud library

libcloud

API 호출

Apache Libcloudhttps://libcloud.apache.org

Apache Libcloud

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

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

Provider.RACKSPACE

driver.list_sizes()driver.list_images()

driver.create_node(name=‘

Libcloud 문제 해결 ?

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

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

서버 관리

설정 자동화 도구 사용

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

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

agent

agent

⋮Master Server

에이전트 설치도 자동화

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

user-data

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

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

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

배치 작업

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

RQ (Redis queue)

RQ

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

RQ

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

Redis 설치 후Job 생성

worker 실행 $ rq worker

리소스 모니터링

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

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

AWS Cloud Watch

벤더 기능 사용✓ 장점

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

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

자체 제작의 경우

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

Graphite

collectd

custom reporter

운영 툴Web 대시보드

인프라 관리 서버 관리

리소스 모니터링

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

운영 툴Rest API Endpoint

HTTP API 요청

JSON/XML 응답

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, }}

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

Celery

Celery

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

Rest API Endpoint

Celery Worker

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

감사합니다 .

Q & Asw.jang@ifunfactory.com