SlideShare a Scribd company logo
성장하는 스타트업의
프로세스 개척기
김형준
잡플래닛
2016.03
Who	am	I?
• 김형준
• 처음 5년은 공공 SI
• 그 다음 5년은 삼성전자 ITO
• 최근 10년간은 Hadoop/BigData
• 현재는 잡플래닛
• Apache	Tajo	PMC
Startup
• business	that	is	typically	technology	oriented	and	
has	high	growth	potential.
• organization	formed	to	search	for	a	repeatable	and	
scalable business	model.
• A	startup	is	a	company	designed	to	grow	fast.	…	
The	only	essential	thing	is	growth.
필요한 건 뭐?
처음 시작할 때에는
개발은 많아야 3 ~ 4명
모두가 서비스 기획자
디자인은 있으면 좋고 없으면 인맥 동원
마일스톤 따위는 없음
서비스가 성공하면
더 많은 개발자
세분화된 조직 구성
(Mobile,	Front-End,	Back-End, 기획, QA,	디자인, …)
이 시기에는
• 새로 만들어진 각 역할 조직은 의욕이 너무 넘침
• 조직/개인의 R&R이 불분명함
• 새로 합류한 인력들의 다양한 경험과
백그라운드
• 잘 만들어진 도구도 별로 없음
• 증가하는 고객 및 트래픽 대응, Business	Model	
구축하는 것도 버거움
그래도 경영진은
시작 단계에서의 스피드가
학습되어 있음
검색어 개인화 해주세요.
(기획팀)
인도네시아에서는
메뉴가 너무 길어요.
(인도네시아 스탭) 이거 말고 광고로 바꿔주세요.
(영업팀)
이 채용 건이 최상단에 나오는데
검색 래킹의 품질은 좋은가요?
지표 좀 볼 수 있나요?
(경영진)
로고가 이상해요.
교체해 주세요.
(사용자/고객) 이미지 깨져요.
(운영팀)
모든 요구사항은 개발팀으로
검색어 개인화 해주세요.
(기획팀)
인도네시아에서는
메뉴가 너무 길어요.
(인도네시아 스탭)
이거 말고 광고로 바꿔주세요.
(영업팀)
이 채용 건이 최상단에 나오는데
검색 래킹의 품질은 좋은가요?
지표 좀 볼 수 있나요?
(경영진)로고가 이상해요.
교체해 주세요.
(사용자/고객) 이미지 깨져요.
(운영팀)
이런 혼돈 속에서도
단순히 스피드만 빠른 것이 아니라 안정적이면서
많은 업무(Throughput)도 수행할 수 있는 프로세스/도구 필요
필요한 것은 프로세스
잡플래닛은?
• 2014년 서비스 오픈
• 약 OO	만개의 기업 리뷰, 연봉
인터뷰 정보 제공
• 빠르게 성장하고 있는 중
• 한국, 인도네시아, 대만
서비스 중, 다수 국가 확장
진행중
(한국, 인도네시아 점유율 1위)
입사해보니
• 최고 연장자
• Senior	Engineer	역할이니 뭔가는 해야지 라는
생각
• 최근 2 ~ 3 개월내에 회사원이 2배 성장
(그 이후로 6개월 동안 2배 더 성장)
• 역할별 조직 구성 중
• 정형화된 프로세스는 없음
프로세스 다듬기
• 기존에도 이미 프로세스가 존재
• 새로 만드는 것이 아님
• 하지만, 밖으로 나와 있지 않음
• 조직 또는 구성원의 R&R에 대해 명문화되지
않음
프로세스 다듬기
• 우군 확보
• 나 혼자만 외치면 안됨
• 현재 상황 및 수준 파악
• 프로세스 전문가 없음
• Agile	프로세스 경험자 없음
• 도구는 기본적으로 사용중
• Issue	Tracker,	Source	Repository,	Slack등
• 개발 조직만 사용
• 목표 수립
• 일단 프로세스 만들기,
• 실현 가능한 목표 수립
고민!!!
• 최종 목표는 빠르게 기능을 추가/수정해서
• 버그 없이 안정적으로 배포 및 운영
• 그러면 Agile	기반 프로세스가 맞지 않나?
• Agile에서는 단순한 원칙만 제시
Agile
Agile
• 세부적으로 들어가면 생각해야 할 것들이 많음
• 계획 수립(우선순위)
• 이슈 관리
• 코드 Merge
• 스테이징 배포
• 테스트
• 운영 배포
• 타 국가 적용(번역 등)
계획한 프로세스
우선순위
Icebox
기획
개발
QA
마케팅 Iteration
Plan
개발
개발
개발
Test
(Pass)
Test
(Pass)
Test
(Fail)
Backlog
Release
Iteration은 Weekly 배포는 Daily
계획한 프로세스(개발)
기능
개발/수정
테스트
케이스 개발
테스트 실행
Pull	Request
(githib.com)
CI 서버
테스트 수행
테스트 결과
PR에 반영
Code	Review
Review	반영 Review	완료
Merge	into	
Staging	branch
Staging 배포
통합 테스트
진행
Bug	등록
테스트
케이스 반영
테스트 통과
Merge	into
Master
배포
테스트 통과
1차 적용된 프로세스
Icebox
기획
개발
QA
마케팅
Iteration
Plan
개발
개발
개발
Test
(Pass)
Test
(Pass)
Test
(Fail)
Backlog
Release
Iteration은 ? 배포는 주 2회
적용 시 장애물
• Product	Owner
다시 말하면 서비스를 잘 이해하고 있으며,
개발 및 다른 조직과 협업을 할 수 있어야 하며
경영진 수준의 권한도 가져야 함
적용 시 장애물
• Iteration	계획 수립
• 이유는 다수의 즉흥적인 업무
• 빠른 성장에서 나타날 수 밖에 없음
• 우선순위 제어가 되어야 하지만 그렇게 안됨
• CXO	레벨에서 어느 정도 Iteration	계획 참여 필요
->	Iteration	계획 수립은 하지 않음
• Backlog 만 관리, 모든 업무는 Backlog에 등록
적용 시 장애물
• Daily 배포가 쉽지 않음
• 코드 병합, 테스트, QA에 많은 시간 투입
• 일일 변경 사항에 대해 코드 병합 후에도 주요 기능에
대해서는 테스트 수행 필요(Side	effect	확인)
• 이유는 자동화된 테스트 케이스 부족
• 테스트 케이스를 새로 다 만들어 넣어야 하는가?
• 주 2회 배포만 진행
• 기본은 주 2회, 필요시 3 ~ 4회도 가능
• 휴일전 배포 금지
1차 적용된 프로세스(개발)
그래도 성과는 있었다.
• 신규 Setup 된 조직의 R&R 정리
• 프로세스 기반 업무 진행
• 기획 -> 리뷰 -> 디자인 -> FE	->	BE	->	QA	->	배포
• 개발 팀에서는 코드 리뷰 문화가 만들어짐
• 테스트 및 품질에 대한 마인드
• PivotalTracker 기반으로 업무 진행
2차 시도(1)
• Product	Owner 가 없는 상황을 반영
• Product	Ownership:큰 단위 업무별 기획 Owner	선정
• Backlog 관리: 개발팀 리더가 전체 관리
• Backlog	우선순위:	Iteration	미팅에서 진행
• 스토리 Use-Case	상세화: 기획자, 개발자가 진행
• Product	확인: 기획, QA	팀에서 진행
2차 시도(2)
• 단위 기능에 대한 테스트 케이스는 구현하지
않음
• 대신 자동화된 테스트 진행
• 모든 PR에 대해 테스트 수행하지 않음
테스트 자동화
• 테스트 자동화 프레임워크 자체 구축
• 서버 기능은 모든 HTTP	호출 실행 및 Assert
• 웹 기능은 Selenium	이용
• 모바일은 Appium 이용
• CI	에서 자동 실행
• 운영 배포 직전 스테이징 테스트
• 운영 배포 직후 운영 테스트
• 테스트 관리 시스템
• Testlink 사용
• 테스트 Case
현재는
사용하는 도구
• Ruby	on	Rails
• Scaffold,	ORM, Rails	Framework 등을 통해 기만한 개발 가능
• PivotalTracker
• 스토리 관리
• Github
• Source	Code	Repository,	Code	Review
• Slack
• 커뮤니케이션 도구
• Newrelic
• 시스템 모니터링
• OneSky
• 번역 프로세스 관리
• TestLink
• 테스트 케이스 관리 시스템
Ruby	on	Rails
• 작고 빠른 기능 개발에 최적화
• Ruby/Rails 내에 웹/API		개발에 필요한 대부분
컴포넌트 제공
• 강력한 ORM	
• 개발자가 SQL을 사용하지 않아도 되는 수준으로 제공
• MVC	Framework
• View	템플릿
• MVC/ORM/Template	등에 기반한 코드 자동
생성(Scaffold)
• 데이터 모델 변경 History	tracking(DB	Migration)
Ruby	on	Rails
• Asset	Compile
• CSS,	Javascript 등
• 테스트 도구 제공
• 강력한 REPL(Read–Eval–Print	Loop) 도구 제공
• Rails	console 만으로도 SQL 기능 수행 가능
• 배우기 쉬움
• ORM,	MVC 등에 개념이 있는 개발자라면 1주일
정도면 개발 가능
• 단점은
• Weak	Type 언어가 가지는 단점을 그대로 가지고 있음
Ruby	on	Rails로 개발
• 데이터 모델링
• Scaffold를 이용하여 다음 항목 생성
• 테이블 생성 Migration
• Model,	Controller,	View	생성
• 목록, 입력, 수정, 상세조회, 삭제 기능 화면 기본 생성
• 테스트 케이스 기본 구성
• Model 등에 비즈니스 로직 추가
• 사용자 화면 Layout 변경 또는 추가
• 관리자 화면은 자동 생성된 기능 이용
• 배포 후 모델 수정 사항 발생 시 Migrate	코드 생성
• Add	column	등
• 모델에는 자동 반영
PivotalTracker
• Tracker	is	a	simple,	story-based	project	planning	
tool	that	allows	teams	to	collaborate	and	react	
instantly	to	real-world	changes.
• It's	based	on agile	software	development methods	
…
PivotalTracker
Slack
• 다양한 도구들과 Integration
• Github에 Pull	Request	요청
• Code	review conversation
• 스테이징, 운영 배포 스크립트 수행 시 Release	note	
공유
• CI	Server의 Test 결과
Newrelic
• 시스템 모니터링 도구
• 트렌젝션(SQL 등) 모니터링
• 배포 후 에러 모니터링
Newrelic
Newrelic
OneSky
• Cloud-based Translation	Management	Platform
TestLink
Discussion
• 단위 테스트의 부족은 어떻게 해결할 것인가?
• 비즈니스 로직에 대한 테스트는 단위 테스트 추가
필요
• 화면의 Script 등에 대한 테스트는 기존 도구 활용
• 현재는 하나의 시스템으로 구성
• 모든 코드/조직이 시스템에 의존 관계
• 일부 코드 수정 시 여러 기능에 영향
• 서로 다른 요구수준이 같은 단위로 배포
• 보안, 품질 수준 등
• 의존 관계가 약한 여러 작은 단위가 움직이면?
• Micro	Service	Architecture?
Discussion
• 적당한 크기의 서비스/시스템으로 나눌 경우
• 일반적인 Agile	스러운 팀 구성을 해야 하는가?
• 해당 서비스에 대한 PO
• 기획, 프론트앤드, 백앤드, 개발, QA 등
• 이런 조직 구성인 경우 분할된 역할이 필요한가?
• 기획자가 필요한가?
• 프론트앤드/백앤드 개발 구분이 필요한가?
• 개발자가 최종 QA를 수행할 수 있을까?
또 다른 룰
• 견고한 서비스를 유지하기 위해서는 룰이 필요
• 가능한 단순한 구조로 시스템을 구성
• 하나의 소스 트리로 여러 국가 서비스가 가능해야 함
• 개발자는 운영 서버,	운영 DB에 접근하지 못함
• 보안이 가장 우선
• 클라우드 서비스를 적극적으로 활용
• 에러를 숨기지 말고 적극 노출, 노출된 에러는 즉시
수정
• 한 개발자가 하나의 기능만 개발하지 않음(즉, 전담
기능 개발은 없음)
• 배포는 근무 시간 중

