본문으로 건너뛰기

6개월을 돌아보며, 다시 시작한다면

· 약 5분

6개월간 백엔드·프론트엔드·인프라를 만들고 굴려 온 시리즈를 마무리합니다. 반복해서 배운 것과, 다시 시작한다면 다르게 할 것들을 정리합니다.

여섯 편을 적는 동안, 서로 다른 이야기인 줄 알았던 것들이 사실 같은 교훈을 반복하고 있었다는 걸 알게 됐습니다. 마지막 편은 그 반복을 모으고, 솔직하게 다시 시작한다면 무엇을 다르게 할지 적어 봅니다.

지나온 여섯 편

반복해서 배운 것

6개월 빌드 시리즈 전체 지도와 반복해서 배운 교훈들

1. 조용히 어긋나는 실패가 가장 오래 삽니다

이 시리즈에서 가장 자주 나온 말입니다. 4KB를 넘어 조용히 버려진 쿠키(2편), 가져가기 전에 조용히 지워진 메시지(3편), 옛 설정을 조용히 내주던 캐시(5편).

셋 다 오류 로그가 없었습니다. 시스템은 "정상"이라고 답했고, 그래서 가장 오래 사람을 붙잡았습니다. 요란하게 터지는 장애는 금방 잡힙니다. 무서운 건 아무 소리 없이 어긋나는 쪽입니다.

2. 공통은 한곳에, 차이는 가장자리에

백엔드에서도(1편), 프론트엔드에서도(5편), 두 운영 환경에서도(4편) 같은 모양이었습니다. 공통되는 것은 한곳에 모으고, 환경마다 다른 부분은 본문이 아니라 가장자리(환경 변수·빌드 설정·설치 단계)에서 흡수했습니다.

덕분에 "이건 이 환경용, 저건 저 환경용"으로 코드를 쪼개지 않을 수 있었습니다. 한 번 짜면 여러 곳에서 돌았습니다.

3. 좋은 기본값도 항상 맞지는 않습니다

캐시는 빠르라고 있는 좋은 기능입니다. 하지만 자주 바뀌어야 하는 설정 파일에는 독이었습니다(5편). 설정값을 사람 판단에 맡기는 것도 자연스럽지만, 누군가는 다르게 잡아 사고가 났습니다(3편).

"보통은 이게 맞다"가 이 경우에도 맞는지는 따로 물어야 했습니다.

4. 만들 수 있다와 굴릴 수 있다는 다릅니다

만드는 동안에는 "되는가"만 보면 됐습니다. 운영에 들어가니 "지금 무엇이 도는가, 깨지면 누가 아는가"가 더 중요해졌습니다(6편). 이 차이를 늦게 깨달은 게 가장 큰 배움이었습니다.

다시 시작한다면 다르게 할 것

  • 들여다보는 장치를 가장 먼저 두겠습니다. 관측은 운영에 들어가서야 급하게 갖췄지만, 처음부터 있었다면 앞의 조용한 사고들을 훨씬 일찍 봤을 겁니다.
  • 환경 차이를 처음부터 부품으로 빼겠습니다. 나중에 분리하려니 본문 곳곳에 박힌 가정을 찾아 걷어내야 했습니다.
  • "받아올 수 있다"는 가정을 줄이겠습니다. 인터넷이 되는 환경을 당연하게 여긴 코드가, 막힌 환경에서 줄줄이 멈췄습니다(4편).
  • 버전과 변경 이력을 일찍 붙이겠습니다. "최신이 맞겠지"로 버틴 기간이 생각보다 길었습니다.

안 바꿀 것

  • 모노레포는 다시 골라도 같은 선택입니다. 소수가 전체를 보는 단계에서는 마찰이 가장 적었습니다.
  • 경계를 분명히 긋는 것도 그대로 두겠습니다. 한 서비스가 한 가지 일만 하게 만든 덕분에, 필요할 때 골라 조립할 수 있었습니다.
다시 시작한다면 다르게 할 것과, 그대로 둘 것의 정리

마무리

여섯 편을 한 줄로 줄이면 이렇습니다. 공통은 모으고, 차이는 가장자리로 밀고, 조용한 실패를 드러내고, 만든 것을 굴릴 수 있게 한다.

거창한 결론은 없습니다. 다만 같은 실수를 다음에는 조금 더 일찍 알아챌 수 있을 것 같습니다. 그거면 충분한 6개월이었습니다.

긴 글 읽어 주셔서 감사합니다.