하루의 기록을 준비하고 있어요

잠시만 기다려 주세요.

목록으로

오픈 뒤에 남는 일, 썰물 뒤의 유지보수를 생각한다

하루스페이스의 오픈을 상상하며, 사람이 빠져나간 뒤 남은 이들의 부담과 대국민 서비스 유지보수, 인수인계의 한계를 어떻게 줄일지 생각해봤습니다.

새벽빛이 들어오는 빈 운영실에서 한 개발자가 추상적인 상태 화면과 인수인계 자료를 바라보는 뒷모습

Summary

한눈에 보기

  • 서비스 오픈은 끝이 아니라 적은 인원이 더 긴 책임을 맡기 시작하는 시점이라고 느낍니다.
  • 빠른 대응은 개인의 희생보다 관찰 가능한 상태, 판단 기준, 되돌릴 수 있는 변경과 평소의 연습에서 나온다고 생각합니다.
  • 인수인계 문서 한 번으로 맥락을 옮길 수 없기에 결정과 실패, 복구 과정을 일상적으로 남기는 구조가 필요합니다.

하루스페이스를 처음 만들기 시작했을 때는 아무래도 오픈하는 장면을 많이 떠올렸다. 기능이 제대로 움직이고, 화면이 내가 생각한 모습에 가까워지고, 누군가 실제로 들어와 써보는 순간 말이다.

그런데 조금씩 형태가 잡힐수록 오픈보다 그다음이 더 자주 생각났다. 만드는 일도 어렵지만, 만들어놓은 것을 계속 책임지는 일은 전혀 다른 종류의 어려움이기 때문이다.

나는 여러 역할에서 서비스 오픈 전후를 보며 비슷한 장면을 자주 만났다. 오픈 전에는 많은 사람이 한곳을 바라본다. 일정이 있고, 해결해야 할 목록이 있고, 끝냈을 때 함께 기뻐할 이유도 있다. 하지만 오픈이 지나가면 분위기가 달라진다. 프로젝트를 위해 모였던 사람은 다음 일로 이동하고, 외부 인력은 계약을 마치고, 의사결정을 했던 사람도 다른 책임을 맡는다.

한바탕 밀려들었던 물이 빠져나간 썰물 뒤처럼, 남은 자리에는 운영할 시스템과 미처 정리하지 못한 질문이 드러난다. 그리고 그 앞에는 몇 사람이 남는다.

오픈 뒤에 남은 사람의 마음

누군가 떠나는 일을 나쁘게 보고 싶지는 않다. 프로젝트는 원래 여러 사람의 시간을 잠시 모았다가 다시 흩어지기도 한다. 문제는 사람과 함께 맥락까지 빠져나갈 때 생긴다.

왜 이 기능이 이런 모양이 되었는지, 어느 선택지를 검토하다 포기했는지, 이상해 보이는 코드가 사실 어떤 제약을 버티기 위해 남아 있는지 아는 사람이 하나둘 사라진다. 문서는 있어도 결정 당시의 고민까지 적혀 있지 않은 경우가 많다.

그러면 남은 사람은 시스템만 넘겨받는 것이 아니다. 설명되지 않은 선택과 앞으로 벌어질 일에 대한 걱정까지 함께 받는다. 장애가 나면 누가 가장 먼저 연락을 받을지, 급한 수정이 다른 곳을 건드리지는 않을지, 지금 손대도 되는 부분과 기다려야 하는 부분은 어디인지 계속 머릿속에 올려두게 된다.

그 마음은 때때로 짐처럼 느껴진다. 잘 지켜야 한다는 책임감과 왜 이것까지 내가 알아야 하는가 하는 답답함이 같이 온다. 특히 적은 인원이 남았을 때는 개인의 성실함으로 버티는 일이 너무 쉽게 당연해진다.

나는 하루스페이스를 만들면서 이 장면을 가능하면 반복하고 싶지 않다. 지금은 작은 서비스지만, 작다는 이유로 운영의 부담을 나중으로 밀어두면 규모가 커졌을 때 갑자기 좋은 습관이 생기지는 않을 것 같다.

앞으로 벌어질 일은 늘 계획보다 다채롭다

