[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
조대협
스크럼 애자일과 지라
Speaker Name / Company Name
Session Title
발표자 소개
조 대
협
본명: 조병욱
회원 13만명 온라인 개발자 커뮤니티 자바스터디(www.javastudy.co.kr) 운영자.. (기억의 저편..)
한국 자바 개발자 협회 부회장,서버사이드 아키텍트 그룹 운영자
벤쳐 개발자
BEA 웹로직 기술 지원 엔지니어
장애 진단, 성능 튜닝
NHN 잠깐
오라클 컨설턴트 (SOA,EAI,ALM,Enterprise 2.0,대용량 분산
시스템)MS APAC 클라우드 수석 아키텍트
프리렌서 (잘나가는 사장님)
삼성전자 무선 사업부 B2B팀 Chief Architect
피키캐스트 CTO
구글 클라우드 엔지니어
Google Cloud Platform 4
오늘 강의 내용은
자매품
“대용량 아키텍쳐와 성능
튜닝”
조대협의 서버사이드
“소프트웨어 개발과 테스트”
잘하는 것 부터 시작해서 발전
대세는 스크립트 언어
스스로 공부,스스로 개발,내재화
소규모 조직 [10~20명]
대우 받는 개발자
클라우드 컴퓨팅
빠른 시장 진입,저비용,누구나 서비스
젊은 개발자 (한국은 접는 개발자)
협업
[SNS,오픈소스,GitHub]
CI to CD
유연한 고용 시장
메뚜기!!
3년 넘으면 바보
한국은 배신자
개발자의 변신은 무죄
새로운 능력..!! 잉여력STAR UP
요즘 실리콘 밸리에서는
대세는 수퍼 개발자!!
요즘 실리콘 밸리에서는
소프트웨어 개발 중심의 변화
시대별로 소프트웨어를 개발하는 이유가 어떻게 변화 했을까?
우리가 지금 쓰는 기술들은 왜?
인터넷,SNS의 시대엔터프라이즈 시대 모바일 시대
서비스 사업자
대단한 님들!!
벤더
개발자!!
(스타트업,앱개발자)
→ 당신도 할 수 있다
기술 변화의 주체
소프트웨어 개발 중심의 변화
시대별 기술의 변화
인터넷,SNS의 시대엔터프라이즈 시대 모바일 시대
EJB, JAVA, SERVLET/JSP
들어는 보셨나요?
벤더 : “이게 최신 기술임!!. 교육 부터
다 해드림!!
나만 믿으세요” $$$
먹고 살 걱정 없음!!
Spring,Hibernate,MySQL,Struts,R
uby On Rails,PHP ..
서비스사 : 제품은 비싸요. 우리가
만든거 가져다 쓰세요!! 대신 책임은
니꺼!
공부해야 함.. 압박!!
조금씩 먹고 살기 힘들어짐
(버틸만 함-그래도 대세는 있음)
JavaScript,
Cloud,node.js, Ruby on
Rails,NoSQL
개발자:어려워서 못 써먹겠음.
차라리 만듬..!!
기술 변화도 심함
이제는 생존의 문제!!
명퇴가 눈앞에..
시대별 기술의 변화
인터넷,SNS의 시대엔터프라이즈 시대 모바일 시대
UNIX 서버
벤더 소프트웨어
X86 서버
오픈소스
클라우드
오픈소스
스크립트 언어!!
ORACLE MySQL NoSQL
API
HTML 5
안드로이드,IOS웹웹,4GL
쉽고 빠른 개발
기술의 홍수
대체제 성격
새로운 기술 흐름을 만드는
전환기
안정성,미션 크리티컬 업무
위주
시대별 기술 변화
조합 1.
기획자 창업
디자이너 - 기획자 여자 친구
개발자 – 기획자의 친구 (디자이너를 사랑함)
조합 2.
디자이너 창업
기획자 - 디자이너의 여자 친구
개발자 – 디자이너의 친구 (기획자를 사랑함)
개발자 1인 혼자 다 해야함 (클라이언트, 서버, 하드웨어 인프라)
배우기 쉬워야 함
돈 떨어지기전에 시장 출시해야함
빨리 배울 수 있어야함
왜 이런 현상이 생기는가? 쉬운 기술이 흥하는 이유
빠른 출시, 빠른 업데이트가 필요
수많은 앱들과 치열한 경쟁
요구되는 기술
빠른 출시, 빠른 업데이트가 필요
쉬운 기술 필요
낮은 비용
클라우드
컴퓨팅
스크립트
언어
운영 효율화
Devops
자동화
클라우드 컴퓨팅
• 클라우드 컴퓨팅이 가져다준 변화
– 저비용으로 시작 가능
– 무제한적 리소스
– 지역/시간 제약에서 자유로워짐
– 쉽다. 하드웨어 인프라에 대한 작업이 없어짐
개발자가 인프라를 핸들링 가능
클라우드 컴퓨팅
빠른 시장 진입
운영비 절감
초기 투자비 절감
유연한 자원 사용
(Auto Scale Out)
느려요
IO Performance
싸지 않아요
기존 솔루션이 안돌아요
장애가 납니다. 아주 잘!!
(멀티 데이타 센타 설계)
클라우드 컴퓨팅의 장점 설계시 고려 사항
• 고려해야 하는 것들
DEVOPS
Devops = Development + Operation (개발 + 운영)
개발과 운영 조직을 하나로 묶어서 원할한 의사 소통
빠른 반영, 빠른 피드백 반영 가능
개발 방식의 변화
벤더 교육 센터 제품 메뉴얼 책
책
온라인 메뉴얼
블로그
찾아보기
물어보기(영어로…)
중수
코드 까보기
고수
네이버?
정보 습득 방식의 변화
개발 방식의 변화
벤더가
시키는데로
솔루션에 포함된 예제 보고
책 예제 보고
진리를 깨우치고
물어보고
다른데 프로젝트
했던 SI 불러서
그럴 시간 없음….
Copy & Paste
Stack overflow
하는데 까정 해본다. 시간
없음
기술 검증
PoC,BMT
똑똑하면 소스 깐다.
Trial & Error
단계별 개발 모델의 변화
• 1단계 스타트업!!
스타트업
단계별 개발 모델의 변화
성숙된 개발 조직
• 2단계 펀딩 받았다.
단계별 개발 모델 변화
• 3단계 깨달았다.
CD & DEVOPS
팀 모델의 변화
팀 모델
• 기술 분류에 따른 팀 (Functioanl Team)
– 프론트,백앤드,앱,운영,QA 등
모바일 앱
백앤드
웹 페이지 관리도구
댓글 포스팅 댓글 포스팅
앱개발팀 프론트 개발팀
백앤드 개발팀
팀모델의 변화
• Cross functional Team (Product based)
– 한팀내에 프론트,백앤드,앱,운영,QA를 다 넣음
– MSA에 적용되는 팀모델
팀 모델의 변화
• Cross functional Team (Product based)
– Product 간에 복잡한 코디네이션이 필요함
– Program manager, Chief Architect 등
• Cross functional team (Feature based)
– 기능 단위로 팀을 묶고, 한팀이 전체 컴포넌트를 개발
– 플랫폼화 필수 (쉽게 기능 추가가 필요한 구조)
팀 모델의 변화
스크럼 개발 방법론
<Insert Picture Here>
그래서…
저명한 박사님들께서.. 방법론을 만드시니..
RUP,CBD,CMMI
개발 방법론
But…
그러나 현실은
▪ 방법론은 방법론…
▪ 우리는 조금 더 현실적인 방법론이 필요합니다.
개발 방법론
실용주의 방법론
구세주 등장!!
• 실용주의 방법론
• Erich Gamma, Joel Spolsky, Kent beck, Andrew Hunt
• Iterative & Incremental
• 애자일 기반
• 기존 방법론과 차이
• 요구 사항이 변화할 것을 가정
• 에러가 있을 것을 가정하여, 자주 테스트
• 협업과 커뮤니케이션
개발 방법론
대표적인 개발 방법론
스크럼이 대세!!
관리자 입장에서는 예측 불가
조직에 맞게 바꿔서 쓰세요
http://agilescout.com/learn-more-agile-software-development-methods-this-year/
스크럼 프로세스 개요
스크럼 프로세스 개요
스프린트
VOTING 스토리등록 회고
일일 스크럼
스프린트
스토리 그루밍
회고
일일 스크럼
스토리 그루밍
스프린트
종료
스프린트
시작
스프린트
준비 기간
조직 구조
• 2 피자 팀 (5~7명)
• Cross functional team (기획 + 개발 + 디자인 + QA + 운영)
• Self Organized team (스스로 결정하고 진행)
• 스크럼 마스터, 프로덕트 오너 (PO)
• 애자일 코치가 있으면 효과가 높음 (EX. OO슬라이드)
핵심은...
요구 사항은 변한다…
변하는게 나쁜게 아니라 고객은 배우면서 성장한다.
그러니 당연하게 바뀐다.
결국은 사람이 답이다.
커뮤니케이션을 원할하게 하는 방향으로 변화
역할과 원칙, 프로세스를 잊지 마라
안그러면 망한다. 애자일은 무슨~~
JIRA를 이용한 스크럼 운용 실전
1. 그루밍
• ”다음 스프린트에 들어가기전에, PO가 다음 스프린트에 개발할 기능에 대해서
대략적으로 리뷰를 하는 행위”. 스프린트 진행중 일어남
• WHY
• 다음 스프린트에 대한 가시성 확보 (미리 생각할 시간을 준다)
• 개발 개시전 리뷰를 통해서 개발 가능성, 기획상 구멍등을 찾아서 수정할 시간을 갖는다.
• 어떻게 ?
• 1시간 정도로, 사용자 스토리나 UX 프로토타입을 리뷰
• 가급적 실제로 돌아가는 UX 목업이 좋음 (애니메이션 복잡도등을 미리 예측 가능)
2. 사용자 스토리 작성
• 사용자 스토리
: 주요 기능을 사용자 관점에서 기술
“As a {user}, I want do {something}”.
“나는 {사용자로써}, {무엇}을 한다”.
• 특징
• 직관적으로 이해가 되어야 하며
• 테스트가 가능해야 함
• 분류, 스토리, 설명 형태로
기술하는 것이 좋음
기능 분류
상세 설명사용자 기능
스토리 진행 순서
3. 스토리 보팅
• 플래닝포커 (PLANNING POKER)• 개발팀 전체가 모여서, 각각의 사용자 스토리에 대해서 개발
기간을 투표
• 포인트의 의미는 알아서 정함. (EX 1포인트 = 1일)
• 포인트는 0.5,1,2,3,5 단위로 띄워서 정의
• 전체 팀원이 서로 설득 당할때 까지 계속 진행
• 사용자 스토리에 대한 디테일은 PO에게 그 자리에서 질의
• 점수가 가장 높은 사람과, 가장 낮은 사람의 의견을 듣고 다시
보팅.
가장 낮은 사람 (빠른 개발 방식을 알고 있을 수 있음), 가장
높은 사람 (놓친 무언가를 알 수 있음)
• 정확하지 않으나, 정확함
plantit.com
4. 개발 범위(일정 지정)
• 산출된 포인트로 개발 일정 지정 (2~4주)
• 버퍼 (회의, 문서, 배포, 오류 수정 등) 배정 필요 (1.5~2배)
• 4주가 넘는 일정은 우선순위에 따라 자름
5. 스프린트 시작
• JIRA에 등록
• 요건 UX 확인은 JIRA 로 핑퐁, UX 시안도 JIRA로 전달
• JIRA ISSUE 구조 정의
5. 스프린트 시작
• JIRA의 이슈 타입
• EPIC : 스토리의 집합
• STORY : 사용자 중심의 기능 목록
• CHORE : 사용자 기능 중심이 아닌, 기술적인 태스크
• ISSUE : 메니져가 관리하는 이슈
• BUG : 버그
• SUB-TASK : 태스크들의 서브 태스크
5. 스프린트 시작
• EPIC 등록
5. 스프린트 시작
• 이슈 등록 / 컴포넌트 정의
• 컴포넌트는 제품 단위 또는 팀 단위로 분리하는
것이 좋음
• EX) IOS,안드로이드,웹
• EX) 관리자 포탈
5. 스프린트 시작
• 이슈 등록 / Priority (우선순위)
• Blocker의 경우 해결되지 않으면 프로젝트가 진행될 수 없는 경우
• Critical은 프로젝트 진행은 가능하나 해결하지 않으면 정상적인 서비스 개발이 어려운 경우
• Major 꼭 개발해야 하는 경우
• Minor 개발은 해야 하나 없어도 상관 없는 경우
• Trivial 있으나 없으나 크게 상관 없는 경우
5. 스프린트 시작
• 이슈 등록
• Summary : 제목 입력
• Priority : 우선 순위 생성
• Issue Type : 보통은 Story로
• Assignee : 개발 담당 (또는 스크럼 마스터로
정해놓고, 나중에 ASSIGN하거나, 각 개발자가
알아서 당겨가는 PULLING 방식)
• Description : Issue에 대한 상세 내용
* 액셀로 벌크 업로드 가능
5. 스프린트 시작
• 이슈 등록 / 스토리 포인트 부여
• 스토리 보팅 단계에서 산출한 스토리
포인트를 스토리별로 부여
5. 스프린트 시작
• 이슈 등록 / 스프린트 맵핑
• 스프린트를 생성하고, 백로그에서 스프린트를 끌어 올려서, 스프린트에 맵핑
5. 스프린트 시작
• 이슈 등록 / EPIC 맵핑
• 등록된 이슈들을 EPIC에 맵핑
• 처음 스토리 작성시 그룹핑을 그대로 사용
5. 스프린트 시작
• 이슈 등록 / 릴리즈 버전 맵핑 • 릴리즈 버전을 정의해놓고, 버전에 스토리를 맵핑
• 어느 기능이 어느 버전에 들어 가는지 추적 가능
• 어느 버그가 어느 버전에서 발생해서 어느
버전에서 수정이 가능한지 추적 가능
5. 스프린트 시작
• 칸반 보드 세팅
• 진행중인 스크럼 태스크의 상태를 칠판에 표시 해놓는
방식 (포스트잇)
• JIRA 애자일 보드로도 가능하지만, 가시성이 떨어짐.
(태스크 & 서브 태스크들이 많아서 잘 안보게됨. 또는
자기것만 보게됨) → JIRA를 쓰더라도 칸반보드는 별도
운영하는게 좋음
• 칸반 보드의 스타일은 팀과 개발 방식에 맞게 끊임없이
변화해야 함
6. 스프린트 진행
• 일일 스크럼 미팅
• 약속한 시간에 스탠드업 미팅
• 칸반 보드를 보고
• “어제 한일, 오늘 할일, 일처리에 장애 요인” 을 간단하게
이야기 함.
• 끼어들거나 질문 금지… (마이크를 드는것도 좋음)
• 추가 회의가 필요하면 스크럼 미팅 끝나고
• 생각보다 잘 안됨. (회의는 하지만 컨택스트 공유가 잘
안됨) → 될때까지…
6. 스프린트 진행
• 코드 리뷰
• 코드 리뷰는 피어 리뷰 방식으로 진행
• 문제 발생시 피어와 커미터 양쪽 공동 책임
• Reviewboard,gitlab, …
[reviewboard]
6. 스프린트 진행
• DAILY COMMIT (with TICKET #)
• 매일 코드 커밋
• 코드 커밋시에 JIRA TICKET #를 적어 넣으면, JIRA 티켓에서 코드 변경 사항 추적이 용이함.
6. 스프린트 진행
• JIRA 티켓 업데이트
• 보통 여기서 망함
• 잘못된 사용예
• 티켓에 아무 내용이 없음
• 상태를 업데이트 하지 않음 (나중에 몰아 닫기)
• 옳은 사용예
• 티켓을 통해서 요구사항에 질문이 있을때, PO에게 다시 지정, UX가 필요하면 UX 디자이너에게
지정 (또는 서브 태스크 사용)
• 나한테 ASSIGN 된 티켓은 항상 업데이트
• 스크럼 코치가 있으면 효과적 (티켓 업데이트를 종용)
7. QA
• 근래에 QA 방식은 다양화됨
• 개발팀이 직접 QA 하는 방식 (별도의 QA를 두지 않음)
: 이상적.빡셈. 다양한 단말 테스트가 쉽지 않음
• 개발팀내에 QA를 둬서 스토리가 개발 완료되는 데로 QA
: 막판에 몰리는 현상이 발생함
• 개발팀 외에 QA를 두고, 개발 종료 시점에 QA를 하는 방식
: 당근 막판에 몰리고, QA팀 일정 조정이 어려움.
8. 데모
9. 릴리즈 및 배포
• 코드 프리즈 및 배포
• 앱 릴리즈
• 안드로이드 단계적 릴리즈 (10%, 30%, … 100%)
• 앱 크래쉬 리포팅 (Twitter Crashtycs)
10. 회고
• 잘한것, 고마운것,잘못한것, 아쉬운점을 정리해서 다음 스프린트에 개선 방향을
정하고 세부 액션 아이템을 정해서 수행
• 진행자가 있는 것이 좋음
• 포스트잇으로 잘한것,고마운것, 잘못한것, 아쉬운점을 각자 적어서 붙여놓고 그룹핑
• 잘한것을 더 잘하게, 미진했던 점을 극복할 수 있는 방안을 써놓고 그룹핑
• 투표를 통해서 다음 기간에 실행에 옮길 아이템을 선정
• 다음 회고 프로세스를 개선할 수 있는 방안을 추가로 기술
• 일반적으로 회고때 푸념만 이야기 하고 구체적으로 실행되지 않는 경우가 많음
• 액션 아이템에 대한 오너(OWNER)를 정하는 것이 좋음
10. 회고
• 총 3시간 프레임웍
• 스프린트에 대한 감상 공유 (10)
• ESVP (10)
• 좋았던점, 나빴던점 모으기 (20) : 포스트잇 3장
• 잘된점,나빴던점,고칠내용,불확정 (30)
• 화남,기쁨,슬픔 (20) : 포스트잇 3장씩
• 팀워크 만족도 (20) : LV1~5
• 점스티커 투표(10) : 인당 스티커 한장씩, 도움이 된거 하나, 방해된거 하나
• SMART 회의 (20) : 4명씩
• EXACT 목표 (20) : 4인
• 회고에 대한 회고 (10)
백로그 회의
• 목적과 의미
• 3개월 이상의 장기 제품 개발 로드맵을 정의
• 수행 방법
• 주요 경영진과, 개발리드가 참여
• 매주 또는 격주에 한번
• 우선 순위 조정 및, 주요 기능에 대한 사전 리뷰
• 에픽 단위의 기능을 정의하고, 우선순위를 비지니스 상황에 따라서 변동
• 개발원에 투명하게 전파
• 운영
• JIRA에 백로그 프로젝트를 별도 구성
• 위아래 순서로 우선 순위 지정
• 릴리즈 버전을 부여함으로써 릴리즈에 대한 대략적인 일정 예측
감사합니다

More Related Content

PDF
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
PDF
svn 능력자를 위한 git 개념 가이드
PPTX
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
PPTX
오픈소스 개발을 위한 Git 사용법 실습
PDF
[AIS 2018] [Team Tools_Basic] Jira Software를 활용하여 생산성을 높이기 - 모우소프트
PDF
いつやるの?Git入門 v1.1.0
PPTX
애자일 스크럼과 JIRA
PDF
초보자를 위한 Git & GitHub
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
svn 능력자를 위한 git 개념 가이드
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
오픈소스 개발을 위한 Git 사용법 실습
[AIS 2018] [Team Tools_Basic] Jira Software를 활용하여 생산성을 높이기 - 모우소프트
いつやるの?Git入門 v1.1.0
애자일 스크럼과 JIRA
초보자를 위한 Git & GitHub

What's hot (20)

PPTX
本当のオブジェクト指向は可読性を上げる
PDF
やりなおせる Git 入門
PDF
Form認証で学ぶSpring Security入門
PPTX
JIRA 업무 생산성 향상 및 프로젝트 관리
PPTX
LINEの新卒採用試験 ズバリ問題解説
PDF
머신러닝 해외 취업 준비: 닳고 닳은 이력서와 고통스러웠던 면접을 돌아보며 SNU 2018
PDF
オトナのTDD(テスト駆動開発)入門
PDF
ノンプログラマでも今日から使える「Git」でバージョン管理
PDF
golang.tokyo #6 (in Japanese)
PDF
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
PPT
ドメインロジックの実装方法とドメイン駆動設計
PDF
オブジェクト指向エクササイズのススメ
PDF
15分でわかるGit入門
PDF
いつやるの?Git入門
PDF
[NDC 발표] 모바일 게임데이터분석 및 실전 활용
KEY
やはりお前らのMVCは間違っている
PDF
Jira + Confluence + Bitbucket으로 이슈 트래킹 걸음마 떼기
PDF
こわくない Git
PDF
View customize plugin for Redmineの紹介 (2019年版)
PDF
デザイナのためのGit入門
本当のオブジェクト指向は可読性を上げる
やりなおせる Git 入門
Form認証で学ぶSpring Security入門
JIRA 업무 생산성 향상 및 프로젝트 관리
LINEの新卒採用試験 ズバリ問題解説
머신러닝 해외 취업 준비: 닳고 닳은 이력서와 고통스러웠던 면접을 돌아보며 SNU 2018
オトナのTDD(テスト駆動開発)入門
ノンプログラマでも今日から使える「Git」でバージョン管理
golang.tokyo #6 (in Japanese)
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
ドメインロジックの実装方法とドメイン駆動設計
オブジェクト指向エクササイズのススメ
15分でわかるGit入門
いつやるの?Git入門
[NDC 발표] 모바일 게임데이터분석 및 실전 활용
やはりお前らのMVCは間違っている
Jira + Confluence + Bitbucket으로 이슈 트래킹 걸음마 떼기
こわくない Git
View customize plugin for Redmineの紹介 (2019年版)
デザイナのためのGit入門
Ad

Similar to [오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스 (20)

PPTX
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
PPTX
프로젝트 Xxx에 적용하고 싶은 개발방법
PPTX
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
PDF
스크럼을 이용한 게임 개발
PDF
언제 애자일을 써야 좋을까? The better ways of developing software
PDF
Scrum and kanban with jira
PPTX
현장에서 사용하는 Software production
PDF
모바일 앱 개발을 위한 Agile 적용
PDF
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브
PPTX
SOSCON2015 SI이노베이션
PDF
스크럼 101
PPTX
Application Lifecycle Management - CURVC
PPTX
Introduction of scrum 안성현 20120606
PPTX
소프트웨어 개발 프로세스 개선
PDF
Agile SW 개발
PPTX
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm
PDF
애자일 프랙티스
PPTX
제13회컨퍼런스 조대협 서버사이드개발
PDF
성장하는 스타트업의 프로세스 개척기
PPT
프로젝트 에코시스템(개발환경의 효율적 개선)
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
프로젝트 Xxx에 적용하고 싶은 개발방법
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
스크럼을 이용한 게임 개발
언제 애자일을 써야 좋을까? The better ways of developing software
Scrum and kanban with jira
현장에서 사용하는 Software production
모바일 앱 개발을 위한 Agile 적용
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브
SOSCON2015 SI이노베이션
스크럼 101
Application Lifecycle Management - CURVC
Introduction of scrum 안성현 20120606
소프트웨어 개발 프로세스 개선
Agile SW 개발
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm
애자일 프랙티스
제13회컨퍼런스 조대협 서버사이드개발
성장하는 스타트업의 프로세스 개척기
프로젝트 에코시스템(개발환경의 효율적 개선)
Ad

[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스

  • 3. Speaker Name / Company Name Session Title 발표자 소개 조 대 협 본명: 조병욱 회원 13만명 온라인 개발자 커뮤니티 자바스터디(www.javastudy.co.kr) 운영자.. (기억의 저편..) 한국 자바 개발자 협회 부회장,서버사이드 아키텍트 그룹 운영자 벤쳐 개발자 BEA 웹로직 기술 지원 엔지니어 장애 진단, 성능 튜닝 NHN 잠깐 오라클 컨설턴트 (SOA,EAI,ALM,Enterprise 2.0,대용량 분산 시스템)MS APAC 클라우드 수석 아키텍트 프리렌서 (잘나가는 사장님) 삼성전자 무선 사업부 B2B팀 Chief Architect 피키캐스트 CTO 구글 클라우드 엔지니어
  • 4. Google Cloud Platform 4 오늘 강의 내용은 자매품 “대용량 아키텍쳐와 성능 튜닝” 조대협의 서버사이드 “소프트웨어 개발과 테스트”
  • 5. 잘하는 것 부터 시작해서 발전 대세는 스크립트 언어 스스로 공부,스스로 개발,내재화 소규모 조직 [10~20명] 대우 받는 개발자 클라우드 컴퓨팅 빠른 시장 진입,저비용,누구나 서비스 젊은 개발자 (한국은 접는 개발자) 협업 [SNS,오픈소스,GitHub] CI to CD 유연한 고용 시장 메뚜기!! 3년 넘으면 바보 한국은 배신자 개발자의 변신은 무죄 새로운 능력..!! 잉여력STAR UP 요즘 실리콘 밸리에서는
  • 6. 대세는 수퍼 개발자!! 요즘 실리콘 밸리에서는
  • 8. 시대별로 소프트웨어를 개발하는 이유가 어떻게 변화 했을까? 우리가 지금 쓰는 기술들은 왜? 인터넷,SNS의 시대엔터프라이즈 시대 모바일 시대 서비스 사업자 대단한 님들!! 벤더 개발자!! (스타트업,앱개발자) → 당신도 할 수 있다 기술 변화의 주체 소프트웨어 개발 중심의 변화
  • 10. 인터넷,SNS의 시대엔터프라이즈 시대 모바일 시대 EJB, JAVA, SERVLET/JSP 들어는 보셨나요? 벤더 : “이게 최신 기술임!!. 교육 부터 다 해드림!! 나만 믿으세요” $$$ 먹고 살 걱정 없음!! Spring,Hibernate,MySQL,Struts,R uby On Rails,PHP .. 서비스사 : 제품은 비싸요. 우리가 만든거 가져다 쓰세요!! 대신 책임은 니꺼! 공부해야 함.. 압박!! 조금씩 먹고 살기 힘들어짐 (버틸만 함-그래도 대세는 있음) JavaScript, Cloud,node.js, Ruby on Rails,NoSQL 개발자:어려워서 못 써먹겠음. 차라리 만듬..!! 기술 변화도 심함 이제는 생존의 문제!! 명퇴가 눈앞에.. 시대별 기술의 변화
  • 11. 인터넷,SNS의 시대엔터프라이즈 시대 모바일 시대 UNIX 서버 벤더 소프트웨어 X86 서버 오픈소스 클라우드 오픈소스 스크립트 언어!! ORACLE MySQL NoSQL API HTML 5 안드로이드,IOS웹웹,4GL 쉽고 빠른 개발 기술의 홍수 대체제 성격 새로운 기술 흐름을 만드는 전환기 안정성,미션 크리티컬 업무 위주 시대별 기술 변화
  • 12. 조합 1. 기획자 창업 디자이너 - 기획자 여자 친구 개발자 – 기획자의 친구 (디자이너를 사랑함) 조합 2. 디자이너 창업 기획자 - 디자이너의 여자 친구 개발자 – 디자이너의 친구 (기획자를 사랑함) 개발자 1인 혼자 다 해야함 (클라이언트, 서버, 하드웨어 인프라) 배우기 쉬워야 함 돈 떨어지기전에 시장 출시해야함 빨리 배울 수 있어야함 왜 이런 현상이 생기는가? 쉬운 기술이 흥하는 이유
  • 13. 빠른 출시, 빠른 업데이트가 필요 수많은 앱들과 치열한 경쟁
  • 14. 요구되는 기술 빠른 출시, 빠른 업데이트가 필요 쉬운 기술 필요 낮은 비용 클라우드 컴퓨팅 스크립트 언어 운영 효율화 Devops 자동화
  • 15. 클라우드 컴퓨팅 • 클라우드 컴퓨팅이 가져다준 변화 – 저비용으로 시작 가능 – 무제한적 리소스 – 지역/시간 제약에서 자유로워짐 – 쉽다. 하드웨어 인프라에 대한 작업이 없어짐 개발자가 인프라를 핸들링 가능
  • 16. 클라우드 컴퓨팅 빠른 시장 진입 운영비 절감 초기 투자비 절감 유연한 자원 사용 (Auto Scale Out) 느려요 IO Performance 싸지 않아요 기존 솔루션이 안돌아요 장애가 납니다. 아주 잘!! (멀티 데이타 센타 설계) 클라우드 컴퓨팅의 장점 설계시 고려 사항 • 고려해야 하는 것들
  • 17. DEVOPS Devops = Development + Operation (개발 + 운영) 개발과 운영 조직을 하나로 묶어서 원할한 의사 소통 빠른 반영, 빠른 피드백 반영 가능
  • 19. 벤더 교육 센터 제품 메뉴얼 책 책 온라인 메뉴얼 블로그 찾아보기 물어보기(영어로…) 중수 코드 까보기 고수 네이버? 정보 습득 방식의 변화
  • 20. 개발 방식의 변화 벤더가 시키는데로 솔루션에 포함된 예제 보고 책 예제 보고 진리를 깨우치고 물어보고 다른데 프로젝트 했던 SI 불러서 그럴 시간 없음…. Copy & Paste Stack overflow 하는데 까정 해본다. 시간 없음 기술 검증 PoC,BMT 똑똑하면 소스 깐다. Trial & Error
  • 21. 단계별 개발 모델의 변화 • 1단계 스타트업!! 스타트업
  • 22. 단계별 개발 모델의 변화 성숙된 개발 조직 • 2단계 펀딩 받았다.
  • 23. 단계별 개발 모델 변화 • 3단계 깨달았다. CD & DEVOPS
  • 25. 팀 모델 • 기술 분류에 따른 팀 (Functioanl Team) – 프론트,백앤드,앱,운영,QA 등 모바일 앱 백앤드 웹 페이지 관리도구 댓글 포스팅 댓글 포스팅 앱개발팀 프론트 개발팀 백앤드 개발팀
  • 26. 팀모델의 변화 • Cross functional Team (Product based) – 한팀내에 프론트,백앤드,앱,운영,QA를 다 넣음 – MSA에 적용되는 팀모델
  • 27. 팀 모델의 변화 • Cross functional Team (Product based) – Product 간에 복잡한 코디네이션이 필요함 – Program manager, Chief Architect 등
  • 28. • Cross functional team (Feature based) – 기능 단위로 팀을 묶고, 한팀이 전체 컴포넌트를 개발 – 플랫폼화 필수 (쉽게 기능 추가가 필요한 구조) 팀 모델의 변화
  • 30. <Insert Picture Here> 그래서… 저명한 박사님들께서.. 방법론을 만드시니.. RUP,CBD,CMMI 개발 방법론
  • 31. But… 그러나 현실은 ▪ 방법론은 방법론… ▪ 우리는 조금 더 현실적인 방법론이 필요합니다. 개발 방법론
  • 32. 실용주의 방법론 구세주 등장!! • 실용주의 방법론 • Erich Gamma, Joel Spolsky, Kent beck, Andrew Hunt • Iterative & Incremental • 애자일 기반 • 기존 방법론과 차이 • 요구 사항이 변화할 것을 가정 • 에러가 있을 것을 가정하여, 자주 테스트 • 협업과 커뮤니케이션 개발 방법론
  • 33. 대표적인 개발 방법론 스크럼이 대세!! 관리자 입장에서는 예측 불가 조직에 맞게 바꿔서 쓰세요 http://agilescout.com/learn-more-agile-software-development-methods-this-year/
  • 35. 스크럼 프로세스 개요 스프린트 VOTING 스토리등록 회고 일일 스크럼 스프린트 스토리 그루밍 회고 일일 스크럼 스토리 그루밍 스프린트 종료 스프린트 시작 스프린트 준비 기간
  • 36. 조직 구조 • 2 피자 팀 (5~7명) • Cross functional team (기획 + 개발 + 디자인 + QA + 운영) • Self Organized team (스스로 결정하고 진행) • 스크럼 마스터, 프로덕트 오너 (PO) • 애자일 코치가 있으면 효과가 높음 (EX. OO슬라이드)
  • 37. 핵심은... 요구 사항은 변한다… 변하는게 나쁜게 아니라 고객은 배우면서 성장한다. 그러니 당연하게 바뀐다. 결국은 사람이 답이다. 커뮤니케이션을 원할하게 하는 방향으로 변화 역할과 원칙, 프로세스를 잊지 마라 안그러면 망한다. 애자일은 무슨~~
  • 39. 1. 그루밍 • ”다음 스프린트에 들어가기전에, PO가 다음 스프린트에 개발할 기능에 대해서 대략적으로 리뷰를 하는 행위”. 스프린트 진행중 일어남 • WHY • 다음 스프린트에 대한 가시성 확보 (미리 생각할 시간을 준다) • 개발 개시전 리뷰를 통해서 개발 가능성, 기획상 구멍등을 찾아서 수정할 시간을 갖는다. • 어떻게 ? • 1시간 정도로, 사용자 스토리나 UX 프로토타입을 리뷰 • 가급적 실제로 돌아가는 UX 목업이 좋음 (애니메이션 복잡도등을 미리 예측 가능)
  • 40. 2. 사용자 스토리 작성 • 사용자 스토리 : 주요 기능을 사용자 관점에서 기술 “As a {user}, I want do {something}”. “나는 {사용자로써}, {무엇}을 한다”. • 특징 • 직관적으로 이해가 되어야 하며 • 테스트가 가능해야 함 • 분류, 스토리, 설명 형태로 기술하는 것이 좋음 기능 분류 상세 설명사용자 기능 스토리 진행 순서
  • 41. 3. 스토리 보팅 • 플래닝포커 (PLANNING POKER)• 개발팀 전체가 모여서, 각각의 사용자 스토리에 대해서 개발 기간을 투표 • 포인트의 의미는 알아서 정함. (EX 1포인트 = 1일) • 포인트는 0.5,1,2,3,5 단위로 띄워서 정의 • 전체 팀원이 서로 설득 당할때 까지 계속 진행 • 사용자 스토리에 대한 디테일은 PO에게 그 자리에서 질의 • 점수가 가장 높은 사람과, 가장 낮은 사람의 의견을 듣고 다시 보팅. 가장 낮은 사람 (빠른 개발 방식을 알고 있을 수 있음), 가장 높은 사람 (놓친 무언가를 알 수 있음) • 정확하지 않으나, 정확함 plantit.com
  • 42. 4. 개발 범위(일정 지정) • 산출된 포인트로 개발 일정 지정 (2~4주) • 버퍼 (회의, 문서, 배포, 오류 수정 등) 배정 필요 (1.5~2배) • 4주가 넘는 일정은 우선순위에 따라 자름
  • 43. 5. 스프린트 시작 • JIRA에 등록 • 요건 UX 확인은 JIRA 로 핑퐁, UX 시안도 JIRA로 전달 • JIRA ISSUE 구조 정의
  • 44. 5. 스프린트 시작 • JIRA의 이슈 타입 • EPIC : 스토리의 집합 • STORY : 사용자 중심의 기능 목록 • CHORE : 사용자 기능 중심이 아닌, 기술적인 태스크 • ISSUE : 메니져가 관리하는 이슈 • BUG : 버그 • SUB-TASK : 태스크들의 서브 태스크
  • 46. 5. 스프린트 시작 • 이슈 등록 / 컴포넌트 정의 • 컴포넌트는 제품 단위 또는 팀 단위로 분리하는 것이 좋음 • EX) IOS,안드로이드,웹 • EX) 관리자 포탈
  • 47. 5. 스프린트 시작 • 이슈 등록 / Priority (우선순위) • Blocker의 경우 해결되지 않으면 프로젝트가 진행될 수 없는 경우 • Critical은 프로젝트 진행은 가능하나 해결하지 않으면 정상적인 서비스 개발이 어려운 경우 • Major 꼭 개발해야 하는 경우 • Minor 개발은 해야 하나 없어도 상관 없는 경우 • Trivial 있으나 없으나 크게 상관 없는 경우
  • 48. 5. 스프린트 시작 • 이슈 등록 • Summary : 제목 입력 • Priority : 우선 순위 생성 • Issue Type : 보통은 Story로 • Assignee : 개발 담당 (또는 스크럼 마스터로 정해놓고, 나중에 ASSIGN하거나, 각 개발자가 알아서 당겨가는 PULLING 방식) • Description : Issue에 대한 상세 내용 * 액셀로 벌크 업로드 가능
  • 49. 5. 스프린트 시작 • 이슈 등록 / 스토리 포인트 부여 • 스토리 보팅 단계에서 산출한 스토리 포인트를 스토리별로 부여
  • 50. 5. 스프린트 시작 • 이슈 등록 / 스프린트 맵핑 • 스프린트를 생성하고, 백로그에서 스프린트를 끌어 올려서, 스프린트에 맵핑
  • 51. 5. 스프린트 시작 • 이슈 등록 / EPIC 맵핑 • 등록된 이슈들을 EPIC에 맵핑 • 처음 스토리 작성시 그룹핑을 그대로 사용
  • 52. 5. 스프린트 시작 • 이슈 등록 / 릴리즈 버전 맵핑 • 릴리즈 버전을 정의해놓고, 버전에 스토리를 맵핑 • 어느 기능이 어느 버전에 들어 가는지 추적 가능 • 어느 버그가 어느 버전에서 발생해서 어느 버전에서 수정이 가능한지 추적 가능
  • 53. 5. 스프린트 시작 • 칸반 보드 세팅 • 진행중인 스크럼 태스크의 상태를 칠판에 표시 해놓는 방식 (포스트잇) • JIRA 애자일 보드로도 가능하지만, 가시성이 떨어짐. (태스크 & 서브 태스크들이 많아서 잘 안보게됨. 또는 자기것만 보게됨) → JIRA를 쓰더라도 칸반보드는 별도 운영하는게 좋음 • 칸반 보드의 스타일은 팀과 개발 방식에 맞게 끊임없이 변화해야 함
  • 54. 6. 스프린트 진행 • 일일 스크럼 미팅 • 약속한 시간에 스탠드업 미팅 • 칸반 보드를 보고 • “어제 한일, 오늘 할일, 일처리에 장애 요인” 을 간단하게 이야기 함. • 끼어들거나 질문 금지… (마이크를 드는것도 좋음) • 추가 회의가 필요하면 스크럼 미팅 끝나고 • 생각보다 잘 안됨. (회의는 하지만 컨택스트 공유가 잘 안됨) → 될때까지…
  • 55. 6. 스프린트 진행 • 코드 리뷰 • 코드 리뷰는 피어 리뷰 방식으로 진행 • 문제 발생시 피어와 커미터 양쪽 공동 책임 • Reviewboard,gitlab, … [reviewboard]
  • 56. 6. 스프린트 진행 • DAILY COMMIT (with TICKET #) • 매일 코드 커밋 • 코드 커밋시에 JIRA TICKET #를 적어 넣으면, JIRA 티켓에서 코드 변경 사항 추적이 용이함.
  • 57. 6. 스프린트 진행 • JIRA 티켓 업데이트 • 보통 여기서 망함 • 잘못된 사용예 • 티켓에 아무 내용이 없음 • 상태를 업데이트 하지 않음 (나중에 몰아 닫기) • 옳은 사용예 • 티켓을 통해서 요구사항에 질문이 있을때, PO에게 다시 지정, UX가 필요하면 UX 디자이너에게 지정 (또는 서브 태스크 사용) • 나한테 ASSIGN 된 티켓은 항상 업데이트 • 스크럼 코치가 있으면 효과적 (티켓 업데이트를 종용)
  • 58. 7. QA • 근래에 QA 방식은 다양화됨 • 개발팀이 직접 QA 하는 방식 (별도의 QA를 두지 않음) : 이상적.빡셈. 다양한 단말 테스트가 쉽지 않음 • 개발팀내에 QA를 둬서 스토리가 개발 완료되는 데로 QA : 막판에 몰리는 현상이 발생함 • 개발팀 외에 QA를 두고, 개발 종료 시점에 QA를 하는 방식 : 당근 막판에 몰리고, QA팀 일정 조정이 어려움.
  • 60. 9. 릴리즈 및 배포 • 코드 프리즈 및 배포 • 앱 릴리즈 • 안드로이드 단계적 릴리즈 (10%, 30%, … 100%) • 앱 크래쉬 리포팅 (Twitter Crashtycs)
  • 61. 10. 회고 • 잘한것, 고마운것,잘못한것, 아쉬운점을 정리해서 다음 스프린트에 개선 방향을 정하고 세부 액션 아이템을 정해서 수행 • 진행자가 있는 것이 좋음 • 포스트잇으로 잘한것,고마운것, 잘못한것, 아쉬운점을 각자 적어서 붙여놓고 그룹핑 • 잘한것을 더 잘하게, 미진했던 점을 극복할 수 있는 방안을 써놓고 그룹핑 • 투표를 통해서 다음 기간에 실행에 옮길 아이템을 선정 • 다음 회고 프로세스를 개선할 수 있는 방안을 추가로 기술 • 일반적으로 회고때 푸념만 이야기 하고 구체적으로 실행되지 않는 경우가 많음 • 액션 아이템에 대한 오너(OWNER)를 정하는 것이 좋음
  • 62. 10. 회고 • 총 3시간 프레임웍 • 스프린트에 대한 감상 공유 (10) • ESVP (10) • 좋았던점, 나빴던점 모으기 (20) : 포스트잇 3장 • 잘된점,나빴던점,고칠내용,불확정 (30) • 화남,기쁨,슬픔 (20) : 포스트잇 3장씩 • 팀워크 만족도 (20) : LV1~5 • 점스티커 투표(10) : 인당 스티커 한장씩, 도움이 된거 하나, 방해된거 하나 • SMART 회의 (20) : 4명씩 • EXACT 목표 (20) : 4인 • 회고에 대한 회고 (10)
  • 63. 백로그 회의 • 목적과 의미 • 3개월 이상의 장기 제품 개발 로드맵을 정의 • 수행 방법 • 주요 경영진과, 개발리드가 참여 • 매주 또는 격주에 한번 • 우선 순위 조정 및, 주요 기능에 대한 사전 리뷰 • 에픽 단위의 기능을 정의하고, 우선순위를 비지니스 상황에 따라서 변동 • 개발원에 투명하게 전파 • 운영 • JIRA에 백로그 프로젝트를 별도 구성 • 위아래 순서로 우선 순위 지정 • 릴리즈 버전을 부여함으로써 릴리즈에 대한 대략적인 일정 예측