SlideShare una empresa de Scribd logo
1 de 73
Descargar para leer sin conexión
Python과 Git으로 만드는
모바일 게임 패치 시스템
데브시스터즈 | 오영택
1
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015 2
ㅅ
오영택
현 DEVSISTERS 서버팀

라이브 서비스 서버파트 및 인프라 총괄
KAIST 전산동아리 SPARCS
26, 남
발표자 소개
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015 3
꽤 많은 분들이 아시리라 생각하는 그 모바일 게임
출시 2년 5개월차, 새로운 모습을 보이기 위해 달리는 중!
쿠키런
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
게임 개발의 목표
4
?
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
게임 개발의 목표
5
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
게임 개발의 목표
밥먹을 돈을 번다
6
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
게임 개발의 목표
게임은 수많은 콘텐츠의 집대성
사용자가 즐길 수 있도록
콘텐츠를 효율적으로 전달하는 것
7
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
콘텐츠의 전달의 핵심
아트웍, 사운드, UI, 밸런스 등등...
각각의 콘텐츠가 준비돼 하나로 결합하는 과정
8
그럼 쿠키런 콘텐츠는 어떻게 준비되나요?
9
예전의 콘텐츠 준비 과정
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
게임 패치란?
새로운 이벤트가 열릴 때, 데이터가 수정됐을 때
받는 이것
10
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
패치 시스템 구조
한 묶음의 콘텐츠를 가지고 있는 패치 서버
테스트가 필요한 파일을 패치 서버에 올림
클라이언트가 패치를 다운로드 받아 테스트
11
패치 서버 클라이언트
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
쿠키 굽는 과정 (Before)
1. 아트팀이 정글전사 쿠키를 그린다
12
아트팀
운영팀
클라이언트
QA팀
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
쿠키 굽는 과정 (Before)
2. 운영팀이 해당 내용을 받아서 서버에 올려본다.
13
아트팀
운영팀
클라이언트
QA팀
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
쿠키 굽는 과정 (Before)
3. 올렸는데 반영이 되지 않는다. 왜인지 모르겠다.
4. 클라이언트팀에 요청해 디버그 빌드를 뽑는다.
14
아트팀
운영팀
클라이언트
QA팀
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
쿠키 굽는 과정 (Before)
5. 반영을 해서 테스트한다.
15
아트팀
운영팀
클라이언트
QA팀
어라, 변신하는
애니메이션에
얼굴이 없네?
호랑이가
더 밝은 느낌이면
좋겠어요!
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
쿠키 굽는 과정 (Before)
6. 고친다. 나. 정글전사
16
아트팀
운영팀
클라이언트
QA팀
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
쿠키 굽는 과정 (Before)
아트팀
운영팀
클라이언트
QA팀
문제 확인을 위해 거쳐야하는 팀들?
적으면 2개, 보통 3개팀
문제를 확인하기까지 걸리는 시간?
최소 1~2시간, 길게는 반나절
17
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
콘텐츠를 독립적으로 확인하기 어려움
18
저 이 파일 업로드 해도 되나요?
제 거 테스트 중이에요!
조금만 (1시간) 기다리세요.
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
콘텐츠를 독립적으로 확인하기 어려움
개발 환경에서 필요한만큼
독립적으로 콘텐츠 묶음을 만들 수 있어야 함
19
저 이 파일 업로드 해도 되나요?
제 거 테스트 중이에요!
조금만 (1시간) 기다리세요.
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
언제 어떤 콘텐츠를 올렸는지 알 수 없음
20
쿠키 이미지 고친걸
안 올렸나?
이 때 업데이트 한 게
어떤 파일들인지 모르겠어..
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
언제 어떤 콘텐츠를 올렸는지 알 수 없음
쿠키 이미지 고친걸
안 올렸나?
이 때 업데이트 한 게
어떤 파일들인지 모르겠어..
콘텐츠가 전부 관리되고,
변경점이 명확하게 파악되어야 함.
21
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
테스트 후 원래 상태로 돌리기 어려움
22
테스트 하기 전으로
돌려야 하는데
어떻게 해야하지?
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
테스트 후 원래 상태로 돌리기 어려움
테스트 하기 전으로
돌려야 하는데
어떻게 해야하지?
콘텐츠 묶음을 원하는 상태로
손쉽게 리셋할 수 있어야함
23
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
바뀐적이 없는 파일이 올라가 혼동을 유발함
24
이번에 파일 5개 올려서
업데이트 했어요~
?!?!
바뀐 게 하나밖에 없을텐데??
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
바뀐적이 없는 파일이 올라가 혼동을 유발함
이번에 파일 5개 올려서
업데이트 했어요~
?!?!
바뀐 게 하나밖에 없을텐데??
최소 변경점만이 반영되고 패치로 생성되어야 함.
25
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
필요한 것들 정리
개발 환경에서 필요한만큼 독립적으로 콘텐츠 묶음을 정의
콘텐츠가 전부 관리되고, 변경점이 명확하게 파악돼야함
콘텐츠 묶음을 원하는 상태로 손쉽게 리셋
최소 변경점만이 반영되고 패치로 생성돼야함
26
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015 27
개발 환경에서 필요한만큼 독립적으로 콘텐츠 묶음을브랜치를 정의
콘텐츠가파일이 전부 버전관리되고, 변경점이 명확하게 파악돼야함됨
콘텐츠 묶음을브랜치를 원하는 상태로 손쉽게 리셋
최소 변경점만이 반영되고 패치로 생성돼야함할 수 있음
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
Git
개발 환경에서 필요한만큼 독립적으로 브랜치를 정의
파일이 전부 버전관리되고, 변경점이 명확하게 파악됨
브랜치를 원하는 상태로 손쉽게 리셋
최소 변경점만이 반영되고 패치로 생성할 수 있음
28
그럼 쿠키런 콘텐츠는 어떻게 준비되나요?
29
새로운 시스템의 구조
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
기본 작동 방식
테스트 클라이언트는
Jungle 브랜치를 바라봄
테스트해보니
얼굴 없는 정글전사를 포착!(A)
30
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
기본 작동 방식
수정된 내용을 커밋(B)
이후 클라이언트를 실행하면
새로운 데이터가 있음을 알 수 있게됨
31
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
기본 작동 방식
클라이언트는
Jungle 브랜치의 최신 커밋이
자신이 가진 A가 아닌 B임을 파악
A에서 B로 가는 패치를 서버에 요청
32
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
기본 작동 방식
서버가 내려준 패치 A to B를 받아 적용
이 패치에는 새로운 정글전사 이미지(B)가 포함됨
정글전사에 얼굴이 생겼다!
33
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
기본 작동 방식
34
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
기본 작동 방식
35
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
기본 작동 방식
36
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
만든 것 1. 패치 파일 서버
Git 원격 저장소로부터 최신 내용을 항상 받아옴
클라이언트에 브랜치의 최신 커밋을 알려줌
요청받은 커밋 A와 커밋 B 사이에
달라진 파일들을 하나로 압축해 내려줌
37
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
만든 것 2. Git 웹 클라이언트
비개발자들(아트, UI, QA 등등)을 위해 만들어짐
원하는 브랜치에 파일을 업로드하는 기능
변경사항을 커밋해주는 시스템
기존의 Django 베이스의 쿠키런 운영 툴에 구현
38
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
만든 것 3. 콘텐츠 배포 시스템
필요한 패치 파일들을 생성
AWS S3에 업로드
CDN에 해당 파일들을 반영
사용자들에게 배포
39
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
시스템을 쓰는 방법
콘텐츠를 만들고
Git 저장소의 브랜치에 콘텐츠를 올림
40
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
시스템을 쓰는 방법
올린 파일은 패치 시스템에 자동 동기화
41
Github webhook을 이용
Github에서 이벤트 발생시 알려주는 기능
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
시스템을 쓰는 방법
테스트 클라이언트를 사용해 콘텐츠 확인
42
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
시스템을 쓰는 방법
검증이 끝난 콘텐츠는 배포 단계를 거쳐 사용자에게 전달
43
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015 44
그럼 쿠키런 콘텐츠는 어떻게 준비되나요?
45
새로운 시스템의 재료
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
이걸 어떻게 만들지
Git 저장소를 손쉽게 코드로 조작
저장소를 바탕으로 필요한 파일을 생성하여 제공
콘텐츠 관리를 쉽게 만들어 줄 프론트엔드 도구
46
다양한 이질적인 요소들을 결합할 수 있어야 한다
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
Python
이질적인 요소들도 쉽게 연동할 수 있다 (glue language)
개발 속도가 빠르고, 이해하기 쉽다
라이브러리가 다양하고, 잘 알려진 것들을 믿고 쓸 수 있다
사내 많은 개발자들이 이미 파이썬에 친숙하다
47
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
Pygit2
에 기반한 라이브러리
libgit2는 github에서도 사용하고 있음
사용을 위해서는 git 내부 구조를 이해해야함