More Related Content

PDF
카카오스토리 웹팀의 코드리뷰 경험
PDF
임영기님 - 코드 리뷰 시스템 도입하기
PPTX
신림프로그래머모임_개발프로세스개선기
PDF
깃헙으로 코드리뷰 하기
PDF
Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅
PDF
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
PDF
[D2]pinpoint 개발기
PDF
[오픈소스컨설팅]Session 4. dev ops 구성 사례와 전망
카카오스토리 웹팀의 코드리뷰 경험
임영기님 - 코드 리뷰 시스템 도입하기
신림프로그래머모임_개발프로세스개선기
깃헙으로 코드리뷰 하기
Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
[D2]pinpoint 개발기
[오픈소스컨설팅]Session 4. dev ops 구성 사례와 전망

What's hot (20)

PDF
커뮤니티와 함께한 예비개발자 성장기- 조성수님
PPTX
Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나
PDF
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
PPTX
애자일 스크럼과 JIRA
PDF
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
PDF
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
PDF
Laravel로 스타트업 기술 스택 구성하기
PDF
플리토 코드리뷰 - Code Review in Flitto
PDF
Kakao meets jira
PPTX
[해줌] 애자일 스크럼 교육 자료
PPTX
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
PDF
이클립스 플랫폼
PDF
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
PDF
필요해서 하는 개발 자동화
PDF
DevOps 시대의 새로운 Role - Full Cycle Developer
PDF
Code Review - DevOn2013
PPTX
Maven의 이해
PDF
[오픈소스컨설팅] DevOps 체험교육 소개
PDF
Atlassian Product Overview (아틀라시안 제품 소개) - 2016년 4월 버전
PDF
학교에선 알려주지 않는 오픈소스이야기 - 박치완님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
애자일 스크럼과 JIRA
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
Laravel로 스타트업 기술 스택 구성하기
플리토 코드리뷰 - Code Review in Flitto
Kakao meets jira
[해줌] 애자일 스크럼 교육 자료
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
이클립스 플랫폼
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
필요해서 하는 개발 자동화
DevOps 시대의 새로운 Role - Full Cycle Developer
Code Review - DevOn2013
Maven의 이해
[오픈소스컨설팅] DevOps 체험교육 소개
Atlassian Product Overview (아틀라시안 제품 소개) - 2016년 4월 버전
학교에선 알려주지 않는 오픈소스이야기 - 박치완님
Ad

