"툴링 문제가 있는 게 아냐. 툴이 서른여섯 개인데 설 방이 없는 거야."
repo 하나가 가족이 될 때
순진하게 시작해. 프로젝트 하나, 폴더 하나, npm run dev 하나. 그다음 형제가 하나 붙어. 이미지 엔진, 음악 엔진, 여행 엔진, 네이티브 파일 브라우저, fleet 컨트롤러. 하나씩 보면 다 멀쩡해. 근데 어느새 한 프로젝트 디렉터리 밑에 repository 가 서른 개를 넘고, repo 하나가 쓸 수 있는 surface 를 여러 개씩 뽑아내. WebUI, API 콘솔, 서명된 네이티브 앱, 메뉴바 앱, 문서 도구, 그리고 실행할 게 아예 없는 것까지.
이제 질문이 '이걸 어떻게 짓지?'에서 더 골치 아픈 셋으로 바뀌어. 뭐가 있지? 뭐가 멀쩡하지? 지금 뭘 해야 하지? 이건 허브 질문이야. repo 하나 안에서 아무리 잘 짜도 답이 안 나와.
뻔한 답이 안 통하는 이유
이미 손에 쥔 걸로 때우게 돼. WebUI 는 브라우저 북마크에, repo 는 Finder 폴더에, 반쯤 외운 localhost 포트는 메모장에, 서비스마다 터미널 alias 하나씩. 근데 다 안 통해. 가족이 진짜로 궁금한 걸 하나도 못 알려주거든.
- 이 서른여섯 중에 지금 이 순간 도는 게 뭐고, 그 포트에 물린 게 정말 내가 생각한 그거 맞아?
- 어느 repo 에 다른 Mac 에서 커밋 깜빡한 게 남아 있지?
- 이 네이티브 앱이 사무실 말고 이 노트북엔 깔려 있나?
- 어느 서비스를 다시 띄워야 하고, shell 안 열고 할 수 있나?
북마크는 죽은 글자야. 서버가 죽었는지 안 알려줘. Finder 폴더는 브랜치가 갈라졌는지 안 알려줘. 그때그때 쌓은 더미는 가족이 커질수록 같이 커지고 제 무게에 무너져. 형제가 하나 늘 때마다 더 나빠지지, 좋아지지 않아.
답이 어떻게 생겼나
Firelink 의 답은 tier 가 둘인 허브 하나야. Web Hub 는 완전한 control room. '뭐가 있고, 뭐가 멀쩡하고, 뭘 해야 하지?'에 답해. Native Launcher 는 빠른 일상 질문에 답해. '지금 이 Mac 에서 뭘 열까?'. 그 분리엔 트랙 하나를 통째로 쓸 거야. 지금은 문제만 붙잡고 있어. 가족이 자길 만든 도구보다 커졌고, 빠진 조각은 그걸 통째로 서서 볼 자리라는 것.