14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
TRANSCRIPT
조대협의 소프트웨어 개발
조대협
• 개발자• 웹로직 기술 지원 엔지니어• 장애 진단 , 성능 튜닝• 컨설턴트 (SOA,EAI,ALM,Enterprise 2.0)• 아키텍트 ( 대용량 분산 시스템 )• APAC 클라우드 수석 아키텍트• 프리렌서• 지금은 Chief(Cheap?) 아키텍트
블로그 : http://bcho.tistory.com이메일 : [email protected]
오늘도 ?
할 이야기가 많아요짧게짧게 . 요점만 간단히
• 오늘 할 이야기
- 소프트웨어 개발 트랜드의 변화- JIRA 를 이용한 프로젝트 관리- 소프트웨어 개발팀의 조직 구조- ( 시간되면 ) TEST LINK 를 이용한 테스트 관리
소프트웨어 개발 트랜드의 변화
• 소프트웨어 트랜드의 변화개발 방식
• 대규모 / 긴기간 에서 소규모 / 단기간 ( 스타트업 )• 빠르고 잦은 릴리즈 ( 애자일 )• 고객의 VOC 를 수용 ( 빅데이타 ,SNS)• 개발과 운영을 통합 (DEVOPS)• 열심히 일하는 것으로 감당 안됨 ( 자동화 )• 스페샬 리스트에서 제너럴 리스트 ( 수퍼엔지니어 )• 대용량 글로벌 스케일• 오픈소스• 구글링 ,STACKOVERFLOW, 블로그 ,GITHUB
• 소프트웨어 트랜드의 변화아키텍쳐
중앙 집중형 저장소(RDBMS,NFS)
UX + 비지니스 로직
분산형 저장소(NoSQL,Sharding)
REST API
비지니스 로직
자바스크립트
• HTML,Servlet/JSP• EJB,Spring• RDBMS
• HTML5,AngularJS• REST,WebSocket• Node.JS,IMDG• NoSQL,Sharding
동기식 , 중앙 집중형 , 고가용성클러스터링
비동기식 , 분산형 , ResilienceShared Nothing
• 클라우드 2’ND ROUND
• 개발자가 인프라도… (Devops)• 네트워크와 IO 가 문제 !!!• 확실히 차이남• 생각보다 비쌈 . 아는 만큼 싸짐
Atlassian JIRA 를 이용한 프로젝트 관리
• 전체 흐름
기능 정의 UX 프로토타입
EPIC 정의 릴리즈 플랜
스프린트 플랜
서브태스크 생성
스프린트 시작 노트
스프린트 종료
데모 & 회고릴리즈
리뷰
반복( 리뷰 , 반복 = 생각 )
반복
아키텍쳐 디자인 (ADS)
• 기능 정의
순차적 스토리 UX 디자인 가능 테스트 가능 Level 1
(20 개 내외 ) 직관적 함축적 Level 2
as a {user}, I want do {some-
thing}
리뷰 & REVIEW….!!
• UX 프로토타입
Balsamiq Mock up Layout it
그리고 또 리뷰 !! & REVIEW !!
• 아키텍쳐 디자인전체적인 큰 흐름과 컴포넌트만 명시
http://bcho.tistory.com/687
내용이 많아서 , 여기에 다 있습니다 .
• 들어가기 앞서서스크럼 방법론 . ( 아님 Kanban 도 좋고 )
출처 : http://www.agilebuddha.com/trainings-workshops/scrum-training-work-shop/
• JIRA 사용 준비애자일 보드
JIRA AGILE BOARD TO DO , IN PROGRESS , DONE TO DO , IN PROGRESS , {Testing}, DONE
• EPIC 등록
한 스프린트에 끝나지 않음 ( 길게 간다 ) 스토리들의 집합 Level 1 Feature 사용자에게 직접 관련 없지만 묶을 필요가 있는 ( 인프라 셋업 , 디자인 , 문서작업 )
• 스토리 등록Level 2. Feature from excel
Feature detail from Excel
스토리 등록 EPIC 맵핑
• 컴포넌트 정의시스템을 구성하는 컴포넌트 정의
이미 대략적인 아키텍쳐가 나와 있어야 함
컴포넌트별 개발팀 정의 ( 챔피언 , 개발자 , 테스터 )
• 릴리즈 플랜각 기능이 완성되는 버전을 명시
드래그 & 드롭
• 개발 계획 완료
• 전체적인 기능 정의 & 등록 완료
• 제품 릴리즈 일정 정의 완료
• 이제 부터는 스프린트 시작
• 스프린트 플랜
• 모여서• 스토리를 스프린트에 맵핑• 각 스토리별 서브 태스크 생성 ( 스토리를 구현하기 위해 구체적으로 해야할일 )
• 스토리 포인트 부여 - 0.5 일 ,1 일 ,2 일 ( 상대값이 편함 )
• 스프린트 시작 ( 2 주가 적절 , 20%~40% 버퍼 )
• 스프린트 시작• 스프린트 시작• 상태 업데이트 (Start/Resolved)
• 노트 필수 ( 자세하게 , 휴가가도 될만큼 )
• Daily 스크럼 ( 어제 모했고 , 오늘 모하고 , 문제는 모가 )
※ 절대 보고 아님 . 마이크 있는 사람만 , 전체 20 분 이내 , 치킨을 빼는 것도
• 개발된 테스크는 테스터에 ASSIGN
• 스프린트 종료• 릴리즈 & 배포• 데모• 같이 앉아서 , JIRA 에서 스프린트 종료 ( 닫을거 닫고 , 넘길거 넘기고 )
• 회고 몰 잘했고 , 몰 잘못했고 , 앞으로 어떻게 해보자 끊임없는 프로세스 개선 부담 되면 치킨 끼리 , 치킨 빼고
• 다시 반복• 스프린트 플랜 부터 반복• 끊임 없는 개선• 2 달은 해봐야 .
• 몇가지 팁스윔레인
워크플로우 VCS 연동
• 몇가지 팁이슈 타입
• 포인트 개념이 있는 타입 Story - 사용자 기능 Chore - 비기능
• 포인트 개념이 없는 타입 Issue
Bug
Task (Optional)
되도록이면 간결하게 , 최소한으로 . 안그럼 헷갈림
• 몇가지 팁프로세스 최적화
• 메뉴얼 , 교육• 끊임 없는 코칭 ( 중요함 – 아니면 중구난방 )
툴은 프로세스를 효율적으로 사용하기 위함툴에 맞춰서 프로세스 만드는게 아님
• 플러그인기타 좋은 기능 많음 .
• Atlassian Market 에서 구매해서 추가 가능 ( 무료도 많음 )
소프트웨어 개발팀 조직 구조
• PROGRAM,PRODUCT,PROJECT 개념PROGRAM
PRODUCT
PROJECT
COMPONENT
COMPONENT
PROJECT
COMPONENT
PRODUCT
PROJECT
COMPONENT
PROJECT
COMPONENT
COMPONENT
페이스북
메신져
메신져 개발 프로젝트
웹메신져
푸쉬서버
모바일메신져 프로젝트
모바일메신져
푸쉬서버 V2
• PROGRAM,PRODUCT,PROJECT 개념
• PROGRAM : 여러개의 PRODUCT 으로 구성 지속적
• PRODUCT : 하나의 의미를 가지는 서비스나 제품
• PROJECT : 일정 기간 , 자원 목표를 가지고 시스템을 개발
상대적 개념 . 나누기 따름
페이스북같은 SNS 프로그램
메신저개발팀
타임 라인개발팀
개발자 포탈개발팀
푸쉬 서버 개발팀
모바일앱 개발팀 웹 개발팀
테스트팀 빌드배포팀
고객 지원
운영팀
영업 / 마케팅
파트너 관리
전략 기획
프로덕트
컴포넌트
• 소프트웨어 개발팀의 구조
• 여러개의 PRODUCT 와 , PROJECT 를 관리• 필요한 PRODUCT 과 PROJECT 를 정의 및 기획• 개발 이외의 외부 조직과 커뮤니케이션 조율 ( 전략 , 기획 , 영업 )• 기획에 부터 서비스 전까지 모든것을 총괄 ( 서비스의 경우 운영 및 고객
지원까지 책임지는 경우도 있음 )
PROGRAM MANAGER
PROGRAM MANAGER
• 주어진 요구사항을 주어진 기간과 , 인력 , 예산 범위 내에서 구현할 수 있도록 관리
PRODUCT MANAGER
• 시장 분석 , 경쟁 제품 분석 , 제품 기획• 요구 사항 정의 , 우선 순위 조정• 기획하고 빠지는게 아니라 개발끝날때까지 같이
• 시스템 설계 . • 기술과 비지니스 조직간의 소통 채널• Enterprise Architect, Solution Architect, Application Architect,
Data Architect, Technical Architect.
ARCHITECT
SCRUM MASTER
• PL / 스크럼팀 리드• 애자일 코치• 일일 진행 상황 추적
DEVELOPER
• 소프트웨어 개발 및 단위 테스트• 요즘 추세는 멀티롤 ( 개발 , 테스트 , 세부 디자인 , 인프라 셋업 ,빌드 , 배
포 )
• 화이트 박스 / 블랙 박스 테스트• 테스트 자동화• 기능 테스트 , API 테스트 , UX 테스트• 성능 테스트 , 장애 테스트 , 안정성 테스트 , 확장성 테스트• 성능 엔지니어링
TEST ENGINEER
OPERATION
• 시스템 운영• 인프라 ( 하드웨어 ) 셋업 , 솔루션 설치 및 튜닝• 소프트웨어 배포 , 모니터링 , 장애 대응• 운영 시스템 자동화 ( 배포 , 모니터링 )
BUILD ENGINEER
• 개발 ,빌드 환경 관리 (GIT,MAVEN,JENKINS,JIRA)• 배포 자동화 , 테스트 자동화
아이콘 이미지 원본 : http://gemmagarner.com/portfolio/heads-up-character-illustrations/
• BUDGET($$$) 관리• 외주 ,솔루션 계약 관리• 전체 프로젝트 상황 모니터링 및 RISK 관리※ 프로젝트나 프로그램 규모가 클 경우 ( 프로젝트 단위 또는 프로그램 단위 )
PMO (PROJECT MANAGEMENT OFFICE)
아이콘 이미지 원본 : http://gemmagarner.com/portfolio/heads-up-character-illustrations/
고갱님• 요구 사항의 원산지이자 잦은 요구 사항의 주체• 야근 유발자• 그러나 이사람들도 힘듬• 프로젝트가 진행되면서 배움 – 그래서 요구사항이 바뀜• 외부 고객뿐 아니라 , 영업 조직 , 내부 기획 조직도 고객• 우리편이 되면 제일 든든함 . ( 적이 아니라 스폰서 ) – 돈 주는 사람임
페이스북같은 SNS 프로그램
메신저개발팀
타임 라인개발팀
개발자 포탈개발팀
고객 지원
운영팀
푸쉬 서버 개발팀
모바일앱 개발팀
웹앱개발팀
테스트팀
스크럼마스터
개발자 (4~6)
테스트엔지니어( 단위 /화이트박스 )
프로젝트메니져
프로덕트 메니져
아키텍트
프로그램 메니져
CHIEF 프로덕트 메니져 CHIEF 아키텍트
테스트엔지니어( 성능 , 통합 ,UAT/ 블랙박스 )
빌드배포팀빌드 엔지니어
영업 / 마케팅
협업(또는 관리 )
파트너 관리
전략 기획
협업
개발 조직 운영 조직 비지니스 조직
• 소프트웨어 개발팀의 구성원
TestLink 를 이용한 테스트 관리
• TEST LINK
웹 기반 테스트 관리 프로그램 오픈소스 1 시간만 공부하면 씀
왜 필요한데 ?
엑셀 삽질 , 아직도 수동 테스트가 많음 버전마다 바뀌는 TC 추적 요구사항 TO TC 추적 테스터에게 작업 지정 리포팅 , 커버리지
• 주요 기능 릴리즈 버전별 테스트 케이스 (TC) 정의 테스트 대상에 대한 버전 및 플랫폼 정의 TC 버전 관리 지원 테스터에게 TC 지정 테스트 결과 저장 리포팅 타 툴과 연동
Selenieum, SOAP UI,JENKINS 등 다른 테스트 툴과 연동 JIRA 와 연동 ( 테스트 실패시 BUG LINK 연동 )
• 순서1. 테스트 프로젝트 생성2. 테스트 케이스 생성3. 테스트 플랜 생성① 테스트 대상 시스템의 릴리즈 버전 , 플랫폼 등을 정의② 테스트 케이스를 테스터에 지정
4. 테스트 수행5. 종료 및 리포팅
• 순서1. 테스트 케이스 생성
• SUMMARY
• PRECONDITION
• STEP
• EXPECTED RESULT
• 그림 첨부• 파일 첨부
• 순서2. 테스트 배정
• TC 버전 선택• 테스트대상 버전 선택• 테스터에 배정
• 순서3. 테스트 수행
• 성겅 실패여부• 노트• JIRA 로 버그 등록• 버그와 연결
• 순서4. 리포트
• 웹 리포팅• TC 를 워드로 • EXCEL 로
참 쉬워요 .
생각보다 쓸만함 .
좋은데 어떻게 설명하지 ?1 시간만 해보세요윈도우즈 설치 : (5 분 ) https://
bitnami.com/stack/testlink
http://bcho.tistory.com/832 : 해보는데 40 분
• 팁 테스트 케이스의 폴더를 EPIC 과 맵핑하면 추적성이 좋음 JIRA 에서 스토리별로 TC 만들어도 됨 . ( 잘 안되더라 )
TC 이름에 JIRA Issue # 를 사용하면 추적됨 QA 팀이 나뉘어져 있는 경우에 좋더라 .
감사합니다 .