Viewers also liked (20)

PDF
Introduction to Go
PDF
20160409 microsoft 세미나 머신러닝관련 발표자료
PDF
Spring statemachine
PDF
[DomainDriven 6월 정기세미나] Eclipse Platform의 Test, build 에서 CI까지
PDF
Opensource apm scouter in practice
PDF
[AUG]개발자와 QA가 상생하는 테스트 프로세스
PPTX
관리자 화면설계 V 1 0 레이아웃
PDF
[D2SF] 투자유치, timing과 만남에 대하여_임형규_20151202
PDF
[D2SF] 기업의 국외진출과 privacy policy
PDF
[D2SF] 위치정보법 및 허가/신고절차 안내
PDF
[D2SF] 스타트업을 위한 R&D 펀드 소개자료
PDF
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
PPTX
오픈소스 프로젝트 따라잡기_공개
PPT
동아제약 관리자 스토리보드
PDF
[네이버 D2SF] R&D Fund 2016년 3차_사업소개
PDF
[D2SF] Naver 오픈 API 가이드
PPTX
Northwestern NUvention web storyboard and personas 1 22-2013
PDF
Presto, Zeppelin을 이용한 초간단 BI 구축 사례
PDF
[네이버 D2SF] R&D Fund 2016년 3차_네이버 심사 및 협의안내
PDF
Docker로 서버 개발 편하게 하기
Introduction to Go
20160409 microsoft 세미나 머신러닝관련 발표자료
Spring statemachine
[DomainDriven 6월 정기세미나] Eclipse Platform의 Test, build 에서 CI까지
Opensource apm scouter in practice
[AUG]개발자와 QA가 상생하는 테스트 프로세스
관리자 화면설계 V 1 0 레이아웃
[D2SF] 투자유치, timing과 만남에 대하여_임형규_20151202
[D2SF] 기업의 국외진출과 privacy policy
[D2SF] 위치정보법 및 허가/신고절차 안내
[D2SF] 스타트업을 위한 R&D 펀드 소개자료
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
오픈소스 프로젝트 따라잡기_공개
동아제약 관리자 스토리보드
[네이버 D2SF] R&D Fund 2016년 3차_사업소개
[D2SF] Naver 오픈 API 가이드
Northwestern NUvention web storyboard and personas 1 22-2013
Presto, Zeppelin을 이용한 초간단 BI 구축 사례
[네이버 D2SF] R&D Fund 2016년 3차_네이버 심사 및 협의안내
Docker로 서버 개발 편하게 하기
Ad

