개요
이번에 프로젝트를 진행하면서 스크럼을 위한 도구로 Jira를 도입하기로 결정했습니다.
그동안 대부분의 프로젝트에서 스크럼을 도입했지만 별도의 도구를 사용해 본 적은 처음입니다.
github의 issue와 project 기능만으로도 스크럼에 큰 불편함을 느끼진 않았지만 은근히 번거로운 초기 세팅 때문에 Jira를 사용하기로 했습니다.
애자일 방법론
애자일 방법론은 프로젝트 관ㄹ에 유연하고 반복적인 접근 방식을 사용하는 방법론입니다.
목표 달성을 위해 작은 단위의 작업으로 나누어 여러 단계로 진행되기 때문에 변화하는 환경에 유연하게 대처할 수 있다는 장점을 가지고 있습니다.
애자일 방법론은 다음과 같이 다양한 프레임워크가 존재합니다.
- 스크럼
- 칸반
- XP
스크럼이란?
스크럼은 애자일 방법론의 다양한 프레임워크들 중 가장 자주 사용되는 프레임워크로 반복적이고 점진적인 개발 방법입니다.
간혹 애자일 방법론과 스크럼을 동일하게 생각하는 경우가 있는데 스크럼은 여러 애자일 방법론 프레임워크들 중 가장 유명한 프레임워크라는 것을 인지해야 합니다.
1주에서 4주 정도의 짧은 기간을 가진 스프린트를 여러 번 반복하며 프로젝트를 진행합니다.

