Upload
ifunfactory-inc
View
538
Download
12
Embed Size (px)
Citation preview
클라우드 시대의 모바일 게임 운영 플랫폼 구현아이펀팩토리장수원 [email protected]
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 을 활용✓ 재밌는 게임 개발 방해받지 말자
감사합니다 .