3장(1) JIRA를 이용한 스크럼 프로젝트 관리

3장 JIRA를 이용한 스크럼과 개발 조직, 코드 리뷰 기법

아틀라시안사의 JIRA는 버그 트랙킹 시스템에서 시작해서, 이슈나 이슈 기반의 전체적인 프로젝트 관리를 할 수 있게 하는 도구다. 클라우드를 이용한 호스팅 서비스와 설치형 서비스 양 쪽을 모두 지원하며, 설치형 10 사용자, 호스팅형 10$, 100사용자일 경우 4000$이다. JIRA는 이슈 관리 뿐 아니라 소스 코드 관리, CI를 위한 자동 빌드 도구, 팀 채팅 서비스, 코드 리뷰 도구 등의 기능을 제공한다.

1.1 가상 프로젝트

먼저 서비스의 주요 기능을 정의하고 엑셀로 먼저 정의한다. 개발이나 기획 그리고 UX 사람들과 몇 번의 리뷰를 거치면서 조금 더 상세화해야 한다.

이 때, 두 단계 정도로 나눠서 Feature(기능)를 기술하는데, Feature Level 1의 경우에는 일반적으로 생각할 수 있는 기능이다. Feature Level 2에는 상세 기능을 정의하는데, 이 때는 스크럼 방법론의 사용자 스토리 기술 방법을 사용한다. ("as a {user} I want to do {something}")

이런 기능 리스트를 정의할 때 중요한 것을 크게 3가지 정도 있다.

  • 스토리(Flow, Sequence) : 전체적인 Feature가 스토리 형태로 흐름을 가져야 한다.

  • 테스트 가능(Testable)

  • 디자인 가능(Designable)

다음으로 UX에 대한 프로토타입을 구현한다. 이러한 UX 프로토타입을 와이어프레임(Wireframe)이라고 한다.

1.2 JIRA 애자일 보드

스크럼 애자일 방법론에는 스크럼 보드가 있는데, 해야할 일(To do, Backlog), 진행 중인 일(In Progress), 완료된 일(Complete)로 나눠서 각 일(이슈)를 포스트잇으로 만든 후, 진행 단계에 따라 각 단계로 포스트잇을 이동해서 붙이는 방법이다.

이런 스크럼 보드를 웹으로 만든 것이 JIRA의 애자일 보드라는 기능이다. 이 기능을 쓰면 원격지에 있는 팀원까지 스크럼 보드를 공유할 수 있다. 각 해야할 일(이슈)에 대해서 자세한 내용을 Description에 서술해야 한다.

JIRA 메뉴

[Projects] → [Create Project] : 프로젝트 생성 , [Agile] → [Manage Board] → [Create a Scrum Board] : 스크럼 보드 생성

1.3 이슈 종류

  • Epic (에픽)

    여러 스토리들의 집합. 여러 스프린트에 걸쳐 종료됨. Level 1 Feature가 적합. 에픽을 정의할 때는 사용자 스토리 뿐 아니라 서버 설정이나 디자인 작업등도 해당된다.

  • Story (스토리)

    "as a {user}, I want to {do something}"에 해당하는 사용자가 직접 사용하는 기능이다. 이때 Story Point를 입력하여 개발에 걸리는 시간 또는 난도를 설정할 수 있다.

  • Chore (초어)

    초어는 개발 해야하는 부분이지만 사용자와 직접적으로 관계되지 않는 개발 내용을 정의한다. (예: Server Logging 구현)

  • Task (태스크)

    태스크는 해야 하는 일이지만, 구현에 관련없고, 일정이 없는 경우에 해당한다. (예: 디자인 문서 작성, 기획과 업무 협의)

  • Issue (이슈)

    매니저들이 관리하는 항목. (예: 클라우드 계약, 솔루션 결정)

  • Bug (버그)

    버그는 테스트 엔지니어에 의해 테스팅 되고 버그로 리포팅된 타입이다.

  • Sub Task (서브 태스크)

    스토리나 초어를 개발하기 위해서는 여러가지 실제 개발 작업이 필요하다. 스토리나 초어가 상세한 개발 태스크로 나누어지면, 이를 스토리나 초어 같은 이슈 하위에 Clid Task로 등록할 수 있다. 이 Sub Task는 개별 개발자에게 할당되며, 0.5~2일 정도에 끝날 수 있는 태스크로 정의되어야 한다.

JIRA 메뉴

[Project] → [Administration] : 이슈 타입 정의

1.4 에픽 등록

Feature Level 1을 에픽으로 등록하면 좋다.

JIRA 메뉴

애자일 보드 Plan 모드 → [Create Epic]

1.5 이슈 등록과 맵핑

