68
삼시세끼 빌드 만들기 에이스프로젝트

NDC 2015 삼시세끼 빌드만들기

Embed Size (px)

Citation preview

삼시세끼 빌드 만들기

에이스프로젝트

안 현 석

발표자 소개에이스 프로젝트 개발팀장

넥슨 코리아 실장모바일 메이플 시리즈 개발

신규 프로젝트 개발중…

(2004 ~ 2014)

(입사 7개월째…)

…다수의 모바일 게임 프로젝트 진행

오늘 제가 할 이야기!

빌드를 자주 만들자!그리고

좀 편하게 만들자!

애자일 방법론

스크럼

새로운 개발 방법론

가장 귀찮아 하는 작업인 빌드 만들기

게임 개발시 프로그래머가

제가 경험한 사례를 통하여

이야기 해보려고 합니다

우리가 가져야 할 마음가짐을

지옥같은 매주 빌드회의

매주 금요일 빌드회의

신규 프로젝트 진행상황 공유를 위한 자리

파트별로 1주일동안 작업진행 상황 공유

새로운 빌드를 플레이하면서 회의 진행

개발팀 미션

매주 금요일 오후 4시전까지 새로운 빌드 만들기

iOS / 안드로이드 빌드 공유

빌드 작업 - 대략 20분 소요

빌드담당 H님

git에서 팀원들 소스를 받아서 merge 하고...

git에서 디자인 리소스를 받아서 publish 하고....

빌드 버젼을 올리고...

iOS 빌드를 하고...

안드로이드 빌드를 하고...

서버에 빌드파일을 올리고....

새로운 빌드 공유 메일까지 보내면 끝!

한방에 되면 좋으련만…

빌드담당 H님 프로그래머 J님 프로그래머 S님

빌드완료!네! ㅇㅋ!

테스트 해봐요!

항상 문제가 생긴다…

빌드담당 H님

프로그래머 J님 프로그래머 S님

!@#$!@#$!

자꾸 다운되요 화면이 깨져요실행이 안되요

너무 느려요터치가 안되요

사이즈 대응

회의시간은 다가오고 빌드는 안나오고…

개발팀장

아직도 빌드중…

곧 회의 시작인데…

회의시작 5분 남았는데…

오늘 또 혼나겠군...

이번엔 제발 성공해라.. ㅠㅠ

무슨 핑계를 대지…

멘탈이 무너지는구나… 아… 집에가고 싶다…

결과는… 당연히 좋지 않았습니다…

다들 이런 경험 한번쯤은 있지 않나요?

빌드를 만드는 작업은

왜 항상 문제가 많이 생길까요?

프로그래머의 능력이 부족해서일까요?

우리가 빌드를

자주 만들지 않기 때문입니다

귀찮고 번거로우니까…

빌드를 자주 만들어서리스크를 분산할 필요가 있다

매일 조금씩 해결하자

일일빌드로 리스크를 줄여보자

이제 빌드는 내가하겠소!

개발팀장

“이제 매일 빌드를 해야하니 내가 할께요!”“개발에 좀 더 집중해주세요!”

“그리고 매일 오후 6시에 빌드작업을 시작할께요!”

프로그래머 J님 프로그래머 S님프로그래머 H님

드디어 해방이다! 쉽지 않을걸요? 오~팀장님 짱~!

일일빌드를 위하여…

개발팀장

프로그래머 J님 프로그래머 S님프로그래머 H님

빌드를 만들기 위해 작업이 완료되지 않은 코드는 모두 주석처리

새로운 기능구현과 마스터빌드 수정 병행

‘머…먼가… 너무 힘들다…’

5시반이에요! git에 올려줘요!

브랜치는 먹는건가요?각자 독립적인 작업영역을 가지고 작업을 분기할 수 있는 기능

언제 사용하는가?현재의 안정적인 버젼을 유지하면서테스트 용도의 개발이나 장기간의 기능구현이 필요할때!

새로운 기능구현과 마스터 빌드의 수정을 병행해야 할때!

출처: 누구나 쉽게 이해할 수 있는 Git 입문

우리가 Git을 사용하는 이유!

빠르고 쉬운 브랜치 모델그 어떤 버전관리시스템 보다 빠르고 쉽다!

