Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

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

1.111 visualizaciones

Publicado el

2016 NDC 발표 자료

클라우드 시대의 모바일 게임 운영 플랫폼 구현
아이펀팩토리 장수원 엔지니어

Publicado en: Tecnología
  • Sé el primero en comentar

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

  1. 1. 클라우드 시대의 모바일 게임 운영 플랫폼 구현 아이펀팩토리 장수원 sw.jang@ifunfactory.com
  2. 2. About Me ✓ 6 년차 Back-end 소프트웨어 엔지니어 ✓ 2013 ~ : 아이펀팩토리 • 게임 운영 플랫폼 개발 중 • 게임 서버 용 Openstack 프라이빗 클라우드 개발 ✓ 2011~2012 : LG 전자, 소프트웨어 역량 강화 센터, 인프라 팀
  3. 3. 게임 운영?
  4. 4. 게임 운영 ✓ 인프라 관리 : 서버 생성/설정, 로드밸런서 생성/설정, … ✓ 서버 관리 : 초기 설정, 게임 서버 애플리케이션 배포 및 관리 ✓ 모니터링 : CPU 사용율, Memory, … ✓ 운영 툴 : 고객 지원, 프로모션 관리, … ✓ 웹 대시보드
  5. 5. 클라우드 시대 달라진 점?
  6. 6. 클라우드 = IaaS Infrastructure as a service
  7. 7. 클라우드 시대 - 변한 것 ✓ 인프라 확장 → 빠르고 쉬워짐, 비용 낮아짐 ✓ 개별 머신의 가용성 → 낮아짐 ✓ Scaling-up → Scaling-out ✓ 잦은 인프라 축소/확장 → 자동화 필요
  8. 8. 인프라 설치 및 관리 기능 게임 운영 시스템으로 편입
  9. 9. Python 으로 어떻게 구현 했는지 소개 Web 대시보드 인프라 관리 서버 관리 리소스 모니터링 운영 툴
  10. 10. Web 대시보드
  11. 11. Web 대시보드 구현 ✓ Python 에서 가장 잘 알려진 웹 프레임워크 ✓ Web client 프레임워크 (HTML, CSS, JS) ✓ Web UI 요소를 쉽게 사용할 수 있음 잘 만드는 것보다 빠르고 쉽게 만들 수 있는 것이 중요!
  12. 12. 인프라 관리
  13. 13. 클라우드 API 활용 AWS library ucloud library libcloud ⋮ API 호출
  14. 14. Apache Libcloud https://libcloud.apache.org
  15. 15. Apache Libcloud ✓ AWS, Azure, Google Compute Engine 등을 포함한 30개 이상의 클라우드 서비스 지원 ✓ 공통된 기능은 같은 인터페이스로 제공해 편리
  16. 16. Provider.RACKSPACE driver.list_sizes() driver.list_images() driver.create_node(name=‘
  17. 17. Libcloud 문제 해결?
  18. 18. 각 클라우드 독자적 기능을 지원하지 못 함 e. g. AWS VPC, KT ucloud biz 로드 밸런서
  19. 19. Trade-off libcloud 포기, 각 벤더 client 라이브러리 직접 사용
  20. 20. 서버 관리
  21. 21. 설정 자동화 도구 사용
  22. 22. 설정 자동화 도구 사용하려면... ✓ 통합 관리를 위한 마스터 서버 설치 ✓ 각 서버 → 해당 도구의 에이전트를 설치/설정 ✓ 에이전트와 마스터 서버가 정상 연결 → 모든 시스템 관리 작업은 마스터 서버를 통해 가능
  23. 23. agent agent ⋮ Master Server
  24. 24. 에이전트 설치도 자동화
  25. 25. 클라우드 시스템 서버 인스턴 스 user-data 서버 인스턴스 생성 시 설정 자동화 도구 agent 를 설치한다
  26. 26. 에이전트 설치 자동화 ✓ 에이전트 설치 명령 + 마스터 서버 주소 설정 → user-data 생성 ✓ 서버 인스턴스 생성 API 호출 시 user-data 전달 ✓ 이후 모든 관리 작업은 마스터에서
  27. 27. IaaS API 호출 간 기다림 서버 명령 결과 기다림 어떻게 처리?
  28. 28. 배치 작업 • 비동기적으로 Job 을 처리해줄 Queue 가 필요함
  29. 29. RQ (Redis queue)
  30. 30. RQ ✓ Redis 를 이용한 간단한 Job queue ✓ 여래 벌의 worker 를 두는 것이 가능 ✓ 배우기 쉬움
  31. 31. RQ q = Queue(connection=Redis()) result = q.enqueue(my_function, arg1, arg2) Redis 설치 후 Job 생성 worker 실행 $ rq worker
  32. 32. 리소스 모니터링
  33. 33. 리소스 모니터링 ✓ CPU 사용량 ✓ Memory 점유율 ✓ 네트워크 사용량 ✓ 디스크 사용량
  34. 34. 클라우드 벤더 기본 제공 모니터링 vs 자체 수집
  35. 35. AWS Cloud Watch
  36. 36. 벤더 기능 사용 ✓ 장점 • 별 다른 설정이 필요 없음 ✓ 단점 • 메트릭 제한 (e.g. 메모리 사용량, 디스크 사용량) • 벤더 별로 상이
  37. 37. 자체 제작의 경우 ✓ 각 VM Collectd 등 -> Graphite, Influx DB 등에 수집 Graphite collectd custom reporter
  38. 38. 운영 툴 Web 대시보드 인프라 관리 서버 관리 리소스 모니터링
  39. 39. 운영 툴 ✓ 게임마다 운영 툴을 독자적으로 개발하는 것은 반복! ✓ 운영 툴에 필요한 Rest API 정의하고 ✓ 게임 서버는 Rest API 구현 ✓ 대시보드는 Rest API 호출해서 사용하는 방식
  40. 40. 운영 툴 Rest API Endpoint HTTP API 요청 JSON/XML 응답
  41. 41. 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, } }
  42. 42. 시간 지정이 필요한 경우? e.g. 프로모션 관리
  43. 43. Celery
  44. 44. Celery ✓ eta, countdown 기능 등으로 특정 시간에 Job 을 실행할 수 있음 Rest API EndpointCelery Worker
  45. 45. 요약 ✓ 클라우드 시대 → 인프라 관리의 소프트웨어 화 ✓ 게임의 핵심은 아니지만 없어서도 안 됨 ✓ 개발 생산성 높은 언어 (e.g. Python) 및 framework 을 활용 ✓ 재밌는 게임 개발 방해받지 말자
  46. 46. 감사합니다.
  47. 47. Q & A sw.jang@ifunfactory.com

×