이슈(Story, Chore, Issue)를 등록한다.

  • Component (컴포넌트)

    Component는 시스템의 컴포넌트를 정의한다. 컴포넌트 설계는 Feature가 다 정의된 후 아키텍처 설계를 거쳐서 시스템을 구성하는 컴포넌트를 정의한 후 사용한다.

  • Priority (우선순위)

    해당 이슈가 얼마나 중요한지를 나타내는 것으로 Blocker, Critical, Major, Minor, Trivial 식으로 나누어진다.

    • Blocker : 해결되지 않으면 프로젝트가 진행될 수 없는 경우

    • Critical : 프로젝트 진행은 가능하나 해결하지 않으면 정상적인 서비스 개발이 어려운 경우

    • Major : 꼭 개발해야 하는 경우

    • Minor : 개발은 해야 하나 없어도 상관없는 경우

    • Trivial : 있으나 없으나 크게 상관없는 경우

JIRA 메뉴

[Issues] → [Create Issue] : 이슈 생성

[Projects] → 해당 프로젝트 선택 → [Administration] → [Components] : 컴포넌트 추가

1.6 릴리즈 버전 정의와 맵핑

릴리즈는 서비스를 작동 가능한 상태로 만드는 것. 즉 운영 서비스로 올리는 것이다. 어떤 기능을 언제 릴리즈할 것인가를 정의하는 것을 릴리즈 계획(Release Planning)이라고 한다. 버전 생성 후 애자일 보드에서 이슈들을 드래그 앤 드롭하여 릴리즈 버전에 매핑할 수 있다.

JIRA 메뉴

[Version] → [Create Version] : 릴리즈 버전 생성

1.7 스프린트 계획

스토리 포인트 부여

백로그에 있는 이슈를 클릭하여 Estimate라는 항목에서 스토리 포인트를 부여한다.

스프린트 생성 및 이슈 매핑

애자일 스크럼 보드에서 Create Sprint로 스프린트를 생성한다. 백로그 이슈들을 드래그 앤 드롭으로 스프린트로 이동하여 맵핑한다. 해당 스토리나 초어를 구현하는 데 필요한 서브 태스크들을 정의한다.

JIRA 메뉴

이슈 → [More] → [Create Sub-Task] : 해당 이슈에 서브 태스크 생성 , [Assign] : 담당자 할당

1.8 스프린트 시작

스프린트가 시작되면 [Work] 메뉴에 스크럼 보드가 활성화된다.

JIRA 메뉴

애자일 스크럼 보드 → [Plan] → [Start Sprint] : 스프린트 생성

1.9 스프린트 진행

이슈 처리

이슈에 대한 작업을 시작하면 작업의 상태를 In Progress로 변경한다. In Progess에서 작업이 끝나면 Done으로 상태를 옮겨준다.

코멘트를 이용한 진행 상태 추가

이슈에 코멘트를 적을 때는 내가 휴가를 가도 코멘트 기록만 보고도 인수인계될 정도로 기록하는 것이 좋다.

해결됨(Resolved) 처리

워크플로에 따라 Done이나 Resolve를 선택하면 자동으로 Resolution이 선택되도록 설정해주어야 한다.

워크플로

JIRA에서는 각각 다른 이슈 타입에 대해서 다르 워크플로를 정의할 수 있도록 지원한다.

Version Control System 연동을 이용한 이슈별 코드 변경 추적

SVN이나 Git에 커밋을 할 때 해당 이슈 #을 넣어서 커밋을 하면 해당 이슈에 관련되 소스 코드 변경 부분을 JIRA에서 링크로 해서 코드 변경 부분을 보여준다.

1.10 스프린트 종료

이슈들을 진행하고 스프린트가 끝나는 기간이 되면 해당 스프린트를 종료해야 한다. 이때 종료되지 않은 이슈들은 다시 모두 백로그로 내려간다.

JIRA 메뉴

애자일 보드 → [Work] → [Complete Sprint]

1.11 새로운 스프린트 시작

새로운 스프린트를 시작하기 전 스크럼 회고(Retrospective)를 진행해 지난 스프린트에서 잘한 것, 못한 것, 개선할 것을 논의하여 프로세스를 개선해나가야 한다.

1.12 JIRA의 확장

JIRA는 홈 화면에 개인별 또는 프로젝트 별로 대시보드를 구성할 수 있다. 다음은 추천항목이다.

  • 사용자별 이슈 할당 현황

  • Block, Critical, Major 이슈 개수

  • 신규 생성 대 해결되는 이슈 그래프(Created vs Resolved Graph)

  • 나에게 할당된 이슈

  • 내가 모니터링(Watching)하고 있는 이슈

  • 다른 프로젝트의 진척 상황

Last updated

Was this helpful?