로컬에 다수의 브랜치를 허용하고 각각 완벽한 독립성을 제공한다!

브랜치 전환시 작업파일들이 실시간으로 변경된다!

브랜치로 유연해진 작업전환!

개발팀장

프로그래머 J님 프로그래머 S님프로그래머 H님

무조건 새로운 브랜치를 만들어서 작업하자!마스터빌드 때문에 완성되지 않은 작업을 주석처리할 필요 없어짐

새로운 작업을 시작할때는

작업이 완료되지 않아도 언제든지 중단하고 다른작업 가능

끝내주지 않음?

오~ 신세계임! 이걸 몰랐었다니 Git 짱조아요!

내친김에 일일빌드 회의까지!

개발팀장

“매일 오전 1시간씩 일일빌드 회의를 하겠어요!”“디자인팀과 기획팀도 참석해주세요~”

디자인팀 대표이사기획팀

오~ 그게 가능해? 잘 안될걸… 진작에 했어야지

“앞으론 일일빌드 회의로 매일매일 피드백 주세요!!!”

더 이상 두렵지 않아!

개발팀장대표이사

하지만 매일 리스크를 조금씩 줄여나가니 재빌드 횟수도 점점 줄어들고

빌드는 자연스럽게 안정화 되어가고 있었다

첫 1주일은 고통의 시간이였다

요즘 빌드가 좀 안정적인데?

뭐지? 칭찬인가?

일일빌드로

빌드와 개발팀은 안정화되었고

매일 리스크를 줄이니

구현사항에 대한

빌드의 완성도가 높아졌다!

피드백을 빠르게 받을 수 있어서

귀차니즘이 도지다

오후 6시 - 개발팀

개발팀장

매일 6시 정각에 빌드를 시작하기가 쉽지는 않았다

프로그래머 J님 프로그래머 S님프로그래머 H님

10분만여! 4시간만…

빌드 시작합니다

2시간만…

작업이 끝나길 기다리거나다음날 아침 일찍 출근하여 빌드를 만들기도 하였다

점점 귀찮아진다…

개발팀장

아~ 귀찮네~

디자인팀 대표이사기획팀

무슨 개똥같은 소리야! 그럴줄 알았다 자알한다

회의가 있을수도 있고 약속이 생길수도 있어서

매일 1시간이상을 빌드 만들기에 시간을 쏟는건 너무 고달펐습니다

오늘은 패스할까?

개발팀장

나를 대신 할놈이 필요하다매일 하기에는 과정이 너무나도 번거롭다…

git에서 팀원들 소스를 받아서 merge 하고...

git에서 디자인 리소스를 받아서 publish 하고....

빌드 버젼을 올리고...

iOS 빌드를 하고...

안드로이드 빌드를 하고...

서버에 빌드파일을 올리고....

새로운 빌드 공유 메일까지 보내면 끝!

나를 대신 할놈이 필요하다

개발팀장

우리팀 막내

알바천국

자비스

빌드 자동화를 해볼까?

개발팀장

빌드 자동화

Shell ScriptJenkins

TeamCity

CruiseControl

까칠한 Jenkins씨 고용하기

자네 나와 같이 일할 생각 없나?

나를 화나지 않게 할 자신이 있다면.. 훗~

까칠한 Jenkins씨

오픈소스 CI 툴 (빌드 자동화)* CI = Continuous Integration

원래 이름은 허드슨이였다

JAVA로 만들어졌고 웹으로 손쉽게 관리가 가능하다

CVS, SVN, Git 등의 버전 관리 시스템 지원

Xcode, Unity, ant, maven 등의 빌드툴 지원

* 팀의 구성원들이 작업한 내용을 정기적으로 통합한다

Jenkins씨를 선택한 이유

무료다!* TeamCity의 경우 무료버젼은 20개의 프로젝트만 생성가능

플러그인이 굉장히 많다 (100여개)

사용자가 많아서 Reference가 풍부하다

오픈소스임에도 불구하고 유지보수가 잘되고있다

다양한 OS에 설치가 가능하다* Windows, Mac OS X, FreeBSD, OpenBSD* Ubuntu / Debian, RedHat / Fedora / CentOS …

Jenkins씨 고용하기 - 다운로드

https://jenkins-ci.org