에픽(epic), 스토리(story), 태스크(task)
스크럼의 구성 요소에는 에픽(epic), 스토리(story), 태스크(task)가 존재합니다.
프로젝트 목표를 여러 개의 에픽으로 나누고 각 에픽을 여러 개의 스토리로 나누고 각 스토리를 여러 개의 태스크로 나눈 뒤 스크럼을 진행합니다.
그러면 지금부터 "사용자가 자유롭게 글을 작성하고 소통할 수 있는 커뮤니티 서비스 개발" 개발이라는 목표를 가지고 에픽, 스토리, 태스크를 작성해보겠습니다.
에픽(epic)
에픽은 대략적인 기능 설명이 존재하고 상세한 기능 설명은 존재하지 않습니다.
보통 에픽은 작업량이 커서 여러 번의 스프린트를 통해 완료되는 개념입니다.
우리 프로젝트의 목표를 에픽으로 나누어 보겠습니다.
- 게시판 기능 개발
- 댓글 기능 개발
스토리(story)
스토리는 유저 관점에서 작성된 간단한 요구 사항입니다.
유저 입장에서 작성하기 때문에 누구나 쉽게 알아볼 수 있도록 일상 언어 위주로 작성합니다.
위에서 작성한 에픽에 대한 스토리를 작성해보겠습니다.
- epic 1 : 게시판 기능 개발
- Story 1: 사용자는 게시글을 작성할 수 있어야 한다.
- Story 2: 사용자는 게시글 목록을 볼 수 있어야 한다.
- Story 3: 사용자는 게시글 상세 내용을 볼 수 있어야 한다.
- epic 2 : 댓글 기능 개발
- Story 1: 사용자는 게시글에 댓글을 작성할 수 있어야 한다.
- Story 2: 사용자는 댓글을 삭제할 수 있어야 한다.
- Story 3: 사용자는 댓글 목록을 볼 수 있어야 한다.
태스크(task)
태스크는 스토리를 위해 필요한 구체적인 기능들을 작성합니다.
위에서 작성한 에픽과 스토리를 기반으로 태스크를 작성해보겠습니다.
- epic 1 : 게시판 기능 개발
- Story 1: 사용자는 게시글을 작성할 수 있어야 한다.
- task 1 : 게시글 작성 API 개발 (POST /posts)
- task 2 : 게시글 DB 테이블 설계 (제목, 내용, 작성자, 작성일 등)
- task 3 : 작성 화면 UI 설계 (입력 폼, 저장 버튼 등)
- Story 2: 사용자는 게시글 목록을 볼 수 있어야 한다.
- task 1 : 게시글 목록 조회 API 개발 (GET /posts)
- task 2 : 게시글 목록 DB 쿼리 작성 (최신순 정렬 등)
- task 3 : 게시글 리스트 UI 구성 (제목, 작성자, 날짜 표시)
- Story 3: 사용자는 게시글 상세 내용을 볼 수 있어야 한다.
- task 1 : 게시글 상세 조회 API 개발 (GET /posts/:id)
- task 2 : 게시글 클릭 시 상세 페이지로 이동
- task 3 : 상세 화면 UI 구성 (내용, 작성자, 날짜, 댓글 영역 등)
- Story 1: 사용자는 게시글을 작성할 수 있어야 한다.
- epic 2 : 댓글 기능 개발
- Story 1: 사용자는 게시글에 댓글을 작성할 수 있어야 한다.
- task 1 : 댓글 작성 API 개발 (POST /comments)
- task 2 : 댓글 DB 스키마 설계 (게시글 ID, 작성자 ID, 내용, 작성 시간)
- task 3 : 프론트엔드 댓글 입력 폼 구현
- Story 2: 사용자는 댓글을 삭제할 수 있어야 한다.
- task 1 : 댓글 삭제 API 개발 (DELETE /comments/:id)
- task 2 : 삭제 권한 검증 (본인만 삭제 가능)
- task 3 : 프론트엔드 삭제 버튼 UI 구현
- Story 3: 사용자는 댓글 목록을 볼 수 있어야 한다.
- task 1 : 댓글 조회 API 개발 (GET /posts/:postId/comments)
- task 2 : 프론트엔드 댓글 UI 렌더링 구현
- task 3 : 시간순 정렬 및 댓글 수 표시 기능
- Story 1: 사용자는 게시글에 댓글을 작성할 수 있어야 한다.
제품 백로그 (Product Backlog)
제품 백로그는 프로젝트를 완료하기 위해 해야하는 요구 사항, 개선 사항과 같은 작업의 목록입니다.
새로운 정보가 제공될 때마다 백로그의 작업 목록들이 변경되거나 우선 순위가 변경될 수 있습니다.
위에서 스토리를 기반으로 태스크들을 정의했는데 이 태스크 목록이 제품 백로그라고 할 수 있습니다.
스프린트 백로그 (Sprint Backlog)
스프린트 백로그는 현재 스프린트 주기에서 완료해야 하는 작업의 목록입니다.
스프린트를 시작할 때 제품 백로그에 작성해 둔 작업들을 선택합니다.
제품 증분 (Potentially Shippable Product Increment)
스프린트를 하면서 백로그 작업을 완료하여 생성된 결과물입니다.
이러한 제품 증분은 버전 추적 및 롤백에 유용하게 사용됩니다.
예를 들어 백로그 항목마다 브랜치를 만들어 작업한 경우 유용하게 사용할 수 있습니다.
Jira 사용법
Jira는 Atlassian에서 개발한 이슈 및 프로젝트 추적 소프트웨어입니다.
주로 애자일 방법론을 적용했을 때 자주 사용되는 소프트웨어입니다.
그렇다면 이제 위에서 작업한 내용들을 Jira로 옮겨보는 작업을 진행해보겠습니다.
Jira에는 다양한 템플릿이 존재하는데 그 중 스크럼을 선택해서 프로젝트를 생성하면 됩니다.

처음 접속했을 때 굉장히 많은 기능들이 있는 것을 확인할 수 있습니다.

탭에 너무 많은 기능들이 있어서 Jira를 처음 사용했을 때 오히려 복잡해지는 경향이 있는 것 같습니다.
프로젝트 설정 -> 기능에 들어가면 원하는 기능만 남기고 탭에 있는 항목들을 제거해보겠습니다.