(https://git-scm.com/book/en/v1/Git-Internals 을 참고)
문서가 다소 불친절..
48
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
Pygit2
개발 당시 (2014년 중반) libgit2는 아직 안정적인 상태가 아님
어처구니 없는 버그(들)이 존재
(예 : 아무리 큰 파일도 commit push할때 첫 32KB까지만 전송하는 버그)
종종 libgit2 코드를 통해 작동 방식을 확인할 필요가 있음
49
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
Bottle
Python의 수많은 웹 프레임워크 중 하나
단일 모듈로 웹서버를 빠르고 손쉽게 구축
단순한 로직의 구현에는 매우 쓸만함
50
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
Bottle
Hello {name} 을 출력하는 웹서버 (bottlepy 첫 예제)
51
from bottle import route, run, template
@route('/hello/<name>')
def index(name):
return template('<b>Hello {{name}}</b>!', name=name)
run(host='localhost', port=8080)
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
Bottle
Git 저장소에서
특정 로컬 브랜치의 최신 리비전을 출력하는 웹서버
52
import bottle
import pygit2
@bottle.route('/branch/<branch_name>')
def get_latest_revision(branch_name):
repo = pygit2.Repository(‘/path/to/repo‘)
branch = repo.lookup_branch(branch_name)
return str(branch.target) if branch else 'branch not found'
bottle.run(host='localhost', port=8080)
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
그외에 라이브러리
boto - AWS Python SDK
paramiko - SSH2 프로토콜 라이브러리
fabric - 서버 배포에 특화된 SSH 라이브러리
53
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015 54
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015 55
그럼 쿠키런 콘텐츠는 어떻게 준비되나요?
56
새로운 시스템의 효과
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
콘텐츠 제작 과정 Before & After
57
콘텐츠제작
운영팀
클라이언트
QA팀
콘텐츠제작
운영팀
클라이언트
QA팀
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
쿠키 굽는 과정 (After)
콘텐츠 확인을 직접 할 수 있게 됨
콘텐츠 확인에 필요한 시간이 매우 단축됨

( 수시간 -> 10분 이하 )
콘텐츠를 자주 확인하고
빠르게 문제를 해결할 수 있게 됨
58
콘텐츠제작
운영팀
클라이언트
QA팀
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
쿠키 굽는 과정 (After)
매 콘텐츠 제작때 발생하는
데이터 반영 요청 감소
배포된 콘텐츠의 이력을 명확히 파악하여
배포상의 실수를 방지하고
발생해도 빠르게 파악
59
콘텐츠제작
운영팀
클라이언트
QA팀
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
쿠키 굽는 과정 (After)
문제 상황 확인을 위해
빌드를 새로 뽑아야하는 상황 감소
독립적으로 안정화된 콘텐츠 묶음을
이용하여 코드 디버그에 집중
60
콘텐츠제작
운영팀
클라이언트
QA팀
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
쿠키 굽는 과정 (After)
어쨌든 일이 줄어듦
61
콘텐츠제작
운영팀
클라이언트
QA팀
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
쿠키 굽는 과정 (After)
어쨌든 일이 줄어듦
62
콘텐츠제작
운영팀
클라이언트
QA팀
그럼 쿠키런 콘텐츠는 어떻게 준비되나요?
63
회고 & 결론
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015 64
Git을 시스템 베이스로 사용한 것이 옳았는가?
테스트 코드 부재의 아쉬움
시스템의 Github 의존성
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
회고 1. 베이스 시스템 Git
Git을 사용한 것이 과연 좋은 선택이었을까?
공통적인 개념을 가져다 쓸 때는 편했다
예측하지 못한 부수적인 개발 공수(삽질)가 많이 들었다
Git도 괜찮았지만, 반드시 Git은 아니어도 된다
65
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
회고 2. 테스트 코드 부재
콘텐츠 배포과정에 상시 사용되는
매우 중요한 코드에 테스트가 없다!
문제가 생기면 실제 환경의 유저들 접속이 불가해짐
그런데 테스트가 없어 모르는 사람이 함부로 수정하기 어려움
여러분, 테스트 코드를 짭시다
66
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
회고 2. 테스트 코드 부재
67
이런거 안됩니다
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
회고 3. Github 의존성
시스템 전체가 Github에 의존적

(원격 저장소, Webhook 등)
대륙발로 추정되는 DDoS로 인해 Github가 작동하지 않았음
Github 장애로 개발자들이 멘붕할 때 콘텐츠 개발팀과 운영팀도 함께
멘붕
별도의 Git 서버를 구축하여 결국은 회피

하지만 구축과 동시에 Github가 정상으로 돌아왔...
68
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
결론
총 배포 회수 200회 이상, 총 전송 트래픽 6 PB 이상
콘텐츠를 만들고, 점검하고, 배포하는 과정에 들이는 시간이 줄어듦
파이썬이 아니었다면
이 정도 규모의 시스템을 만드는데에 얼마나 걸렸을까?
파이썬을 사용한 것은 탁월한 선택이었다
69
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
개발자가 개발에 집중할 수 있게

필요한 것을 아낌없이 지원해주는 회사
함께 일하는 것이 즐거운 스마트한 사람들
저희들과 함께 재밌는 거 만들지 않으시렵니까 ;p
세상을 즐겁게!
70
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015
Q & A
t
71
환영합니다.
최고의 팀에 합류하세요!
career@devsisters.com
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015 72
Python과 Git으로 만드는 모바일 게임 패치 시스템
Pycon KR 2015 73
감사합니다!

Más contenido relacionado

La actualidad más candente

유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기Kiyoung Moon
 
인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례Hyung Lee
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건강 민우
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성Hyunjik Bae
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3Heungsub Lee
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)Brian Hong
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기iFunFactory Inc.
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)Suhyun Park
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들Chris Ohk
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
 
FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기Jongwon Kim
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hostingiFunFactory Inc.
 

La actualidad más candente (20)

유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
 
FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
 

Destacado

AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지Changje Jeong
 
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기Juhong Park
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선NAVER D2
 
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)Brian Hong
 
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈Minwoo Kim
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016Taehoon Kim
 
[Gaming on AWS] AWS에서 실시간 멀티플레이 게임 구현하기 - 넥슨
[Gaming on AWS] AWS에서 실시간 멀티플레이 게임 구현하기 - 넥슨[Gaming on AWS] AWS에서 실시간 멀티플레이 게임 구현하기 - 넥슨
[Gaming on AWS] AWS에서 실시간 멀티플레이 게임 구현하기 - 넥슨Amazon Web Services Korea
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)Kyoungchan Lee
 
Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Joonsung Lee
 
서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음nexusz99
 
프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기Hyun-jik Bae
 
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++Min-soo Park
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 YoungSu Son
 
Apache Hive Hook
Apache Hive HookApache Hive Hook
Apache Hive HookMinwoo Kim
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Heungsub Lee
 
[NDC 2011] 게임 개발자를 위한 데이터분석의 도입
[NDC 2011] 게임 개발자를 위한 데이터분석의 도입[NDC 2011] 게임 개발자를 위한 데이터분석의 도입
[NDC 2011] 게임 개발자를 위한 데이터분석의 도입Hoon Park
 
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보Young Hoo Kim
 
