버퍼

Buffer

개념

한 주기의 작업량을 정할 때 무엇에 쓸지 정하지 않은 채 남겨 두는 자리로, 계획에 없던 일이 들어올 몫입니다.

등장 배경

계획이 밀리는 이유를 주기가 끝난 뒤에 적어 보면 매번 다릅니다. 이번에는 결제 장애가 하루를 먹었고, 지난번에는 큰 고객의 급한 요청이 이틀을 가져갔고, 그 앞에는 보안 점검이 예고 없이 들어왔습니다. 항목별로 보면 전부 예외입니다. 그런데 주기를 열 번 겹쳐 놓고 보면 그런 예외가 없던 주기는 한 번도 없습니다.

예외가 매번 생기는데 계획은 예외가 없다는 전제로 짜였습니다. 다섯 명이 2주 동안 낼 수 있는 시간을 계산하고 그 시간을 전부 항목으로 채웁니다. 첫 장애가 나는 순간 계획은 그만큼 밀리고, 밀린 만큼을 주말이나 다음 주기가 떠안습니다.

이 문제를 개인이 각자 해결하던 시절이 있었습니다. 사흘이면 될 일을 닷새로 부르는 식으로 각자 몰래 여유를 붙여 뒀습니다. 그러면 팀 전체에 여유가 얼마나 있는지 아무도 모르게 됩니다. 계획을 보는 사람은 45인일이 전부 일로 채워져 있다고 믿고, 실제로는 그 안에 흩어진 여유가 8인일쯤 있습니다. 게다가 숨겨 둔 여유는 대체로 쓰입니다. 닷새를 받으면 사흘 만에 끝내고 남은 이틀을 돌려주는 대신 닷새를 채워 쓰게 된다는 파킨슨의 법칙이 여기서 작동합니다.

버퍼는 그 여유를 개별 항목에서 걷어 내 한자리에 모아 둔 것입니다. 숨기는 대신 드러내 놓고, 대신 그 자리에 무엇을 넣을지는 주기가 시작된 다음에 정합니다.

작동 방식

쓸 수 있는 시간을 계산한 뒤 그중 일정 비율을 항목으로 채우지 않은 채 남겨 두고, 주기 도중에 들어오는 계획 밖 작업을 그 자리에 넣습니다. 비율을 얼마로 잡을지는 지난 주기의 기록에서 꺼냅니다. 최근 다섯 주기에서 계획에 없던 작업이 실제로 가져간 시간이 평균 15퍼센트였다면 그 값이 출발점입니다. 보통 10에서 20퍼센트 사이에서 정해지고, 장애 대응이나 문의 대응을 함께 맡은 팀은 이보다 높게 잡습니다.

빼는 순서가 정해져 있습니다.

  1. 인원과 기간을 곱해 총량을 구합니다. 다섯 명이 2주를 일하면 50인일입니다.
  2. 이미 확정된 부재를 뺍니다. 잡혀 있는 휴가 3일과 면접 2일을 빼면 45인일이 남습니다.
  3. 포커스 팩터를 곱합니다. 전체 시간 가운데 계획한 작업에 실제로 쓰이는 비율이고, 정기 회의와 코드 리뷰와 질문에 답하는 시간이 여기서 걸러집니다. 0.7이면 31인일이 됩니다.
  4. 마지막으로 버퍼를 덜어 냅니다. 4인일을 남기면 항목을 채울 수 있는 자리는 27인일입니다.

순서를 바꾸면 같은 시간이 두 번 빠지거나 한 번도 안 빠집니다. 휴가를 빼기 전에 포커스 팩터를 곱하면 자리에 없는 사람의 회의 시간까지 깎는 셈이 됩니다.

버퍼는 한 덩어리로 둡니다. 사람마다 0.8인일씩 나눠 주면 각자의 일정에 흡수되어 다시 숨은 여유가 됩니다. 한자리에 모아 두면 누가 쓰고 있는지가 보이고, 절반이 첫 사흘에 사라졌다면 남은 주기를 다시 볼 신호가 됩니다.

주기가 끝날 때까지 쓰지 않았다면 버퍼는 사라집니다. 다음 주기로 이월하지 않습니다. 대신 주기 후반에 여유가 남아 있는 것이 분명해지면 밀려 있던 항목을 하나 당겨 옵니다.

쓰이는 곳

