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

Post on 15-Jan-2017

3.612 Views

Category:

Business

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

김형준

잡플래닛2016.03

WhoamI?

•김형준•처음 5년은공공 SI•그다음 5년은삼성전자 ITO•최근 10년간은 Hadoop/BigData•현재는잡플래닛• ApacheTajoPMC

Startup

• businessthatistypicallytechnologyorientedandhashighgrowthpotential.• organizationformedtosearchforarepeatableandscalable businessmodel.• Astartupisacompanydesignedtogrowfast.…Theonlyessentialthingisgrowth.

필요한건뭐?

처음시작할때에는

개발은많아야 3 ~ 4명모두가서비스기획자

디자인은있으면좋고없으면인맥동원마일스톤따위는없음

서비스가성공하면

더많은개발자세분화된조직구성

(Mobile,Front-End,Back-End,기획, QA,디자인, …)

이시기에는

•새로만들어진각역할조직은의욕이너무넘침•조직/개인의 R&R이불분명함•새로합류한인력들의다양한경험과백그라운드•잘만들어진도구도별로없음•증가하는고객및트래픽대응, BusinessModel구축하는것도버거움

그래도경영진은

시작단계에서의스피드가학습되어있음

검색어개인화해주세요.(기획팀)

인도네시아에서는메뉴가너무길어요.(인도네시아스탭) 이거말고광고로바꿔주세요.

(영업팀)

이채용건이최상단에나오는데검색래킹의품질은좋은가요?

지표좀볼수있나요?(경영진)

로고가이상해요.교체해주세요.(사용자/고객) 이미지깨져요.

(운영팀)

모든요구사항은개발팀으로

검색어개인화해주세요.(기획팀)

인도네시아에서는메뉴가너무길어요.(인도네시아스탭)

이거말고광고로바꿔주세요.(영업팀)

이채용건이최상단에나오는데검색래킹의품질은좋은가요?

지표좀볼수있나요?(경영진)로고가이상해요.

교체해주세요.(사용자/고객) 이미지깨져요.

(운영팀)

이런혼돈속에서도단순히스피드만빠른것이아니라안정적이면서

많은업무(Throughput)도수행할수있는프로세스/도구필요

필요한것은프로세스

잡플래닛은?• 2014년서비스오픈•약 OO만개의기업리뷰,연봉인터뷰정보제공•빠르게성장하고있는중•한국,인도네시아,대만서비스중,다수국가확장진행중(한국,인도네시아점유율 1위)

입사해보니

•최고연장자• SeniorEngineer역할이니뭔가는해야지라는생각

•최근 2 ~ 3개월내에회사원이 2배성장(그이후로 6개월동안 2배더성장)•역할별조직구성중•정형화된프로세스는없음

프로세스다듬기

•기존에도이미프로세스가존재• 새로만드는것이아님

•하지만,밖으로나와있지않음•조직또는구성원의 R&R에대해명문화되지않음

프로세스다듬기

•우군확보• 나혼자만외치면안됨

•현재상황및수준파악• 프로세스전문가없음• Agile프로세스경험자없음• 도구는기본적으로사용중

• IssueTracker,SourceRepository,Slack등• 개발조직만사용

•목표수립• 일단프로세스만들기,• 실현가능한목표수립

고민!!!

•최종목표는빠르게기능을추가/수정해서•버그없이안정적으로배포및운영•그러면 Agile기반프로세스가맞지않나?• Agile에서는단순한원칙만제시

Agile

Agile

•세부적으로들어가면생각해야할것들이많음• 계획수립(우선순위)• 이슈관리• 코드Merge• 스테이징배포• 테스트• 운영배포• 타국가적용(번역등)

계획한프로세스

우선순위

Iceb

ox

기획

개발

QA

마케팅 IterationPlan

개발

개발

개발

Test(Pass)

Test(Pass)

Test(Fail)

Backlog

Release

Iteration은Weekly 배포는 Daily

계획한프로세스(개발)

기능개발/수정

테스트케이스개발

테스트실행

PullRequest(githib.com)

CI서버테스트수행

테스트결과PR에반영

CodeReview

Review반영 Review완료

MergeintoStagingbranch

Staging배포

통합테스트진행

Bug등록테스트

케이스반영

테스트통과

MergeintoMaster배포

테스트통과

1차적용된프로세스Iceb

ox

기획

개발

QA

마케팅

IterationPlan

개발

개발

개발

Test(Pass)

Test(Pass)

Test(Fail)

Backlog

Release

Iteration은 ? 배포는주 2회

적용시장애물

• ProductOwner

다시말하면서비스를잘이해하고있으며,개발및다른조직과협업을할수있어야하며

경영진수준의권한도가져야함

적용시장애물

• Iteration계획수립•이유는다수의즉흥적인업무• 빠른성장에서나타날수밖에없음• 우선순위제어가되어야하지만그렇게안됨• CXO레벨에서어느정도 Iteration계획참여필요

->Iteration계획수립은하지않음• Backlog만관리,모든업무는 Backlog에등록

적용시장애물

