JIRA에서 사용되는 상태(Status)값과 워크플로(Workflow)를 알아봅시다

Updated:

일감의 진행상황이 일목요연하게 보여지는 Jira

이전 포스팅에서 논의했듯 Jira라는 Tool은 Agile 프로젝트에 참여하는 모든 구성원에게 각 이슈들의 진행상태를 투명하고 명확하게 보여줌으로써 스프린트가 제대로 진행되고 있는지 점검할 수 있도록 도와줍니다. 일감, 즉 이슈들이 하나의 카드처럼 표현되고 Jira 프로젝트 내 ‘스크럼 보드(Scrum Board)’를 통해 일목요연하게 보여지기 때문입니다. 아래 이미지는 우리가 이번과 다음 포스팅을 통해 함께 만들어 보고자 하는 워크플로(Workflow)의 모습입니다. 아래 이미지에서 보듯 우리는 간략한 ‘스크럼 보드’를 통해 어떤 이슈들이 어떤 상태에 있는지 한 눈에 볼 수 있습니다.

예를 들어 예정된 스프린트 기간이 다 되어 가는데 열림 상태에 많은 이슈들이 몰려 있다면 당연히 지연의 원인을 파악하고 그 원인을 해소할 방법을 찾아봐야 겠죠? 이렇게 우리는 위의 ‘보드’에 나타난 이슈들의 진행상태 즉, 워크플로(Workflow)를 통해 프로젝트 진행 상황에 따른 적절한 처방과 대처방안을 고려할 수 있습니다.

우선 이번 포스팅에서는 이슈들의 진행’상태(Status)’에는 어떠한 것들이 있는지 또 그것들이 의미하는 바는 무엇인지 알아보고, 그 ‘상태’들의 흐름이라고 불리는 워크플로(Workflow)를 구성하는 방법을 알아보겠습니다. 그리고 연이은 다음 포스팅에서는 우리가 만든 워크플로를 어떻게 실제 프로젝트에 적용하고 활용하는지 알아보겠습니다.

Jira 일감의 진행 상태(Status)에 대해 알아보자.

Jira는 이슈의 ‘상태(Status)’를 통해 진행상황을 전체 구성원에게 공유합니다. 그리고 ‘상태(Status)’값은 다음과 같이 정의할 수 있습니다.

  • 열기(Open): 스프린트 내 이슈를 인지한 단계를 의미합니다. 해당 상태에서 SM과 PO는 협의를 거쳐 진행할 필요가 없는 이슈는 취소(Cancel) 상태로 변경합니다.
  • 할 일(To-do): 실제로 수행해야할 이슈로 인지한 단계를 의미합니다. 이슈(보통은 스토리 형태이나 작업일수도 있음)를 진행하기 위한 실질적인 준비상태입니다.
  • 진행중(In Progress): 수행해야할 이슈들이 실제로 개발 단계에 들어섰음을 의미합니다. 개발과 단위테스트를 진행하게되며 물리적으로 가장 오랜 시간을 차지합니다.
  • 해결됨(Resolved): 진행 중 상태였던 이슈를 개발자(디자이너)가 1차 완료했음을 의미합니다. 해당 단계에서 SM이 2차 단위테스트(확인)을 진행하고 수행이 마무리됐다고 판단하면 PO, SM, 개발자가 함께 참여해 이슈의 완료 상태를 점검하는 ‘리뷰’를 진행합니다. ‘리뷰’는 PO, SM, 개발자가 일정을 협의해 일정 장소에 모여 이슈 상태를 확인합니다.
  • 완료됨(Done): 해결된 이슈를 ‘리뷰’를 통해 완벽하게 마무리됐음을 확인했됐음을 의미합니다. 개발팀 전체의 합의에 의해 부여되는 상태이므로 ‘리뷰’ 세션에서 PO, SM, 개발자가 함께하는 가운데 이슈 상태를 완료로 넘기는 것을 추천합니다.
  • 닫힘(Closed): 완료된 이슈나 취소된 이슈를 완전히 종결된 상태로 전환했음을 의미합니다. 불필요하다고 생각될 경우 프로젝트 구성원들의 협의에 의해 프로젝트에서 사용하는 상태 값에서 제외할 수 있습니다.
  • 다시열기(Reopened): 취소했던 이슈가 재검토를 통해 필요하다고 판단될 경우 다시 할 일 단계로 되돌리는 것을 의미합니다. 협의는 보통 SM과 PO가 하게됩니다.
  • 빌드(Build): 완료된 이슈를 통해 개발된 물량(화면, 소스 등)을 배포 완료했음을 의미합니다. 마찬가지로 협의에 의해 제외하고 별도의 시스템(Jenkins 등)을 통해 관리하는 것도 가능합니다.
  • 빌드 실패(Build Failure): 말그대로 빌드가 실패했을 의미합니다.
  • 취소(Cancel): 특정 상태(열기 등)에서 이슈가 수행할 필요가 없다고 판단된 경우를 의미합니다. 보통 SM과 PO가 협의를 거쳐 취소 여부를 결정합니다.