Similar to 성장하는 스타트업의 프로세스 개척기 (20)

PDF
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
PDF
ALM과 DevOps 그리고 Azure DevOps
PPTX
VSTS와 Azure를 이용한 팀 프로세스 관리
PDF
04 워터폴모델-개발프로세스
PDF
소프트웨어 개발 프로세스 배경 설명
PDF
모바일 앱 개발을 위한 Agile 적용
PDF
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
PDF
[AIS 2018][Team Practice] CMMI 기반 환경의 애자일-투씨드
PDF
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
PDF
SonarQube와 함께하는 소프트웨어 품질 세미나 - 소프트웨어 품질의 중요성
PPTX
소프트웨어 개발 프로세스 개선
PPTX
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
PPTX
애자일 하라
PPTX
SOSCON2015 SI이노베이션
PPTX
Rpa approach
PPTX
제13회컨퍼런스 조대협 서버사이드개발
PDF
프로젝트 관리 및 지켜야 할 사항들
PDF
[webinar_공유용] 팀 규모에 맞게 Atlassian Jira 활용 확장하기.pdf
PPTX
DevOps - Mousoft
PDF
Android QA Process
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
ALM과 DevOps 그리고 Azure DevOps
VSTS와 Azure를 이용한 팀 프로세스 관리
04 워터폴모델-개발프로세스
소프트웨어 개발 프로세스 배경 설명
모바일 앱 개발을 위한 Agile 적용
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
[AIS 2018][Team Practice] CMMI 기반 환경의 애자일-투씨드
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
SonarQube와 함께하는 소프트웨어 품질 세미나 - 소프트웨어 품질의 중요성
소프트웨어 개발 프로세스 개선
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
애자일 하라
SOSCON2015 SI이노베이션
Rpa approach
제13회컨퍼런스 조대협 서버사이드개발
프로젝트 관리 및 지켜야 할 사항들
[webinar_공유용] 팀 규모에 맞게 Atlassian Jira 활용 확장하기.pdf
DevOps - Mousoft
Android QA Process