내 OS에 맞는 Package 다운로드

Jenkins씨 고용하기 - 설치하기 Mac 기준

설치파일을 실행 후…

계속… 계속… 하면 쉽게 설치완료!

Jenkins씨 고용하기 - 실행하기 Mac 기준

Finder -> 응용프로그램 -> Jenkins

jenkins.war 실행한 뒤

잠시 후, localhost:8080 으로 접속!

Jenkins씨 고용하기 - 플러그인 설치

Jenkins 관리 -> 플러그인 관리

원하는 플러그인을 검색하여 설치 가능

Xcode PluginGit PluginAnt Plugin

Email-ext Plugin…

Jenkins씨 삼시세끼 부려먹기

쉽지 않을걸요? 훗~

개발팀장

빌드 작업 - 대략 20분 소요 이 작업을 모두 Jenkins씨한테 넘기자!

git에서 최신 코드를 받아서 merge 하고...

git에서 디자인 리소스를 받아서 publish 하고....

빌드 버젼을 올리고...

iOS 빌드를 하고...

안드로이드 빌드를 하고...

서버에 빌드파일을 올리고....

새로운 빌드 공유 메일까지 보내면 끝!

빌드 프로세스 구성

총 4개의 git 저장소를 사용

Cocos Engine Builder Game

PULL

BUILD

PULL PULL

PUBLISH

PULL

VERSION

BUILD

UPLOAD

MAIL

모든게 자동화 되어야 한다

완벽한 빌드 자동화를 위한 부가적인 툴 개발

cocosBuilderPublishversionUpdater

upload.sh

[Command line tool]

빌드 프로세스 설정완료!

Game

Engine

cocos

Builder

원클릭 빌드시작!

빌드 실행 상태

cocos Engine Builder Game

Console Output

Game

제대로 부려먹자! 삼시세끼 빌드하기!

전날 저녁 7시부터 당일 오전 8시까지 작업분 빌드 (야근을 할수도…)

오후 1시 빌드

오전 8시 빌드

저녁 7시 빌드

오전 8시부터 오후 1시까지 작업분 빌드 (오전 작업분 확인가능)

오후 1시부터 저녁 7시까지 작업분 빌드 (오후 작업분 확인가능)

* 이외의 시간에 빌드를 만들어야 할때는 강제빌드! (원클릭) *

Jenkins씨는 부지런하다

Jenkins씨는 친절하다

물론 자주하다보니……

개발팀장

디자인팀 대표이사기획팀

오늘은 Jenkins씨가 일을 안하는데? 스팸 그만 보내삼

맨날 no changes야!

Jenkins씨 고마워요

20시간 vs 300시간+

수작업 보다 훨씬 안정적인 자동화

빌드 / 재빌드 부담 제로

빌드에 넣고 싶으면 git에 커밋만 하면된다!

핵심요약

빌드를 자주 만들자

매일 리스크를 줄여서 빌드의 안정성을 지속적으로 확보하자

일일 빌드회의를 통하여 빌드의 완성도를 높이자

브랜치를 활용하여 일일빌드를 더 유연하게 하자 (git 추천)

빌드를 좀 편하게 만들자

CI툴을 이용하여 빌드를 자동화 하자

Reference와 Plugin이 많은 Jenkins가 꽤 괜찮다 (추천)

힘들어도 완벽한 자동화 시스템을 구축하기 위해 노력하자

관심을 계속 주지 않으면 삐뚤어져요

빌드는 어린아이 같아요

마치며…

[기획팀과 디자인팀]

기획팀

“개발팀은 항상 바빠서 빌드 요청하는게 눈치보였는데…

지금은 Jenkins씨가 알아서 빌드를 만들어주니 너무 좋아요!”

디자인팀

“Jenkins씨 덕분에

빌드에 대한 두려움도 사라지고

개발에 집중할 수 있어 좋아요!”프로그래머 J님 프로그래머 S님

프로그래머 H님

[개발팀]

나의 게임과 나의 동료를 건강하게 합니다

좋은 프로세스와 툴은

개발팀장

지금 당장 해보세요!

나의 게임과 나의 동료를 위해

에이스 프로젝트

컴투스 프로야구FOR 매니저 개발사

채용담당[email protected]

감사합니다.

[email protected]안현석