서비스가 공개되면 개발할 때는 보지 못했던 일이 생긴다. 사용자는 내가 예상한 순서대로 움직이지 않고, 기기와 브라우저의 조합은 생각보다 다양하며, 외부에서 기대고 있는 서비스의 상태도 내 계획대로 움직여주지 않는다.

별것 아닌 문구 수정이 예상하지 못한 화면을 밀어낼 수도 있고, 평소에는 조용하던 기능이 특정 조건에서만 갑자기 느려질 수도 있다. 한 문제를 빨리 막으려다 다른 불편을 만들 수도 있다. 내가 말하는 앞으로의 스펙터클한 업무는 거창한 사건만을 뜻하지 않는다. 사소한 변수들이 같은 날 한꺼번에 찾아오는 평범한 운영의 날도 충분히 스펙터클하다.

이용자가 많은 대국민 서비스라면 그 무게는 더 커진다. 담당자에게는 잠깐의 지연이나 한 화면의 오류일 수 있지만, 누군가에게는 꼭 처리해야 하는 신청과 확인, 일상의 중요한 절차가 멈춘 일이 된다. 영향 범위가 넓을수록 작은 판단도 조심스러워지고, 그렇다고 판단을 오래 미룰 수도 없다.

빠르게 움직여야 하지만 함부로 움직여서는 안 된다는 모순이 유지보수를 어렵게 만든다.

빠른 대응은 빨리 뛰는 한 사람에게서 나오지 않는다

문제가 생겼을 때 가장 경험 많은 사람이 모든 것을 알고 달려와 해결하는 모습은 든든해 보인다. 하지만 그 한 사람이 자리에 없으면 대응 속도가 바로 떨어지는 구조라면, 그것은 빠른 체계라기보다 한 사람의 희생에 기대는 체계에 가깝다.

내가 생각하는 빠른 대응은 평소에 몇 가지 질문에 답할 수 있는 상태에서 시작한다.

  • 지금 서비스가 평소와 다른지 알아차릴 수 있는가
  • 어떤 문제부터 먼저 다뤄야 하는지 판단 기준이 있는가
  • 변경의 영향을 작게 나누고 필요하면 되돌릴 수 있는가
  • 누가 판단하고 누가 상황을 공유할지 혼란 없이 알 수 있는가
  • 해결 뒤에 원인과 선택을 다음 사람도 찾을 수 있게 남기는가

이것은 특정한 도구 하나를 도입한다고 완성되지 않는다. 관찰할 수 있는 상태, 작은 배포, 되돌릴 수 있는 선택, 짧고 정확한 상황 공유, 평소의 점검이 함께 있어야 한다.

무엇보다 실제 문제가 생긴 날 처음 해보는 절차가 너무 많지 않아야 한다. 자주 쓰지 않는 대응 방법이라도 가끔 확인하고, 담당자가 바뀌어도 같은 흐름을 따라갈 수 있는지 살펴봐야 한다. 빠른 대처는 순발력만이 아니라 평소에 줄여둔 망설임의 결과라고 생각한다.

물론 하루스페이스의 구체적인 운영 방식이나 보호에 필요한 내용까지 공개 기록으로 옮길 수는 없다. 다만 개인 정보 없이 상태를 이해할 수 있게 만들고, 변화의 범위를 작게 유지하고, 문제가 생겼을 때 안전하게 멈추거나 돌아갈 수 있어야 한다는 원칙은 처음부터 놓치지 않으려 한다.

인수인계 문서는 필요하지만 충분하지 않다

인수인계를 준비할 때 가장 먼저 떠올리는 것은 문서다. 문서는 반드시 필요하다. 문제는 문서 한 묶음으로 사람이 몇 달이나 몇 년 동안 쌓은 판단을 모두 옮길 수 있다고 기대하는 데 있다.

인수인계 문서는 작성한 날의 시스템을 찍은 사진에 가깝다. 서비스는 그다음 날에도 바뀌고, 문서에 적을 때는 당연하다고 생각했던 전제가 나중에는 가장 찾기 어려운 정보가 된다. 무엇을 했는지는 적혀 있어도 왜 그렇게 했는지, 무엇을 하지 않기로 했는지, 실패했을 때 어디부터 의심했는지는 빠지기 쉽다.