저는 타임라인, 백로그, 이슈 탐색기, 스프린트, 프로젝트 페이지 기능을 활성화했습니다.
이제 본격적으로 제품 백로그 작성을 시작해봅시다.
제품 백로그는 백로그 탭에서도 작성할 수 있지만 타임라인에서 작성하는 것을 추천드립니다.
타임라인에서 작성하면 에픽을 작성한 뒤 백로그를 작성할 수 있고 일정 관리도 함께 할 수 있기 때문에 편리합니다.

에픽부터 만들어봅시다.

에픽 하위 요소에 작성할 수 있는 항목에는 작업, 스토리, 버그 항목이 기본 값으로 설정되어 있고 이 항목들은 자유롭게 변경할 수 있습니다.
에픽 하위 요소에 태스크를 바로 작성해도 되지만 스토리를 작성한 뒤 스토리의 하위 요소로 태스크를 작성해보겠습니다.

Jira는 기본 값으로 태스크와 스토리가 동등한 타입인 항목에 존재합니다.
하지만 우리가 작성한 백로그에는 스토리가 태스크의 상위 항목이기 때문에 스토리를 작성하고 스토리의 하위 항목으로 태스크를 작성하겠습니다.
하위 항목의 경우 에픽과 스토리와 다르게 타임라인에서 바로 작성할 수는 없고 항목에 직접들어가서 하위 업무 항목을 생성해야 합니다.

태스크 또한 스토리의 하위 항목으로 작성해보겠습니다.

하위 항목의 경우 타임라인에서 바로 확인하지 못 하고 상위 항목으로 들어와 확인할 수 있습니다.
이렇게 작성을 한 뒤 타임라인에서 각 항목마다 일정을 추가할 수 있습니다.

이렇게 제품 백로그 작성과 전체적인 일정 계획까지 마무리 된다면 스프린트를 시작하면 됩니다.
이제 타임라인 탭에서 백로그 탭으로 와서 전체 백로그 항목을 살펴봅시다.

이제 백로그들 중 이번 스프린트에 작업할 항목들을 추가해보겠습니다.

이 상태로 스프린트 시작을 누르면 스프린트 시작 날짜와 종료 날짜를 설정하고 스프린트를 시작할 수 있습니다.

이제 보드 탭에서 칸반 보드 형태로 일정들을 관리할 수 있습니다.

스프린트가 완료되었다면 스프린트 완료 버튼을 통해 스프린트를 완료할 수 있습니다.
참고로 항목의 경우 모두 완료하지 않아도 되지만 하위 항목의 경우 모두 완료해야 스프린트를 종료할 수 있습니다.
이렇게 완료한 항목의 경우 타임라인, 백로그, 보드에서 확인할 수 없습니다.
만약 완료한 항목을 보고 싶다면 항목에 모든 업무를 추가하면 됩니다.

모든 업무 탭에서는 완료하지 않은 항목과 완료한 항목 모두 확인할 수 있습니다.

또한 상당히 유용한 기능으로 페이지 기능을 활용할 수 있습니다.
페이지 기능의 경우 문서화를 할 때 유용하게 사용할 수 있으며 confluence를 연결해야 사용할 수 있습니다.
페이지 탭에 들어가서 confluence와 연동할 수 있습니다.

confluence의 경우 편집 페이지에 들어가서 여러 명과 함께 편집할 수 있으며 편집을 마치고 업데이트 버튼을 누르게 되면 자동으로 버전 관리를 해줍니다.
스프린트를 마치고 나면 confluence 기능을 활용하여 회고를 작성하는 것을 추천드립니다.
마무리
이렇게 스크럼에 대한 개념과 Jira의 기초 사용법에 대해 알아보았습니다.
Jira의 경우 스크럼 템플릿이 존재하기 때문에 기존 틀을 따라가면 된다는 점에서 강점을 가지는 것 같습니다.
개인적인 생각으로는 가벼운 프로젝트는 github의 issue와 project 기능을 활용하여 작성하는 것이 좋을 것 같고 보안이 중요한 대규모 프로젝트에는 Jira를 활용하는 것이 좋을 것 같습니다.