누적 흐름도
Cumulative Flow Diagram
산출물
작업이 상태별로 얼마나 쌓여 있는지를 날짜마다 그려 흐름이 어디서 막히는지 찾는 그래프입니다.
등장 배경
칸반 보드를 벽에 붙여 두면 지금 어느 칸에 카드가 몇 장 있는지는 한눈에 들어옵니다. 칸반 보드는 작업 한 건을 카드 한 장으로 두고 상태별 칸에 늘어놓은 판입니다. 문제는 그 판이 오늘의 모습만 보여 준다는 데 있습니다. 저 카드가 사흘 전에도 같은 칸에 있었는지, 검수 대기 칸이 지난달에도 이만큼 붐볐는지는 보드 어디에도 남지 않습니다.
그래서 회의는 늘 체감으로 흘렀습니다. 누군가 "요즘 배포가 느려진 것 같다" 고 하면 다른 사람이 "리뷰가 밀려서 그런 것 같다" 고 받고, 세 번째 사람은 "원래 그 정도였다" 고 합니다. 셋 다 근거가 없으니 결론 없이 다음 안건으로 넘어갑니다.
누적 흐름도는 보드를 날마다 한 장씩 사진 찍어 겹쳐 쌓아 둔 것입니다. 오늘의 보드와 한 달 전의 보드를 같은 화면에 놓고 보게 만드는 도구라서, "느려진 것 같다" 는 말이 "검수 대기 칸이 3주 동안 4장에서 19장으로 늘었다" 는 문장으로 바뀝니다. 흐름을 눈에 보이게 한다는 칸반의 전제를 시간축으로 늘린 셈입니다.
구성 항목
가로축 하나, 세로축 하나, 그리고 보드의 칸 수만큼의 띠가 들어갑니다.
- 가로축은 날짜입니다. 하루에 한 점씩 찍고 보통 최근 한두 달을 담습니다.
- 세로축은 카드 개수입니다. 그날까지 그 상태에 도달한 카드를 누적으로 세기 때문에 어느 선도 아래로 내려가지 않습니다.
- 띠는 보드의 칸 하나씩에 대응합니다. 대기·개발 중·코드 리뷰·검수 대기·완료로 칸을 다섯 두었다면 띠도 다섯입니다. 맨 아래에 완료를 깔고 그 위로 거슬러 올라가며 쌓아, 맨 위 선이 지금까지 들어온 요청 전체가 됩니다.
여기까지 그리고 나면 그래프의 생김새 자체가 세 가지를 말해 줍니다.
- 띠의 두께는 그 칸에 지금 몇 장이 머물러 있는지입니다. 개발 중 띠가 3장에서 11장으로 두꺼워졌다면 들어오는 양이 나가는 양보다 많았다는 뜻이고, 그 칸이 병목입니다. 병목은 전체 속도를 혼자 결정해 버리는 가장 느린 구간을 말합니다.
- 두 선 사이의 가로 거리는 카드 한 장이 그 구간을 지나는 데 걸린 시간입니다. 맨 위 선부터 맨 아래 선까지를 재면 요청이 들어온 뒤 끝날 때까지인 리드 타임이고, 개발을 시작한 선부터 재면 사이클 타임입니다. 리드 타임이 9일인데 사이클 타임이 이틀로 나오면 이레는 줄에 서 있기만 한 시간입니다.
- 맨 아래 띠가 올라가는 기울기는 일정 기간에 끝난 카드 수, 곧 처리량입니다. 기울기가 완만해진 주는 나간 카드가 적었습니다.
건강한 모양은 띠들이 비슷한 두께를 유지하며 나란히 우상향하는 것입니다. 들어오는 만큼 빠지는 저수지와 같아서, 유입이 방류를 넘어서는 칸에서만 수위가 올라갑니다.
작성자와 독자
이 그래프를 그리는 것은 대개 사람이 아니라 이슈 트래커입니다. 카드가 칸을 옮긴 기록을 도구가 이미 갖고 있어서 메뉴에서 켜면 나옵니다. 사람이 하는 일은 셋입니다.
- 보드의 칸을 실제 흐름에 맞춥니다. 기다리는 구간이 칸으로 서 있지 않으면 그래프에도 나타나지 않습니다. 검수를 기다린 사흘이 개발 중 칸 안에 숨어 있으면 그래프는 개발이 오래 걸렸다고 말합니다.
- 보는 주기를 정합니다. 날마다 들여다보면 하루치 들쭉날쭉함에 휘둘리므로 보통 2주에 한 번 회고 자리에서 꺼냅니다.
- 무엇을 바꿨는지 그래프 위에 표시해 둡니다. WIP 제한을 다섯에서 셋으로 내린 날을 적어 두면 그 뒤로 띠가 얇아졌는지를 확인할 수 있습니다. WIP 제한은 한 칸에 동시에 올려 둘 수 있는 카드 수의 상한입니다.
읽는 쪽은 셋으로 갈립니다. 1차 독자는 팀 자신이고, 어느 칸에 손이 모자란지를 확인하는 자리에서 봅니다. 팀 리드나 프로덕트 매니저는 다음 주에 사람을 어디에 붙일지, 새 요청을 지금 받아도 되는지를 판단하는 데 씁니다. 세 번째는 팀 밖인데, 여기서는 해석을 붙여 들고 나가야 합니다. 맨 위 선이 가파르게 오르는 그래프는 설명 없이 보면 일이 잘 돌아간다는 뜻으로 읽히지만, 실은 요청만 쌓이는 중이라는 그림일 수 있습니다.
실무 용례
"흐름도 보니까 검수 대기 띠가 3주째 두꺼워지고 있어요."
검수가 병목이라는 지적입니다. 앞 칸의 상한을 낮추거나 검수에 사람을 더 붙이자는 제안으로 이어집니다.
"유입 선 기울기는 가팔라졌는데 완료 선은 그대로네요."
들어오는 요청은 늘었는데 끝나는 양은 그대로라, 대기가 쌓이고 리드 타임이 길어지는 중이라는 뜻입니다.
"이건 흐름도로 볼 게 아니라 그냥 한 장씩 따라가 보죠."
카드 수가 적어 그래프가 계단처럼 나오는 상황입니다. 주에 두세 장이 끝나는 팀에서는 띠가 부드럽게 쌓이지 않아 읽을 것이 없습니다.
페이지덱에서는 2주에 한 번 회고 첫 순서로 이 그래프를 띄웁니다. 지난달 코드 리뷰 띠가 꾸준히 두꺼워지는 것을 보고 태오가 리뷰를 혼자 도맡고 있었다는 사실이 드러난 적이 있습니다. 개발 속도는 그대로였는데 리드 타임이 6일에서 11일로 늘어 있었고, 늘어난 5일은 전부 리뷰를 기다린 시간이었습니다.
그 자리에서 팀은 리뷰어를 둘로 늘리고 개발 중 칸의 상한을 하나 내렸습니다. 3주 뒤 코드 리뷰 띠가 다시 얇아지자 지현은 바꾼 날짜를 그래프 위에 적어 두었습니다.
흔한 오해
가장 흔한 오해는 선이 내려가야 좋은 그래프라고 읽는 것입니다. 번다운 차트를 먼저 본 사람일수록 그렇게 읽기 쉽습니다. 그쪽은 남은 일이 0으로 줄어드는 모습을 그리니까요. 하지만 누적 흐름도의 모든 선은 누적값이라 정의상 내려갈 수 없습니다. 여기서 볼 것은 높이가 아니라 띠의 두께와 선 사이의 거리입니다. 내려가지 않는다고 나쁜 신호로 읽으면 멀쩡한 그래프를 놓고 팀이 뒤처졌다는 결론을 내리게 됩니다.
띠가 두꺼울수록 일을 많이 하는 중이라고 읽는 것도 마찬가지입니다. 카드가 많이 올라가 있으면 바빠 보이니 자연스러운 오해입니다. 실제로는 동시에 붙들고 있는 일이 많다는 뜻이고, 동시에 붙든 일이 많을수록 한 장이 끝나기까지 걸리는 시간은 길어집니다. 이 상태를 성과로 읽으면 팀은 카드를 더 열어 두는 쪽으로 움직이고, 반년 뒤에는 시작한 일은 스무 건인데 끝난 일은 세 건인 상태가 됩니다.
자주 헷갈리는 용어
같이 보면 좋은 페이지
마지막 업데이트 2026-09-16