가장 흔한 자리는 스프린트 계획입니다. 이번 주기에 담을 항목을 고르는 회의에서 총량을 먼저 부르고 버퍼를 덜어 낸 값을 상한으로 씁니다. 항목을 다 고른 뒤에 남는 자리를 버퍼라고 부르는 것은 순서가 거꾸로입니다. 그렇게 하면 버퍼는 매번 0이 됩니다.

온콜 당번을 두는 팀에서는 성격이 더 분명해집니다. 당번인 사람은 언제 인시던트가 들어올지 모르는 상태로 한 주를 보냅니다. 그 사람에게 계획된 작업을 절반만 배정하고 나머지를 비워 두는 식으로, 버퍼를 사람 단위로 잡기도 합니다.

분기 단위로도 같은 방식을 씁니다. 분기에 여섯 번의 주기가 있다면 다섯 번치의 항목만 약속하고 한 번치를 비워 두는 방식입니다.

바깥에 날짜를 약속할 때도 버퍼를 얹습니다. 계산 결과가 6주라면 8주로 답하는 식입니다. 이때 붙인 2주는 팀 안에서는 버퍼로 관리하되 바깥에는 8주라고만 말합니다. 여유가 있다는 사실을 함께 알리면 그 2주는 곧 다른 요청으로 채워집니다.

실무 용례

"이번 주기는 버퍼 20퍼센트 잡고 27인일까지만 담을게요."

계산으로 나온 31인일을 다 채우지 않고 4인일을 비워 두겠다는 뜻입니다.

"버퍼를 벌써 다 썼는데 아직 일주일 남았어요."

계획 밖 작업이 예상보다 많이 들어와 남은 항목 중 무엇을 뺄지 정해야 한다는 신호입니다.

"꽉 채운 계획은 장애 한 번이면 그냥 밀려요."

여유 없이 짠 계획은 달성 여부가 운에 달려 있다는 말입니다.

페이지덱은 스프린트마다 15퍼센트를 비워 둡니다. 지현이 계획 회의에서 총량을 부를 때부터 이미 덜어 낸 숫자를 부르고, 태오가 그 자리에서 항목을 고릅니다.

지난 분기에 이 비율을 없애 본 적이 있습니다. 일정이 급해 두 주기 동안 계산된 시간을 전부 항목으로 채웠습니다. 두 주기 모두 계획의 70퍼센트대에서 끝났고, 밀린 항목이 다음 주기로 넘어가면서 그 주기도 처음부터 빚을 지고 시작했습니다. 이후로는 급할수록 비율을 줄이지 않기로 했습니다.

흔한 오해

버퍼를 여유 부리는 시간으로 읽는 경우가 가장 많습니다. 계획표에 아무 항목도 적혀 있지 않은 칸이라 놀고 있는 자리처럼 보이기 때문입니다. 하지만 비워 둔 자리는 거의 언제나 채워집니다. 채우는 것이 장애 대응이거나 급한 고객 요청이거나 옆 팀 지원이어서 계획표에 미리 적히지 않았을 뿐입니다. 이 오해로 버퍼를 걷어 내면 계획은 매 주기 70퍼센트대로 끝나고, 몇 번 반복되면 그 팀이 내놓는 일정 자체를 아무도 믿지 않게 됩니다.

버퍼가 클수록 안전하다고 보는 것도 흔합니다. 여유가 많을수록 밀릴 가능성이 줄어든다는 계산은 자연스럽습니다. 하지만 40퍼센트를 비우면 남은 60퍼센트에 담긴 항목들이 헐거워지고, 파킨슨의 법칙대로 일이 그 시간을 채우도록 늘어납니다. 여기에 벨로시티, 그러니까 한 주기에 실제로 끝낸 작업량의 평균이 함께 내려가면서 다음 주기의 계산도 낮은 값에서 출발하게 됩니다. 비율은 지난 기록이 말하는 값에서 크게 벗어나지 않게 잡고, 계속 모자라면 비율을 올리는 대신 계획 밖 작업이 왜 그렇게 많이 들어오는지를 봅니다.

같이 보면 좋은 페이지

  • 캐파시티 플래닝

    버퍼가 어느 계산의 마지막 단계인지, 앞에 무엇이 오는지 봅니다

  • 포커스 팩터

    버퍼 바로 앞에서 곱하는 값이라 둘을 붙여 읽어야 순서가 잡힙니다

마지막 업데이트 2026-09-16