• Daily배포가쉽지않음• 코드병합,테스트, QA에많은시간투입• 일일변경사항에대해코드병합후에도주요기능에대해서는테스트수행필요(Sideeffect확인)• 이유는자동화된테스트케이스부족• 테스트케이스를새로다만들어넣어야하는가?

•주 2회배포만진행• 기본은주 2회,필요시 3 ~ 4회도가능• 휴일전배포금지

1차적용된프로세스(개발)

그래도성과는있었다.

•신규 Setup된조직의 R&R정리•프로세스기반업무진행• 기획 ->리뷰 ->디자인 -> FE->BE->QA->배포

•개발팀에서는코드리뷰문화가만들어짐•테스트및품질에대한마인드• PivotalTracker기반으로업무진행

2차시도(1)

• ProductOwner가없는상황을반영• ProductOwnership:큰단위업무별기획 Owner선정• Backlog관리: 개발팀리더가전체관리• Backlog우선순위:Iteration미팅에서진행• 스토리 Use-Case상세화:기획자,개발자가진행• Product확인:기획, QA팀에서진행

2차시도(2)

•단위기능에대한테스트케이스는구현하지않음• 대신자동화된테스트진행• 모든 PR에대해테스트수행하지않음

테스트자동화

•테스트자동화프레임워크자체구축• 서버기능은모든 HTTP호출실행및 Assert• 웹기능은 Selenium이용• 모바일은 Appium이용

• CI에서자동실행• 운영배포직전스테이징테스트• 운영배포직후운영테스트

•테스트관리시스템• Testlink사용• 테스트 Case

현재는

사용하는도구

• RubyonRails• Scaffold,ORM, RailsFramework등을통해기만한개발가능

• PivotalTracker• 스토리관리

• Github• SourceCodeRepository,CodeReview

• Slack• 커뮤니케이션도구

• Newrelic• 시스템모니터링

• OneSky• 번역프로세스관리

• TestLink• 테스트케이스관리시스템

RubyonRails

• 작고빠른기능개발에최적화• Ruby/Rails내에웹/API개발에필요한대부분컴포넌트제공• 강력한 ORM

• 개발자가 SQL을사용하지않아도되는수준으로제공

• MVCFramework• View템플릿• MVC/ORM/Template등에기반한코드자동생성(Scaffold)• 데이터모델변경 Historytracking(DBMigration)

RubyonRails

• AssetCompile• CSS,Javascript등

•테스트도구제공•강력한 REPL(Read–Eval–PrintLoop)도구제공• Railsconsole만으로도 SQL기능수행가능

•배우기쉬움• ORM,MVC등에개념이있는개발자라면 1주일정도면개발가능

•단점은• WeakType언어가가지는단점을그대로가지고있음

RubyonRails로개발

• 데이터모델링• Scaffold를이용하여다음항목생성

• 테이블생성Migration• Model,Controller,View생성• 목록,입력,수정,상세조회,삭제기능화면기본생성• 테스트케이스기본구성

• Model등에비즈니스로직추가• 사용자화면 Layout변경또는추가

• 관리자화면은자동생성된기능이용• 배포후모델수정사항발생시Migrate코드생성

• Addcolumn등• 모델에는자동반영

PivotalTracker

• Trackerisasimple,story-basedprojectplanningtoolthatallowsteamstocollaborateandreactinstantlytoreal-worldchanges.• It'sbasedon agilesoftwaredevelopmentmethods…

PivotalTracker

Slack

•다양한도구들과 Integration• Github에 PullRequest요청• Codereview conversation• 스테이징,운영배포스크립트수행시 Releasenote공유• CIServer의 Test결과

Newrelic

•시스템모니터링도구•트렌젝션(SQL등)모니터링•배포후에러모니터링

Newrelic

Newrelic

OneSky

• Cloud-based TranslationManagementPlatform

TestLink

Discussion

•단위테스트의부족은어떻게해결할것인가?• 비즈니스로직에대한테스트는단위테스트추가필요• 화면의 Script등에대한테스트는기존도구활용

•현재는하나의시스템으로구성• 모든코드/조직이시스템에의존관계• 일부코드수정시여러기능에영향• 서로다른요구수준이같은단위로배포

• 보안,품질수준등

•의존관계가약한여러작은단위가움직이면?• MicroServiceArchitecture?

Discussion

•적당한크기의서비스/시스템으로나눌경우•일반적인 Agile스러운팀구성을해야하는가?• 해당서비스에대한 PO• 기획,프론트앤드,백앤드,개발, QA등

•이런조직구성인경우분할된역할이필요한가?• 기획자가필요한가?• 프론트앤드/백앤드개발구분이필요한가?• 개발자가최종 QA를수행할수있을까?

또다른룰

•견고한서비스를유지하기위해서는룰이필요• 가능한단순한구조로시스템을구성• 하나의소스트리로여러국가서비스가가능해야함• 개발자는운영서버,운영 DB에접근하지못함• 보안이가장우선• 클라우드서비스를적극적으로활용• 에러를숨기지말고적극노출, 노출된에러는즉시수정• 한개발자가하나의기능만개발하지않음(즉,전담기능개발은없음)• 배포는근무시간중

top related