성장하는 스타트업의 프로세스 개척기

  • 2. Who am I? • 김형준 • 처음 5년은 공공 SI • 그 다음 5년은 삼성전자 ITO • 최근 10년간은 Hadoop/BigData • 현재는 잡플래닛 • Apache Tajo PMC
  • 3. Startup • business that is typically technology oriented and has high growth potential. • organization formed to search for a repeatable and scalable business model. • A startup is a company designed to grow fast. … The only essential thing is growth.
  • 5. 처음 시작할 때에는 개발은 많아야 3 ~ 4명 모두가 서비스 기획자 디자인은 있으면 좋고 없으면 인맥 동원 마일스톤 따위는 없음
  • 6. 서비스가 성공하면 더 많은 개발자 세분화된 조직 구성 (Mobile, Front-End, Back-End, 기획, QA, 디자인, …)
  • 7. 이 시기에는 • 새로 만들어진 각 역할 조직은 의욕이 너무 넘침 • 조직/개인의 R&R이 불분명함 • 새로 합류한 인력들의 다양한 경험과 백그라운드 • 잘 만들어진 도구도 별로 없음 • 증가하는 고객 및 트래픽 대응, Business Model 구축하는 것도 버거움
  • 8. 그래도 경영진은 시작 단계에서의 스피드가 학습되어 있음
  • 9. 검색어 개인화 해주세요. (기획팀) 인도네시아에서는 메뉴가 너무 길어요. (인도네시아 스탭) 이거 말고 광고로 바꿔주세요. (영업팀) 이 채용 건이 최상단에 나오는데 검색 래킹의 품질은 좋은가요? 지표 좀 볼 수 있나요? (경영진) 로고가 이상해요. 교체해 주세요. (사용자/고객) 이미지 깨져요. (운영팀)
  • 10. 모든 요구사항은 개발팀으로 검색어 개인화 해주세요. (기획팀) 인도네시아에서는 메뉴가 너무 길어요. (인도네시아 스탭) 이거 말고 광고로 바꿔주세요. (영업팀) 이 채용 건이 최상단에 나오는데 검색 래킹의 품질은 좋은가요? 지표 좀 볼 수 있나요? (경영진)로고가 이상해요. 교체해 주세요. (사용자/고객) 이미지 깨져요. (운영팀)
  • 11. 이런 혼돈 속에서도 단순히 스피드만 빠른 것이 아니라 안정적이면서 많은 업무(Throughput)도 수행할 수 있는 프로세스/도구 필요
  • 13. 잡플래닛은? • 2014년 서비스 오픈 • 약 OO 만개의 기업 리뷰, 연봉 인터뷰 정보 제공 • 빠르게 성장하고 있는 중 • 한국, 인도네시아, 대만 서비스 중, 다수 국가 확장 진행중 (한국, 인도네시아 점유율 1위)
  • 14. 입사해보니 • 최고 연장자 • Senior Engineer 역할이니 뭔가는 해야지 라는 생각 • 최근 2 ~ 3 개월내에 회사원이 2배 성장 (그 이후로 6개월 동안 2배 더 성장) • 역할별 조직 구성 중 • 정형화된 프로세스는 없음
  • 15. 프로세스 다듬기 • 기존에도 이미 프로세스가 존재 • 새로 만드는 것이 아님 • 하지만, 밖으로 나와 있지 않음 • 조직 또는 구성원의 R&R에 대해 명문화되지 않음
  • 16. 프로세스 다듬기 • 우군 확보 • 나 혼자만 외치면 안됨 • 현재 상황 및 수준 파악 • 프로세스 전문가 없음 • Agile 프로세스 경험자 없음 • 도구는 기본적으로 사용중 • Issue Tracker, Source Repository, Slack등 • 개발 조직만 사용 • 목표 수립 • 일단 프로세스 만들기, • 실현 가능한 목표 수립
  • 17. 고민!!! • 최종 목표는 빠르게 기능을 추가/수정해서 • 버그 없이 안정적으로 배포 및 운영 • 그러면 Agile 기반 프로세스가 맞지 않나? • Agile에서는 단순한 원칙만 제시
  • 18. Agile
  • 19. Agile • 세부적으로 들어가면 생각해야 할 것들이 많음 • 계획 수립(우선순위) • 이슈 관리 • 코드 Merge • 스테이징 배포 • 테스트 • 운영 배포 • 타 국가 적용(번역 등)
  • 21. 계획한 프로세스(개발) 기능 개발/수정 테스트 케이스 개발 테스트 실행 Pull Request (githib.com) CI 서버 테스트 수행 테스트 결과 PR에 반영 Code Review Review 반영 Review 완료 Merge into Staging branch Staging 배포 통합 테스트 진행 Bug 등록 테스트 케이스 반영 테스트 통과 Merge into Master 배포 테스트 통과
  • 23. 적용 시 장애물 • Product Owner 다시 말하면 서비스를 잘 이해하고 있으며, 개발 및 다른 조직과 협업을 할 수 있어야 하며 경영진 수준의 권한도 가져야 함
  • 24. 적용 시 장애물 • Iteration 계획 수립 • 이유는 다수의 즉흥적인 업무 • 빠른 성장에서 나타날 수 밖에 없음 • 우선순위 제어가 되어야 하지만 그렇게 안됨 • CXO 레벨에서 어느 정도 Iteration 계획 참여 필요 -> Iteration 계획 수립은 하지 않음 • Backlog 만 관리, 모든 업무는 Backlog에 등록
  • 25. 적용 시 장애물 • Daily 배포가 쉽지 않음 • 코드 병합, 테스트, QA에 많은 시간 투입 • 일일 변경 사항에 대해 코드 병합 후에도 주요 기능에 대해서는 테스트 수행 필요(Side effect 확인) • 이유는 자동화된 테스트 케이스 부족 • 테스트 케이스를 새로 다 만들어 넣어야 하는가? • 주 2회 배포만 진행 • 기본은 주 2회, 필요시 3 ~ 4회도 가능 • 휴일전 배포 금지
  • 27. 그래도 성과는 있었다. • 신규 Setup 된 조직의 R&R 정리 • 프로세스 기반 업무 진행 • 기획 -> 리뷰 -> 디자인 -> FE -> BE -> QA -> 배포 • 개발 팀에서는 코드 리뷰 문화가 만들어짐 • 테스트 및 품질에 대한 마인드 • PivotalTracker 기반으로 업무 진행
  • 28. 2차 시도(1) • Product Owner 가 없는 상황을 반영 • Product Ownership:큰 단위 업무별 기획 Owner 선정 • Backlog 관리: 개발팀 리더가 전체 관리 • Backlog 우선순위: Iteration 미팅에서 진행 • 스토리 Use-Case 상세화: 기획자, 개발자가 진행 • Product 확인: 기획, QA 팀에서 진행
  • 29. 2차 시도(2) • 단위 기능에 대한 테스트 케이스는 구현하지 않음 • 대신 자동화된 테스트 진행 • 모든 PR에 대해 테스트 수행하지 않음
  • 30. 테스트 자동화 • 테스트 자동화 프레임워크 자체 구축 • 서버 기능은 모든 HTTP 호출 실행 및 Assert • 웹 기능은 Selenium 이용 • 모바일은 Appium 이용 • CI 에서 자동 실행 • 운영 배포 직전 스테이징 테스트 • 운영 배포 직후 운영 테스트 • 테스트 관리 시스템 • Testlink 사용 • 테스트 Case
  • 32. 사용하는 도구 • Ruby on Rails • Scaffold, ORM, Rails Framework 등을 통해 기만한 개발 가능 • PivotalTracker • 스토리 관리 • Github • Source Code Repository, Code Review • Slack • 커뮤니케이션 도구 • Newrelic • 시스템 모니터링 • OneSky • 번역 프로세스 관리 • TestLink • 테스트 케이스 관리 시스템
  • 33. Ruby on Rails • 작고 빠른 기능 개발에 최적화 • Ruby/Rails 내에 웹/API 개발에 필요한 대부분 컴포넌트 제공 • 강력한 ORM • 개발자가 SQL을 사용하지 않아도 되는 수준으로 제공 • MVC Framework • View 템플릿 • MVC/ORM/Template 등에 기반한 코드 자동 생성(Scaffold) • 데이터 모델 변경 History tracking(DB Migration)
  • 34. Ruby on Rails • Asset Compile • CSS, Javascript 등 • 테스트 도구 제공 • 강력한 REPL(Read–Eval–Print Loop) 도구 제공 • Rails console 만으로도 SQL 기능 수행 가능 • 배우기 쉬움 • ORM, MVC 등에 개념이 있는 개발자라면 1주일 정도면 개발 가능 • 단점은 • Weak Type 언어가 가지는 단점을 그대로 가지고 있음
  • 35. Ruby on Rails로 개발 • 데이터 모델링 • Scaffold를 이용하여 다음 항목 생성 • 테이블 생성 Migration • Model, Controller, View 생성 • 목록, 입력, 수정, 상세조회, 삭제 기능 화면 기본 생성 • 테스트 케이스 기본 구성 • Model 등에 비즈니스 로직 추가 • 사용자 화면 Layout 변경 또는 추가 • 관리자 화면은 자동 생성된 기능 이용 • 배포 후 모델 수정 사항 발생 시 Migrate 코드 생성 • Add column 등 • 모델에는 자동 반영
  • 38. Slack • 다양한 도구들과 Integration • Github에 Pull Request 요청 • Code review conversation • 스테이징, 운영 배포 스크립트 수행 시 Release note 공유 • CI Server의 Test 결과
  • 39. Newrelic • 시스템 모니터링 도구 • 트렌젝션(SQL 등) 모니터링 • 배포 후 에러 모니터링
  • 44. Discussion • 단위 테스트의 부족은 어떻게 해결할 것인가? • 비즈니스 로직에 대한 테스트는 단위 테스트 추가 필요 • 화면의 Script 등에 대한 테스트는 기존 도구 활용 • 현재는 하나의 시스템으로 구성 • 모든 코드/조직이 시스템에 의존 관계 • 일부 코드 수정 시 여러 기능에 영향 • 서로 다른 요구수준이 같은 단위로 배포 • 보안, 품질 수준 등 • 의존 관계가 약한 여러 작은 단위가 움직이면? • Micro Service Architecture?
  • 45. Discussion • 적당한 크기의 서비스/시스템으로 나눌 경우 • 일반적인 Agile 스러운 팀 구성을 해야 하는가? • 해당 서비스에 대한 PO • 기획, 프론트앤드, 백앤드, 개발, QA 등 • 이런 조직 구성인 경우 분할된 역할이 필요한가? • 기획자가 필요한가? • 프론트앤드/백앤드 개발 구분이 필요한가? • 개발자가 최종 QA를 수행할 수 있을까?
  • 46. 또 다른 룰 • 견고한 서비스를 유지하기 위해서는 룰이 필요 • 가능한 단순한 구조로 시스템을 구성 • 하나의 소스 트리로 여러 국가 서비스가 가능해야 함 • 개발자는 운영 서버, 운영 DB에 접근하지 못함 • 보안이 가장 우선 • 클라우드 서비스를 적극적으로 활용 • 에러를 숨기지 말고 적극 노출, 노출된 에러는 즉시 수정 • 한 개발자가 하나의 기능만 개발하지 않음(즉, 전담 기능 개발은 없음) • 배포는 근무 시간 중