여기까지 Jira 에서 사용하는 ‘상태(Status)’값의 종류와 의미를 살펴봤습니다. 위 ‘상태(Status)’은 아래에 설명할 워크플로에 따라 흘러가면서 이슈의 현재 진행상황을 보여주게 됩니다.

워크플로 생성하기

위와 같이 상태에 대해 정의해 본 세션에 이어 지금부터는 워크플로 설정방법을 알아보도록 하겠습니다. 워크플로는 위에 잠깐 소개했듯 ‘일감이 흘러가는 과정’을 말합니다. 프로젝트 내 전 구성원은 이 워크플로를 공유함으로써 누가 맡은 일감이 얼마나 진행됐는지 명료하게 알 수 있습니다.

01 프로젝트 생성 및 워크플로 생성메뉴 진입하기

  • 그럼 본격적으로 워크플로를 만들어 볼까요. 먼저 우리가 만들 워크플로를 사용할 새로운 프로젝트를 만듭니다.
  • 새로 만들어진 프로젝트의 첫화면은 할 일, 진행중, 완료, 이렇게 3개의 상태(Status)만 ‘보드’에 보여집니다. 이렇게 3개의 열을 나중에는 6개로 늘리도록 하겠습니다. 참고로 상태값은 총 7개까지 늘릴 예정입니다만, ‘보드’에 보이는 열은 6개입니다. 이는 첫 열에 2개의 상태값을 매핑하면서 발생하는 현상이니 혼동하지 않으시기 바랍니다. 자세한 설명은 다음 포스팅에서 다루도록 하겠습니다.
  • 자, 본격적으로 워크플로를 만들어 보죠. 먼저 왼쪽 하단의 톱니바퀴 모양 아이콘을 클릭하여 설정에 진입합니다. 여기서 [이슈] 버튼을 클릭합니다. 진입한 화면에서 다시 [워크플로] 버튼을 클릭해 진입합니다.

주의: 여기서 중요한 사항은 우리가 프로젝트를 만들고 그 화면에서 이슈 설정 메뉴로 진입했다는 점입니다. 이는 새로 만들어진 프로젝트를 우리가 앞으로 만들 워크플로에 연결하지 않아도 자동 연결되도록 하는 장점이 있습니다. 만약 워크플로를 먼저 만들고 프로젝트를 나중에 생성하면 직접 프로젝트에 워크플로를 연결해야하는 번거로움이 있으니 꼭 참고해주세요.

02 워크플로 생성하기

  • 이제 워크플로 설정 메뉴에 들어왔습니다. 먼저 ‘활성’화 되어 있는 기존의 워크플로가 보이네요. 아래에는 ‘비활성’화 된 임시 워크플로가 보입니다.
  • 이제 화면 상단 오른편의 [워크플로 추가] 버튼을 클릭해 봅시다. 팝업 화면에 우리가 만들 워크플로 이름과 설명을 간단하게 적습니다. 저는 Making Workflow라고 이름을 정해봤습니다. 그리고 아래 [추가]버튼을 누릅니다.
  • 그럼 원시상태(?)의 새로운 워크플로 ‘그림판’이 나타납니다. 처음엔 태초(?!)를 의미하는 회색 동그라미와 상태값은 OPEN(열기) 하나만 보이네요. 여기에 우리가 필요로 하는 상태(Status)값들을 추가할겁니다.
  • 아, 그 전에 참고로 말씀드리자면 각 상태값은 자유자재로 Drag 해서 옮길 수 있습니다. 아래 이미지처럼 말이죠.