세계 선도 It사 및 게임사 벤치마킹 + 인사이트 보고서 (6부)_새로운 삶의 시작
세계 선도 It사 및 게임사 벤치마킹 + 인사이트 보고서 (6부)_새로운 삶의 시작세계 선도 It사 및 게임사 벤치마킹 + 인사이트 보고서 (6부)_새로운 삶의 시작
세계 선도 It사 및 게임사 벤치마킹 + 인사이트 보고서 (6부)_새로운 삶의 시작Seunghun Lee
 
[5Rocks] 게임데이터 분석 세미나
[5Rocks] 게임데이터 분석 세미나[5Rocks] 게임데이터 분석 세미나
[5Rocks] 게임데이터 분석 세미나Tapjoy X 5Rocks
 
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈Amazon Web Services Korea
 

Destacado (20)

AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
 
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
 
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
 
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
 
[Gaming on AWS] AWS에서 실시간 멀티플레이 게임 구현하기 - 넥슨
[Gaming on AWS] AWS에서 실시간 멀티플레이 게임 구현하기 - 넥슨[Gaming on AWS] AWS에서 실시간 멀티플레이 게임 구현하기 - 넥슨
[Gaming on AWS] AWS에서 실시간 멀티플레이 게임 구현하기 - 넥슨
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
 
Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기
 
서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음
 
프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기
 
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기
 
Apache Hive Hook
Apache Hive HookApache Hive Hook
Apache Hive Hook
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러
 
[NDC 2011] 게임 개발자를 위한 데이터분석의 도입
[NDC 2011] 게임 개발자를 위한 데이터분석의 도입[NDC 2011] 게임 개발자를 위한 데이터분석의 도입
[NDC 2011] 게임 개발자를 위한 데이터분석의 도입
 
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
 
세계 선도 It사 및 게임사 벤치마킹 + 인사이트 보고서 (6부)_새로운 삶의 시작
세계 선도 It사 및 게임사 벤치마킹 + 인사이트 보고서 (6부)_새로운 삶의 시작세계 선도 It사 및 게임사 벤치마킹 + 인사이트 보고서 (6부)_새로운 삶의 시작
세계 선도 It사 및 게임사 벤치마킹 + 인사이트 보고서 (6부)_새로운 삶의 시작
 
[5Rocks] 게임데이터 분석 세미나
[5Rocks] 게임데이터 분석 세미나[5Rocks] 게임데이터 분석 세미나
[5Rocks] 게임데이터 분석 세미나
 
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
 

Similar a Python과 Git으로 만드는 모바일 게임 패치 시스템

if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01Klaytn
 
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표iFunFactory Inc.
 
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬Joohyun Han
 
2019 공개SW Contributon NNStreamer 발표자료
2019 공개SW Contributon NNStreamer 발표자료2019 공개SW Contributon NNStreamer 발표자료
2019 공개SW Contributon NNStreamer 발표자료HwanSeokJang1
 
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기덕규 임
 
Win10 iot core_pi2
Win10 iot core_pi2Win10 iot core_pi2
Win10 iot core_pi2WeAreDev
 
