Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

NDC 2015 삼시세끼 빌드만들기

3,159 views

Published on

NDC 2015에서 발표한 삼시세끼 빌드만들기! 입니다.
삼시세끼 빌드만들기를 어떻게 하였는지 저희 경험과 사례를 통하여 설명하였습니다.

Published in: Software
  • Be the first to comment

NDC 2015 삼시세끼 빌드만들기

  1. 1. 삼시세끼 빌드 만들기 에이스프로젝트 안 현 석
  2. 2. 발표자 소개 에이스 프로젝트 개발팀장 넥슨 코리아 실장 모바일 메이플 시리즈 개발 신규 프로젝트 개발중… (2004 ~ 2014) (입사 7개월째…) … 다수의 모바일 게임 프로젝트 진행
  3. 3. 오늘 제가 할 이야기!
  4. 4. 빌드를 자주 만들자! 그리고 좀 편하게 만들자!
  5. 5. 애자일 방법론 스크럼 새로운 개발 방법론
  6. 6. 가장 귀찮아 하는 작업인 빌드 만들기 게임 개발시 프로그래머가
  7. 7. 제가 경험한 사례를 통하여 이야기 해보려고 합니다 우리가 가져야 할 마음가짐을
  8. 8. 지옥같은 매주 빌드회의
  9. 9. 매주 금요일 빌드회의 신규 프로젝트 진행상황 공유를 위한 자리 파트별로 1주일동안 작업진행 상황 공유 새로운 빌드를 플레이하면서 회의 진행
  10. 10. 개발팀 미션 매주 금요일 오후 4시전까지 새로운 빌드 만들기 iOS / 안드로이드 빌드 공유
  11. 11. 빌드 작업 - 대략 20분 소요 빌드담당 H님 git에서 팀원들 소스를 받아서 merge 하고... git에서 디자인 리소스를 받아서 publish 하고.... 빌드 버젼을 올리고... iOS 빌드를 하고... 안드로이드 빌드를 하고... 서버에 빌드파일을 올리고.... 새로운 빌드 공유 메일까지 보내면 끝!
  12. 12. 한방에 되면 좋으련만… 빌드담당 H님 프로그래머 J님 프로그래머 S님 빌드완료! 네! ㅇㅋ! 테스트 해봐요!
  13. 13. 항상 문제가 생긴다… 빌드담당 H님 프로그래머 J님 프로그래머 S님 !@#$!@#$! 자꾸 다운되요 화면이 깨져요 실행이 안되요 너무 느려요 터치가 안되요 사이즈 대응
  14. 14. 회의시간은 다가오고 빌드는 안나오고… 개발팀장 아직도 빌드중… 곧 회의 시작인데… 회의시작 5분 남았는데… 오늘 또 혼나겠군... 이번엔 제발 성공해라.. ㅠㅠ 무슨 핑계를 대지… 멘탈이 무너지는구나… 아… 집에가고 싶다…
  15. 15. 결과는… 당연히 좋지 않았습니다…
  16. 16. 다들 이런 경험 한번쯤은 있지 않나요?
  17. 17. 빌드를 만드는 작업은 왜 항상 문제가 많이 생길까요?
  18. 18. 프로그래머의 능력이 부족해서일까요?
  19. 19. 우리가 빌드를 자주 만들지 않기 때문입니다 귀찮고 번거로우니까…
  20. 20. 빌드를 자주 만들어서 리스크를 분산할 필요가 있다 매일 조금씩 해결하자
  21. 21. 일일빌드로 리스크를 줄여보자
  22. 22. 이제 빌드는 내가하겠소! 개발팀장 “이제 매일 빌드를 해야하니 내가 할께요!” “개발에 좀 더 집중해주세요!” “그리고 매일 오후 6시에 빌드작업을 시작할께요!” 프로그래머 J님 프로그래머 S님프로그래머 H님 드디어 해방이다! 쉽지 않을걸요? 오~팀장님 짱~!
  23. 23. 일일빌드를 위하여… 개발팀장 프로그래머 J님 프로그래머 S님프로그래머 H님 빌드를 만들기 위해 작업이 완료되지 않은 코드는 모두 주석처리 새로운 기능구현과 마스터빌드 수정 병행 ‘머…먼가… 너무 힘들다…’ 5시반이에요! git에 올려줘요!
  24. 24. 브랜치는 먹는건가요? 각자 독립적인 작업영역을 가지고 작업을 분기할 수 있는 기능 언제 사용하는가? 현재의 안정적인 버젼을 유지하면서 테스트 용도의 개발이나 장기간의 기능구현이 필요할때! 새로운 기능구현과 마스터 빌드의 수정을 병행해야 할때! 출처: 누구나 쉽게 이해할 수 있는 Git 입문
  25. 25. 우리가 Git을 사용하는 이유! 빠르고 쉬운 브랜치 모델 그 어떤 버전관리시스템 보다 빠르고 쉽다! 로컬에 다수의 브랜치를 허용하고 각각 완벽한 독립성을 제공한다! 브랜치 전환시 작업파일들이 실시간으로 변경된다!
  26. 26. 브랜치로 유연해진 작업전환! 개발팀장 프로그래머 J님 프로그래머 S님프로그래머 H님 무조건 새로운 브랜치를 만들어서 작업하자! 마스터빌드 때문에 완성되지 않은 작업을 주석처리할 필요 없어짐 새로운 작업을 시작할때는 작업이 완료되지 않아도 언제든지 중단하고 다른작업 가능 끝내주지 않음? 오~ 신세계임! 이걸 몰랐었다니 Git 짱조아요!
  27. 27. 내친김에 일일빌드 회의까지! 개발팀장 “매일 오전 1시간씩 일일빌드 회의를 하겠어요!” “디자인팀과 기획팀도 참석해주세요~” 디자인팀 대표이사기획팀 오~ 그게 가능해? 잘 안될걸… 진작에 했어야지 “앞으론 일일빌드 회의로 매일매일 피드백 주세요!!!”
  28. 28. 더 이상 두렵지 않아! 개발팀장 대표이사 하지만 매일 리스크를 조금씩 줄여나가니 재빌드 횟수도 점점 줄어들고 빌드는 자연스럽게 안정화 되어가고 있었다 첫 1주일은 고통의 시간이였다 요즘 빌드가 좀 안정적인데? 뭐지? 칭찬인가?
  29. 29. 일일빌드로 빌드와 개발팀은 안정화되었고 매일 리스크를 줄이니
  30. 30. 구현사항에 대한 빌드의 완성도가 높아졌다! 피드백을 빠르게 받을 수 있어서
  31. 31. 귀차니즘이 도지다
  32. 32. 오후 6시 - 개발팀 개발팀장 매일 6시 정각에 빌드를 시작하기가 쉽지는 않았다 프로그래머 J님 프로그래머 S님프로그래머 H님 10분만여! 4시간만… 빌드 시작합니다 2시간만… 작업이 끝나길 기다리거나 다음날 아침 일찍 출근하여 빌드를 만들기도 하였다
  33. 33. 점점 귀찮아진다… 개발팀장 아~ 귀찮네~ 디자인팀 대표이사기획팀 무슨 개똥같은 소리야! 그럴줄 알았다 자알한다 회의가 있을수도 있고 약속이 생길수도 있어서 매일 1시간이상을 빌드 만들기에 시간을 쏟는건 너무 고달펐습니다 오늘은 패스할까?
  34. 34. 개발팀장 나를 대신 할놈이 필요하다 매일 하기에는 과정이 너무나도 번거롭다… git에서 팀원들 소스를 받아서 merge 하고... git에서 디자인 리소스를 받아서 publish 하고.... 빌드 버젼을 올리고... iOS 빌드를 하고... 안드로이드 빌드를 하고... 서버에 빌드파일을 올리고.... 새로운 빌드 공유 메일까지 보내면 끝!
  35. 35. 나를 대신 할놈이 필요하다 개발팀장 우리팀 막내 알바천국 자비스
  36. 36. 빌드 자동화를 해볼까? 개발팀장 빌드 자동화 Shell Script Jenkins TeamCity CruiseControl
  37. 37. 까칠한 Jenkins씨 고용하기 자네 나와 같이 일할 생각 없나? 나를 화나지 않게 할 자신이 있다면.. 훗~
  38. 38. 까칠한 Jenkins씨 오픈소스 CI 툴 (빌드 자동화) * CI = Continuous Integration 원래 이름은 허드슨이였다 JAVA로 만들어졌고 웹으로 손쉽게 관리가 가능하다 CVS, SVN, Git 등의 버전 관리 시스템 지원 Xcode, Unity, ant, maven 등의 빌드툴 지원 * 팀의 구성원들이 작업한 내용을 정기적으로 통합한다
  39. 39. Jenkins씨를 선택한 이유 무료다! * TeamCity의 경우 무료버젼은 20개의 프로젝트만 생성가능 플러그인이 굉장히 많다 (100여개) 사용자가 많아서 Reference가 풍부하다 오픈소스임에도 불구하고 유지보수가 잘되고있다 다양한 OS에 설치가 가능하다 * Windows, Mac OS X, FreeBSD, OpenBSD * Ubuntu / Debian, RedHat / Fedora / CentOS …
  40. 40. Jenkins씨 고용하기 - 다운로드 https://jenkins-ci.org 내 OS에 맞는 Package 다운로드
  41. 41. Jenkins씨 고용하기 - 설치하기 Mac 기준 설치파일을 실행 후… 계속… 계속… 하면 쉽게 설치완료!
  42. 42. Jenkins씨 고용하기 - 실행하기 Mac 기준 Finder -> 응용프로그램 -> Jenkins jenkins.war 실행한 뒤 잠시 후, localhost:8080 으로 접속!
  43. 43. Jenkins씨 고용하기 - 플러그인 설치 Jenkins 관리 -> 플러그인 관리 원하는 플러그인을 검색하여 설치 가능 Xcode Plugin Git Plugin Ant Plugin Email-ext Plugin …
  44. 44. Jenkins씨 삼시세끼 부려먹기 쉽지 않을걸요? 훗~
  45. 45. 개발팀장 빌드 작업 - 대략 20분 소요 이 작업을 모두 Jenkins씨한테 넘기자! git에서 최신 코드를 받아서 merge 하고... git에서 디자인 리소스를 받아서 publish 하고.... 빌드 버젼을 올리고... iOS 빌드를 하고... 안드로이드 빌드를 하고... 서버에 빌드파일을 올리고.... 새로운 빌드 공유 메일까지 보내면 끝!
  46. 46. 빌드 프로세스 구성 총 4개의 git 저장소를 사용 Cocos Engine Builder Game PULL BUILD PULL PULL PUBLISH PULL VERSION BUILD UPLOAD MAIL
  47. 47. 모든게 자동화 되어야 한다 완벽한 빌드 자동화를 위한 부가적인 툴 개발 cocosBuilderPublish versionUpdater upload.sh [Command line tool]
  48. 48. 빌드 프로세스 설정완료! Game Engine cocos Builder 원클릭 빌드시작!
  49. 49. 빌드 실행 상태 cocos Engine Builder Game
  50. 50. Console Output Game
  51. 51. 제대로 부려먹자! 삼시세끼 빌드하기! 전날 저녁 7시부터 당일 오전 8시까지 작업분 빌드 (야근을 할수도…) 오후 1시 빌드 오전 8시 빌드 저녁 7시 빌드 오전 8시부터 오후 1시까지 작업분 빌드 (오전 작업분 확인가능) 오후 1시부터 저녁 7시까지 작업분 빌드 (오후 작업분 확인가능) * 이외의 시간에 빌드를 만들어야 할때는 강제빌드! (원클릭) *
  52. 52. Jenkins씨는 부지런하다
  53. 53. Jenkins씨는 친절하다
  54. 54. 물론 자주하다보니…… 개발팀장 디자인팀 대표이사기획팀 오늘은 Jenkins씨가 일을 안하는데? 스팸 그만 보내삼 맨날 no changes야!
  55. 55. Jenkins씨 고마워요 20시간 vs 300시간+ 수작업 보다 훨씬 안정적인 자동화 빌드 / 재빌드 부담 제로 빌드에 넣고 싶으면 git에 커밋만 하면된다!
  56. 56. 핵심요약
  57. 57. 빌드를 자주 만들자 매일 리스크를 줄여서 빌드의 안정성을 지속적으로 확보하자 일일 빌드회의를 통하여 빌드의 완성도를 높이자 브랜치를 활용하여 일일빌드를 더 유연하게 하자 (git 추천)
  58. 58. 빌드를 좀 편하게 만들자 CI툴을 이용하여 빌드를 자동화 하자 Reference와 Plugin이 많은 Jenkins가 꽤 괜찮다 (추천) 힘들어도 완벽한 자동화 시스템을 구축하기 위해 노력하자
  59. 59. 관심을 계속 주지 않으면 삐뚤어져요 빌드는 어린아이 같아요
  60. 60. 마치며…
  61. 61. [기획팀과 디자인팀] 기획팀 “개발팀은 항상 바빠서 빌드 요청하는게 눈치보였는데… 지금은 Jenkins씨가 알아서 빌드를 만들어주니 너무 좋아요!” 디자인팀
  62. 62. “Jenkins씨 덕분에 빌드에 대한 두려움도 사라지고 개발에 집중할 수 있어 좋아요!” 프로그래머 J님 프로그래머 S님 프로그래머 H님 [개발팀]
  63. 63. 나의 게임과 나의 동료를 건강하게 합니다 좋은 프로세스와 툴은
  64. 64. 개발팀장 지금 당장 해보세요! 나의 게임과 나의 동료를 위해
  65. 65. 에이스 프로젝트
  66. 66. 컴투스 프로야구 FOR 매니저 개발사
  67. 67. 채용담당 recruit@aceproject.co.kr
  68. 68. 감사합니다. hsahn@aceproject.co.kr 안현석

×