03 Workflow에 상태(Status)값 추가하기

  • 이제 다른 상태(Status) 값을 추가해 봅시다. 아래 이미지처럼 ‘그림판(다이어그램)’ 상단 왼편에 있는 [상태추가] 버튼을 누릅니다. 그리고 나온 팝업 메뉴 셀렉트박스에서 ‘TO DO(할 일)’ 을 선택해 추가합니다.
  • 자, 이제 TO DO(할일) 상태가 생성됐습니다. 마찬가지 방식으로 In Progress(진행중) 상태값도 추가해줍니다.
  • IN PROGRESS 상태값을 확인했으면 Resolved(해결됨), Done(완료), Closed(닫힘), Reopened(다시열기) 상태값도 추가해 줍니다.
  • 자, 이렇게 보니 총 7개의 상태값이 만들어 졌습니다. 이 상태값 그림을 기반으로 하여 전환(Transfer) 즉, 상태값의 변화방향과 순서를 정해보도록 하겠습니다.

04 Workflow에 전환(Transfer) 설정하기

  • 전환(Transfer에 대해 간단한 예를 들어 설명드리자면, 좀 전 가장 처음의 워크플로 이미지에서 보았듯 태초(?!)의 회색 동그라미에서 OPEN(열림) 상태로 이어진 화살표, Create라고 이름지어진 화살표가 바로 전환(Tranfer) 입니다. 즉, 이슈를 식별하여 Jira에 백로그로 등록하는 행위를 말하는 것으로 일감을 식별한 상태(태초의 회색 동그라미)에서 일감을 등록(OPEN 상태)하는 행위를 도식화하여 나타낸 것이라고 생각하시면 됩니다.

  • 그렇다면 아래 이미지의 OPEN 상태에서 TO DO 상태로 옮겨가는 화살표가 의미하는 바는 무엇일까요? 바로 OPEN 된 이슈를 해야하는 일인지 하지 않아도 될 일인지 SM과 PO 간의 협의를 통해 판단한 결과, 해야할 일이라고 결정된 경우이지요.

  • 자 그럼 이런 이해를 바탕으로 TO DO 이후에 이어지는 상태값들로 넘어가는 ‘전환(Tranfer)’ 들을 추가해 봅시다.

  • 우선 그림판(다이어그램) 상단 왼편에 사각형으로 표시되어 있는 [전환추가]버튼을 클릭합니다.

  • 그러면 아래와 같은 팝업화면이 나옵니다. 여기에서 ‘이 상태에서’ 셀렉트 박스에서는 Open을, ‘상태로’ 셀렉트 박스에서는 To Do를 각각 선택해 줍니다. 이는 바로 [OPEN] –> [TO DO] 라는 다이어그램을 의미합니다. 그리고 팝업화면의 ‘이름’ 란에 ‘일감 인지’라고 적어줍니다. (물론 다른 이름을 정하셔도 상관없습니다.) 간단한 설명을 적어주고 화면은 ‘없음’으로 선택한 후 [추가] 버튼을 클릭합니다.
  • 자, 이제 [일감 인지]라는 화살표가 추가된 것을 볼 수 있습니다.
  • 위와 마찬가지로 [To do] –> [In Progress], [In Progress] –> [Resolved], [Resolved] –> [Done], [Done] –> [Closed] 를 추가해 줍니다. 이슈의 진행 상태에 따른 전환을 각각 추가해주는 거죠.

05 Workflow에 ‘역’전환(reverse Transfer) 설정하기

  • 이를 기본 진행 순서로 설정해 놓은 바탕에 약간의 예외 상황들을 추가해 줍니다. 바로 해결상태에서 완료 판정을 받지 못해 다시열리는 경우를 의미하는 [Resolved] –> [Reopened] 전환과 다시 작업해야 하는 이슈가 진행 중 상태로 이행됐음을 의미하는 [다시열림] –> [In Progress] 전환의 추가입니다.
  • 여기까지 추가하면 아래 이미지와 같은 나옵니다.

06 불필요한 이슈를 위한 ‘건너뛰기’ 전환(jump Transfer) 설정하기

  • 여기에서 처음 OPEN 상태에서 진행 필요가 없는 이슈를 곧바로 닫힘 상태로 넘기는 전환([OPEN] –> [Closed])을 마지막으로 추가해 주면 우리가 만들고자 하는 워크플로가 완성됩니다.
  • 설명란에는 왜 이런 전환이 필요한지 간략하게 적어줍니다.

07 만들어진 Workflow를 글로 보기

  • 지금까지 ‘그림판(다이어그램)’을 통해 작성한 상태값과 전환들은 그림판 화면 상단 왼편에 있는 [글] 버튼을 클릭해 텍스트로도 볼 수 있습니다.
  • 그리고 이렇게 새로이 만들어진 워크플로는 아직 연결된 구성표가 없기 때문에 [비활성]된 워크플로에 소속되게 됩니다. 한마디로 아직 죽어 있는 워크플로란 의미입니다.

새로 만든 Workflow 게시하기

이제 비활성화 상태인 우리 워크플로에 생명을 불어 넣어 줍시다(게시하기). 화면 왼편 메뉴에서 [워크플로 스키마]버튼을 클릭합니다. 그러면 아래 그림과 같이 워크플로(WORKFLOW: Software Simplified Workflow Scheme)가 보입니다. 이 워크플로에 우리가 만들어 놓은 프로젝트(‘워크플로 만들기’)가 연결되어 있지만, 그 옆에 워크플로 부분에는 Atlassian사에서 설정해 놓은 기본 워크플로인 Software Simplified Workflow for Project WORKFLOW가 강제할당되어 있네요.

01 Workflow 구성표 추가하기

  • 여기에서 화면 상단 우측편에 있는 [워크플로 구성표 추가] 버튼을 클릭합니다.
  • 그럼 아래와 같은 화면이 나오는데 여기서 [워크플로 추가] > [기존추가] 버튼을 차례로 클릭합니다.
  • 새로운 팝업화면이 뜨는 게 보이시죠? 여기서 우리가 만들어 놓은 워크플로 ‘Making Workflow’ 를 클릭해 아래편에 있는 [다음]버튼을 클릭합니다.
  • 그러면 우리가 만든 워크플로에 따를 이슈들의 유형을 선택하는 팝업화면이 하나 더 나옵니다. 바로 이슈 유형 할당 화면인데요, (설명을 단순화하기 위해) 모든 이슈 유형을 할당해 줍니다. 여기서 빼놓는 경우는 다른 워크플로를 할당하거나 기본값으로 설정된 워크플로가 자동 할당되니 참고해 주세요.
  • 이슈유형을 할당하면 아래 이미지와 같이 우리가 만든 워크플로에 에픽, 스토리, 작업, 하위작업, 버그, 모든 할당되지 않은 이슈 유형이 모두 잘 매핑되어 있는 걸 확인할 수 있습니다. 이로써 우리 프로젝트 내에서는 모든 이슈 유형들이 우리 워크플로를 따르도록 설정했습니다.

02 Workflow 게시(Release)

  • 하지만 아직은 워크플로 작성을 마무리한 것은 아닙니다. 바로 이제 우리가 만들고 이슈 유형들이 따르도록 설정해 놓은 워크플로를 ‘게시(Release)’ 해야 합니다. 화면 상단에 있는 [게시] 버튼을 누르면 이 작업을 완료할 수 있습니다.
  • 워크플로 게시 화면으로 들어 왔습니다. 이제 [연계] 버튼을 클릭해 줍니다.
  • 참고로 이 게시 작업은 우리처럼 이슈가 등록되지 않은 빈 프로젝트 상태에도 중요하지만 이미 만들어 놓은 백로그가 있거나 스프린트가 진행 중인 프로젝트에도 적용하기 위해 반드시 필요한 작업입니다. 이 점은 꼭 기억하셔서 향후 워크플로를 수정하실 때 혼란을 겪지 않으시면 좋겠네요.
  • 자, 다시 워크플로 스키마 메뉴로 돌아오니 우리가 만든 워크플로가 Atlassian 에서 기본으로 제공한 워크플로를 잘 대체하고 있음을 확인할 수 있네요.

지금까지 워크플로를 만들고 워크플로 스키마에도 적용하는 방법을 익혀 봤습니다. 이제는 우리 프로젝트에서 만들어진 워크플로가 잘 작동할 수 있도록 프로젝트 내 스크럼 보드에 적용하러 가 보겠습니다.

To be continued.. https://engineering-skcc.github.io/devops-tools/jirascrumboard/

출처: Atlassian 홈페이지