200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의 200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의 Joohyun Han
 
Dev Rookie 파이썬 GUI.pptx
Dev Rookie 파이썬 GUI.pptxDev Rookie 파이썬 GUI.pptx
Dev Rookie 파이썬 GUI.pptxMUUMUMUMU
 
알아두면 쓸모있는 깃허브 1
알아두면 쓸모있는 깃허브 1알아두면 쓸모있는 깃허브 1
알아두면 쓸모있는 깃허브 1Hansol Kang
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료지원 정
 
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화Jae-yeol Lee
 
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요Ian Choi
 
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...Byunghyun Ban
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 
[AIS 2018][Team Tools_Basic] Atlassian 제품 기반의 DevOps 구성 - 투씨드
[AIS 2018][Team Tools_Basic] Atlassian 제품 기반의 DevOps 구성 - 투씨드[AIS 2018][Team Tools_Basic] Atlassian 제품 기반의 DevOps 구성 - 투씨드
[AIS 2018][Team Tools_Basic] Atlassian 제품 기반의 DevOps 구성 - 투씨드Atlassian 대한민국
 
consumer_driven_contract with spring cloud contract at spring camp 2018
consumer_driven_contract with spring cloud contract at spring camp 2018consumer_driven_contract with spring cloud contract at spring camp 2018
consumer_driven_contract with spring cloud contract at spring camp 2018minseok kim
 
GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축철구 김
 