받는 사람도 짧은 기간에 모든 질문을 떠올릴 수 없다. 실제로 운영해보고 첫 문제가 생긴 뒤에야 이해되지 않는 부분이 보인다. 하지만 그때는 이미 물어볼 사람이 다른 업무로 멀리 가버렸을 수 있다.

그래서 인수인계를 마지막에 한 번 하는 행사가 아니라, 평소에 계속 갱신되는 작업으로 봐야 한다고 생각한다.

결정의 이유를 짧게 남기고, 반복해서 발생한 문제와 확인 순서를 기록하고, 실패한 시도도 지우지 않고, 새 사람이 실제로 따라 해보며 빈칸을 찾게 해야 한다. 한 사람만 아는 영역은 함께 살펴볼 기회를 만들고, 문서가 현재 상태와 다른지 정기적으로 확인해야 한다.

좋은 인수인계는 많은 페이지보다 다음 사람이 혼자 추측해야 하는 시간을 줄여주는 기록에 가깝다.

유지보수할 수 있는 크기로 만드는 일

기능을 더하는 순간에는 무엇이 가능해지는지가 먼저 보인다. 운영하는 순간에는 그 기능이 만들어낼 경우의 수와 의존성이 보인다. 그래서 나는 이제 기능의 가치와 함께 누가 어떻게 유지할지도 묻고 싶다.

당장 멋져 보이더라도 설명할 수 없고 되돌리기 어렵다면 한 번 더 생각하려 한다. 사용하지 않는 기능은 과감하게 덜어내고, 비슷한 일을 하는 흐름은 가능한 한 합치고, 새 기술을 선택할 때는 만드는 재미뿐 아니라 몇 년 뒤에도 이해할 수 있을지를 보려고 한다.

이것은 변화를 피하겠다는 뜻이 아니다. 오히려 계속 바꾸기 위해 감당할 수 있는 복잡도를 지키려는 쪽에 가깝다.

하루스페이스에는 앞으로 하고 싶은 일이 많다. 그만큼 예상하지 못한 문제도 따라올 것이다. 모든 상황을 미리 맞힐 수는 없지만, 문제가 생겼을 때 몇 사람의 기억과 체력만 태우지 않는 방향은 지금부터 선택할 수 있다.

남은 사람에게 짐만 건네지 않기 위해

오픈은 박수를 받기 좋고 유지보수는 눈에 잘 띄지 않는다. 아무 일도 일어나지 않은 하루가 누군가의 세심한 확인 덕분이라는 사실도 쉽게 지나간다.

나는 하루스페이스를 만들면서 새 기능을 소개하는 기록만 남기고 싶지 않다. 운영하며 망설였던 선택, 예상과 달랐던 부분, 인수인계에서 빠졌던 질문, 문제를 줄이기 위해 없앤 기능도 함께 남기고 싶다.

기록이 모든 부담을 없애주지는 못한다. 그래도 다음 사람이 처음부터 추측하게 만들지 않고, 남은 사람이 혼자 책임을 품고 버티는 시간을 줄일 수는 있다.

언젠가 하루스페이스에도 사람이 오고 떠날 것이다. 그때 썰물 뒤에 남은 사람이 텅 빈 자리와 설명되지 않은 시스템을 짐처럼 바라보지 않았으면 한다. 앞사람이 남긴 이유를 읽고, 지금의 판단을 덧붙이고, 다음 사람에게 조금 더 가벼운 상태로 건넬 수 있었으면 한다.

서비스를 오래 지키는 힘은 완벽한 한 사람보다 책임과 맥락을 나눌 수 있는 구조에서 나온다고 믿는다. 오픈을 준비하는 지금부터 유지보수를 함께 고민해야 하는 이유도 거기에 있다.

이어 읽기

이전 글 · 다음 글

이전 글39도 폭염과 AI 표시 의무 앞에서, 나는 먼저 알리는 책임을 생각했다다음 글 우리 집에 장수풍뎅이가 들어왔다