연초에 파일럿을 열었다. 처음 만든 결과물이라 만족스러웠는데, 열고 나서 며칠 지나니 다른 게 걸리기 시작했다.

사용자가 얼마나 들어오는지 볼 수가 없었다. 장애가 나도 알 방법이 없었다. 누가 알려주기 전까지는 몰랐다.

다음 버전을 그대로 시작할 뻔했다

파일럿 피드백을 받아서 기획팀은 2.0 준비에 들어갔고, 나도 자연스럽게 개발 계획을 잡기 시작했다. 그러다 멈췄다.

지금 이대로 기능을 더 얹는 게 의미가 있나 싶었다. 기능이 열 개에서 스무 개가 되면 확인해야 할 것도 두 배가 되는데, 확인할 방법 자체가 없는 상태다. 대량 데이터 파이프라인은 하루에도 몇 번씩 직접 들어가서 눈으로 봐야 했다. 그 방식으로 규모를 두 배로 만들면 어떻게 되는지는 뻔했다.

그래서 순서를 바꿨다. 2.0 기능 개발 전에, 보는 것과 배포하는 것부터 다시 만들기로 했다.

기획 일정이 잡혀 있는 상황에서 “당장 눈에 보이는 결과가 없는 일"에 시간을 쓰겠다고 하는 게 마음 편한 결정은 아니었다. 다만 지금 안 하면 앞으로 계속 못 할 것 같았다. 서비스가 커질수록 멈추기는 더 어려워지니까.

실제로 한 것

모니터링. 상용 APM은 그때 우리 규모에서 감당할 수 있는 가격이 아니었다. 무료로 쓸 수 있는 걸 찾다가 스카우터를 붙였다. 완벽하진 않아도 응답 시간과 활성 요청, 힙 사용량이 눈에 보이기 시작한 것만으로 체감이 달랐다. 문제가 생겼을 때 어디를 열어봐야 하는지 알게 된 것이 제일 큰 변화였다.

클라우드 구조. 권한과 비용 쪽은 아는 게 거의 없었다. 모르는 채로 두면 나중에 더 비싸질 것 같아서 그냥 물어보기로 했다. 클라우드 제공사 쪽에 거의 매일 메일을 보냈고, 아키텍처 리뷰를 받아서 구조를 처음부터 다시 잡았다. 혼자 고민한 시간보다 물어본 며칠이 훨씬 효율적이었다.

배포. 그전까지는 손으로 올렸다. 젠킨스를 붙여서 CI/CD를 만들었다. 배포가 자동이 되면 빨라지는 게 이득인 줄 알았는데, 실제로 더 컸던 건 배포가 무섭지 않게 된 것이었다. 무서우면 배포를 몰아서 하게 되고, 몰아서 하면 문제가 생겼을 때 원인을 못 찾는다.

형상관리. SVN에서 Git으로 옮겼다. 이건 사람이 늘어날 걸 대비한 작업에 가깝다.

무엇부터 볼 것인가

한꺼번에 다 붙일 수는 없어서 순서를 정해야 했다. 기준으로 삼은 건 **“이게 안 보이면 사고를 나중에 알게 되는가”**였다. 그 답이 예인 것부터 붙였다.

그 기준으로 보면 순서가 대략 이렇게 나온다.

  1. 살아 있는가 — 프로세스가 떠 있는지, 응답을 하는지. 제일 기본인데 이게 없으면 나머지가 다 무의미하다.
  2. 얼마나 걸리는가 — 응답 시간. 느려지는 건 대개 장애보다 먼저 오는 신호다.
  3. 자원이 남아 있는가 — 힙과 디스크. 이 둘은 서서히 차오르다가 한 번에 터진다는 공통점이 있다.
  4. 일이 실제로 끝났는가 — 배치와 파이프라인이 “돌았다"가 아니라 “정상적으로 끝났다"까지.

네 번째가 우리한테는 제일 중요했다. 데이터를 받아서 가공하는 게 서비스의 핵심인데, 파이프라인은 실패해도 조용한 경우가 많다. 에러 없이 0건을 처리하고 성공으로 끝나는 상황이 제일 무섭다. 서버는 멀쩡하고 화면도 뜨는데 데이터만 어제 것인 상태다.

그래서 처리 건수 자체를 지표로 보기로 했다. 평소와 다른 숫자가 나오면 성공이든 실패든 일단 확인한다. 이건 지금 생각해도 잘한 선택이다.

반대로 처음부터 안 하기로 한 것도 있다. 알림을 촘촘하게 거는 것. 볼 게 생겼다고 다 알림으로 만들면 금방 무시하게 되고, 그러면 알림이 없는 것과 같아진다. 알림은 사람이 지금 개입해야 하는 것만 걸고 나머지는 대시보드에 두기로 했다.

배운 것

이 몇 주 동안 정말 많이 만들고 많이 부쉈다.

정리하면 두 가지다.

보이지 않으면 판단할 수 없다. 서비스가 느린지 빠른지, 괜찮은지 위험한지를 감으로 말하고 있었다는 걸 계기판을 붙이고 나서야 알았다. 그전까지 내 판단에 근거가 없었다기보다, 근거가 없다는 사실 자체를 몰랐던 쪽에 가깝다.

기초 공사는 미룰수록 비싸진다. 지금은 서비스가 작아서 며칠이면 되지만, 데이터와 사용자가 쌓인 다음에는 같은 작업이 몇 배가 된다. 그리고 그때는 더 급한 일이 반드시 있다.

당장 보여줄 게 없는 몇 주였는데, 이 순서로 하길 잘했다고 생각한다.