[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝
[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝
[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝Byunghyun Ban
 
Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Junyoung Lee
 
2018 GDG 인천 DevFest GoogleAndroidDevSummit
2018 GDG 인천 DevFest GoogleAndroidDevSummit2018 GDG 인천 DevFest GoogleAndroidDevSummit
2018 GDG 인천 DevFest GoogleAndroidDevSummitVeronika Bae
 

Similar a Python과 Git으로 만드는 모바일 게임 패치 시스템 (20)

if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01
 
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
 
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
200718 덕성여대 생물정보학 강의 :: 생물정보학 파이썬
 
2019 공개SW Contributon NNStreamer 발표자료
2019 공개SW Contributon NNStreamer 발표자료2019 공개SW Contributon NNStreamer 발표자료
2019 공개SW Contributon NNStreamer 발표자료
 
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
 
Win10 iot core_pi2
Win10 iot core_pi2Win10 iot core_pi2
Win10 iot core_pi2
 
200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의 200720 바이오협회 생물정보학 파이썬 강의
200720 바이오협회 생물정보학 파이썬 강의
 
Dev Rookie 파이썬 GUI.pptx
Dev Rookie 파이썬 GUI.pptxDev Rookie 파이썬 GUI.pptx
Dev Rookie 파이썬 GUI.pptx
 
알아두면 쓸모있는 깃허브 1
알아두면 쓸모있는 깃허브 1알아두면 쓸모있는 깃허브 1
알아두면 쓸모있는 깃허브 1
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
 
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
 
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
[AIS 2018][Team Tools_Basic] Atlassian 제품 기반의 DevOps 구성 - 투씨드
[AIS 2018][Team Tools_Basic] Atlassian 제품 기반의 DevOps 구성 - 투씨드[AIS 2018][Team Tools_Basic] Atlassian 제품 기반의 DevOps 구성 - 투씨드
[AIS 2018][Team Tools_Basic] Atlassian 제품 기반의 DevOps 구성 - 투씨드
 
consumer_driven_contract with spring cloud contract at spring camp 2018
consumer_driven_contract with spring cloud contract at spring camp 2018consumer_driven_contract with spring cloud contract at spring camp 2018
consumer_driven_contract with spring cloud contract at spring camp 2018
 
GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축
 
[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝
[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝
[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝
 
Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)
 
2018 GDG 인천 DevFest GoogleAndroidDevSummit
2018 GDG 인천 DevFest GoogleAndroidDevSummit2018 GDG 인천 DevFest GoogleAndroidDevSummit
2018 GDG 인천 DevFest GoogleAndroidDevSummit
 

Python과 Git으로 만드는 모바일 게임 패치 시스템

  • 1. Python과 Git으로 만드는 모바일 게임 패치 시스템 데브시스터즈 | 오영택 1
  • 2. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 2 ㅅ 오영택 현 DEVSISTERS 서버팀
 라이브 서비스 서버파트 및 인프라 총괄 KAIST 전산동아리 SPARCS 26, 남 발표자 소개
  • 3. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 3 꽤 많은 분들이 아시리라 생각하는 그 모바일 게임 출시 2년 5개월차, 새로운 모습을 보이기 위해 달리는 중! 쿠키런
  • 4. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 게임 개발의 목표 4 ?
  • 5. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 게임 개발의 목표 5
  • 6. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 게임 개발의 목표 밥먹을 돈을 번다 6
  • 7. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 게임 개발의 목표 게임은 수많은 콘텐츠의 집대성 사용자가 즐길 수 있도록 콘텐츠를 효율적으로 전달하는 것 7
  • 8. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 콘텐츠의 전달의 핵심 아트웍, 사운드, UI, 밸런스 등등... 각각의 콘텐츠가 준비돼 하나로 결합하는 과정 8
  • 9. 그럼 쿠키런 콘텐츠는 어떻게 준비되나요? 9 예전의 콘텐츠 준비 과정
  • 10. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 게임 패치란? 새로운 이벤트가 열릴 때, 데이터가 수정됐을 때 받는 이것 10
  • 11. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 패치 시스템 구조 한 묶음의 콘텐츠를 가지고 있는 패치 서버 테스트가 필요한 파일을 패치 서버에 올림 클라이언트가 패치를 다운로드 받아 테스트 11 패치 서버 클라이언트
  • 12. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 쿠키 굽는 과정 (Before) 1. 아트팀이 정글전사 쿠키를 그린다 12 아트팀 운영팀 클라이언트 QA팀
  • 13. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 쿠키 굽는 과정 (Before) 2. 운영팀이 해당 내용을 받아서 서버에 올려본다. 13 아트팀 운영팀 클라이언트 QA팀
  • 14. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 쿠키 굽는 과정 (Before) 3. 올렸는데 반영이 되지 않는다. 왜인지 모르겠다. 4. 클라이언트팀에 요청해 디버그 빌드를 뽑는다. 14 아트팀 운영팀 클라이언트 QA팀
  • 15. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 쿠키 굽는 과정 (Before) 5. 반영을 해서 테스트한다. 15 아트팀 운영팀 클라이언트 QA팀 어라, 변신하는 애니메이션에 얼굴이 없네? 호랑이가 더 밝은 느낌이면 좋겠어요!
  • 16. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 쿠키 굽는 과정 (Before) 6. 고친다. 나. 정글전사 16 아트팀 운영팀 클라이언트 QA팀
  • 17. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 쿠키 굽는 과정 (Before) 아트팀 운영팀 클라이언트 QA팀 문제 확인을 위해 거쳐야하는 팀들? 적으면 2개, 보통 3개팀 문제를 확인하기까지 걸리는 시간? 최소 1~2시간, 길게는 반나절 17
  • 18. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 콘텐츠를 독립적으로 확인하기 어려움 18 저 이 파일 업로드 해도 되나요? 제 거 테스트 중이에요! 조금만 (1시간) 기다리세요.
  • 19. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 콘텐츠를 독립적으로 확인하기 어려움 개발 환경에서 필요한만큼 독립적으로 콘텐츠 묶음을 만들 수 있어야 함 19 저 이 파일 업로드 해도 되나요? 제 거 테스트 중이에요! 조금만 (1시간) 기다리세요.
  • 20. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 언제 어떤 콘텐츠를 올렸는지 알 수 없음 20 쿠키 이미지 고친걸 안 올렸나? 이 때 업데이트 한 게 어떤 파일들인지 모르겠어..
  • 21. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 언제 어떤 콘텐츠를 올렸는지 알 수 없음 쿠키 이미지 고친걸 안 올렸나? 이 때 업데이트 한 게 어떤 파일들인지 모르겠어.. 콘텐츠가 전부 관리되고, 변경점이 명확하게 파악되어야 함. 21
  • 22. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 테스트 후 원래 상태로 돌리기 어려움 22 테스트 하기 전으로 돌려야 하는데 어떻게 해야하지?
  • 23. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 테스트 후 원래 상태로 돌리기 어려움 테스트 하기 전으로 돌려야 하는데 어떻게 해야하지? 콘텐츠 묶음을 원하는 상태로 손쉽게 리셋할 수 있어야함 23
  • 24. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 바뀐적이 없는 파일이 올라가 혼동을 유발함 24 이번에 파일 5개 올려서 업데이트 했어요~ ?!?! 바뀐 게 하나밖에 없을텐데??
  • 25. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 바뀐적이 없는 파일이 올라가 혼동을 유발함 이번에 파일 5개 올려서 업데이트 했어요~ ?!?! 바뀐 게 하나밖에 없을텐데?? 최소 변경점만이 반영되고 패치로 생성되어야 함. 25
  • 26. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 필요한 것들 정리 개발 환경에서 필요한만큼 독립적으로 콘텐츠 묶음을 정의 콘텐츠가 전부 관리되고, 변경점이 명확하게 파악돼야함 콘텐츠 묶음을 원하는 상태로 손쉽게 리셋 최소 변경점만이 반영되고 패치로 생성돼야함 26
  • 27. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 27 개발 환경에서 필요한만큼 독립적으로 콘텐츠 묶음을브랜치를 정의 콘텐츠가파일이 전부 버전관리되고, 변경점이 명확하게 파악돼야함됨 콘텐츠 묶음을브랜치를 원하는 상태로 손쉽게 리셋 최소 변경점만이 반영되고 패치로 생성돼야함할 수 있음
  • 28. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 Git 개발 환경에서 필요한만큼 독립적으로 브랜치를 정의 파일이 전부 버전관리되고, 변경점이 명확하게 파악됨 브랜치를 원하는 상태로 손쉽게 리셋 최소 변경점만이 반영되고 패치로 생성할 수 있음 28
  • 29. 그럼 쿠키런 콘텐츠는 어떻게 준비되나요? 29 새로운 시스템의 구조
  • 30. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 기본 작동 방식 테스트 클라이언트는 Jungle 브랜치를 바라봄 테스트해보니 얼굴 없는 정글전사를 포착!(A) 30
  • 31. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 기본 작동 방식 수정된 내용을 커밋(B) 이후 클라이언트를 실행하면 새로운 데이터가 있음을 알 수 있게됨 31
  • 32. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 기본 작동 방식 클라이언트는 Jungle 브랜치의 최신 커밋이 자신이 가진 A가 아닌 B임을 파악 A에서 B로 가는 패치를 서버에 요청 32
  • 33. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 기본 작동 방식 서버가 내려준 패치 A to B를 받아 적용 이 패치에는 새로운 정글전사 이미지(B)가 포함됨 정글전사에 얼굴이 생겼다! 33
  • 34. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 기본 작동 방식 34
  • 35. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 기본 작동 방식 35
  • 36. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 기본 작동 방식 36
  • 37. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 만든 것 1. 패치 파일 서버 Git 원격 저장소로부터 최신 내용을 항상 받아옴 클라이언트에 브랜치의 최신 커밋을 알려줌 요청받은 커밋 A와 커밋 B 사이에 달라진 파일들을 하나로 압축해 내려줌 37
  • 38. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 만든 것 2. Git 웹 클라이언트 비개발자들(아트, UI, QA 등등)을 위해 만들어짐 원하는 브랜치에 파일을 업로드하는 기능 변경사항을 커밋해주는 시스템 기존의 Django 베이스의 쿠키런 운영 툴에 구현 38
  • 39. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 만든 것 3. 콘텐츠 배포 시스템 필요한 패치 파일들을 생성 AWS S3에 업로드 CDN에 해당 파일들을 반영 사용자들에게 배포 39
  • 40. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 시스템을 쓰는 방법 콘텐츠를 만들고 Git 저장소의 브랜치에 콘텐츠를 올림 40
  • 41. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 시스템을 쓰는 방법 올린 파일은 패치 시스템에 자동 동기화 41 Github webhook을 이용 Github에서 이벤트 발생시 알려주는 기능
  • 42. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 시스템을 쓰는 방법 테스트 클라이언트를 사용해 콘텐츠 확인 42
  • 43. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 시스템을 쓰는 방법 검증이 끝난 콘텐츠는 배포 단계를 거쳐 사용자에게 전달 43
  • 44. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 44
  • 45. 그럼 쿠키런 콘텐츠는 어떻게 준비되나요? 45 새로운 시스템의 재료
  • 46. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 이걸 어떻게 만들지 Git 저장소를 손쉽게 코드로 조작 저장소를 바탕으로 필요한 파일을 생성하여 제공 콘텐츠 관리를 쉽게 만들어 줄 프론트엔드 도구 46 다양한 이질적인 요소들을 결합할 수 있어야 한다
  • 47. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 Python 이질적인 요소들도 쉽게 연동할 수 있다 (glue language) 개발 속도가 빠르고, 이해하기 쉽다 라이브러리가 다양하고, 잘 알려진 것들을 믿고 쓸 수 있다 사내 많은 개발자들이 이미 파이썬에 친숙하다 47
  • 48. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 Pygit2 에 기반한 라이브러리 libgit2는 github에서도 사용하고 있음 사용을 위해서는 git 내부 구조를 이해해야함
 (https://git-scm.com/book/en/v1/Git-Internals 을 참고) 문서가 다소 불친절.. 48
  • 49. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 Pygit2 개발 당시 (2014년 중반) libgit2는 아직 안정적인 상태가 아님 어처구니 없는 버그(들)이 존재 (예 : 아무리 큰 파일도 commit push할때 첫 32KB까지만 전송하는 버그) 종종 libgit2 코드를 통해 작동 방식을 확인할 필요가 있음 49
  • 50. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 Bottle Python의 수많은 웹 프레임워크 중 하나 단일 모듈로 웹서버를 빠르고 손쉽게 구축 단순한 로직의 구현에는 매우 쓸만함 50
  • 51. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 Bottle Hello {name} 을 출력하는 웹서버 (bottlepy 첫 예제) 51 from bottle import route, run, template @route('/hello/<name>') def index(name): return template('<b>Hello {{name}}</b>!', name=name) run(host='localhost', port=8080)
  • 52. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 Bottle Git 저장소에서 특정 로컬 브랜치의 최신 리비전을 출력하는 웹서버 52 import bottle import pygit2 @bottle.route('/branch/<branch_name>') def get_latest_revision(branch_name): repo = pygit2.Repository(‘/path/to/repo‘) branch = repo.lookup_branch(branch_name) return str(branch.target) if branch else 'branch not found' bottle.run(host='localhost', port=8080)
  • 53. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 그외에 라이브러리 boto - AWS Python SDK paramiko - SSH2 프로토콜 라이브러리 fabric - 서버 배포에 특화된 SSH 라이브러리 53
  • 54. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 54
  • 55. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 55
  • 56. 그럼 쿠키런 콘텐츠는 어떻게 준비되나요? 56 새로운 시스템의 효과
  • 57. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 콘텐츠 제작 과정 Before & After 57 콘텐츠제작 운영팀 클라이언트 QA팀 콘텐츠제작 운영팀 클라이언트 QA팀
  • 58. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 쿠키 굽는 과정 (After) 콘텐츠 확인을 직접 할 수 있게 됨 콘텐츠 확인에 필요한 시간이 매우 단축됨
 ( 수시간 -> 10분 이하 ) 콘텐츠를 자주 확인하고 빠르게 문제를 해결할 수 있게 됨 58 콘텐츠제작 운영팀 클라이언트 QA팀
  • 59. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 쿠키 굽는 과정 (After) 매 콘텐츠 제작때 발생하는 데이터 반영 요청 감소 배포된 콘텐츠의 이력을 명확히 파악하여 배포상의 실수를 방지하고 발생해도 빠르게 파악 59 콘텐츠제작 운영팀 클라이언트 QA팀
  • 60. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 쿠키 굽는 과정 (After) 문제 상황 확인을 위해 빌드를 새로 뽑아야하는 상황 감소 독립적으로 안정화된 콘텐츠 묶음을 이용하여 코드 디버그에 집중 60 콘텐츠제작 운영팀 클라이언트 QA팀
  • 61. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 쿠키 굽는 과정 (After) 어쨌든 일이 줄어듦 61 콘텐츠제작 운영팀 클라이언트 QA팀
  • 62. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 쿠키 굽는 과정 (After) 어쨌든 일이 줄어듦 62 콘텐츠제작 운영팀 클라이언트 QA팀
  • 63. 그럼 쿠키런 콘텐츠는 어떻게 준비되나요? 63 회고 & 결론
  • 64. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 64 Git을 시스템 베이스로 사용한 것이 옳았는가? 테스트 코드 부재의 아쉬움 시스템의 Github 의존성
  • 65. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 회고 1. 베이스 시스템 Git Git을 사용한 것이 과연 좋은 선택이었을까? 공통적인 개념을 가져다 쓸 때는 편했다 예측하지 못한 부수적인 개발 공수(삽질)가 많이 들었다 Git도 괜찮았지만, 반드시 Git은 아니어도 된다 65
  • 66. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 회고 2. 테스트 코드 부재 콘텐츠 배포과정에 상시 사용되는 매우 중요한 코드에 테스트가 없다! 문제가 생기면 실제 환경의 유저들 접속이 불가해짐 그런데 테스트가 없어 모르는 사람이 함부로 수정하기 어려움 여러분, 테스트 코드를 짭시다 66
  • 67. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 회고 2. 테스트 코드 부재 67 이런거 안됩니다
  • 68. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 회고 3. Github 의존성 시스템 전체가 Github에 의존적
 (원격 저장소, Webhook 등) 대륙발로 추정되는 DDoS로 인해 Github가 작동하지 않았음 Github 장애로 개발자들이 멘붕할 때 콘텐츠 개발팀과 운영팀도 함께 멘붕 별도의 Git 서버를 구축하여 결국은 회피
 하지만 구축과 동시에 Github가 정상으로 돌아왔... 68
  • 69. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 결론 총 배포 회수 200회 이상, 총 전송 트래픽 6 PB 이상 콘텐츠를 만들고, 점검하고, 배포하는 과정에 들이는 시간이 줄어듦 파이썬이 아니었다면 이 정도 규모의 시스템을 만드는데에 얼마나 걸렸을까? 파이썬을 사용한 것은 탁월한 선택이었다 69
  • 70. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 개발자가 개발에 집중할 수 있게
 필요한 것을 아낌없이 지원해주는 회사 함께 일하는 것이 즐거운 스마트한 사람들 저희들과 함께 재밌는 거 만들지 않으시렵니까 ;p 세상을 즐겁게! 70
  • 71. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 Q & A t 71 환영합니다. 최고의 팀에 합류하세요! career@devsisters.com
  • 72. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 72
  • 73. Python과 Git으로 만드는 모바일 게임 패치 시스템 Pycon KR 2015 73 감사합니다!