"짐작을 아키텍처로 만들지 마. 아무도 재방문 안 하는 짐작이 우발적 아키텍처가 태어나는 방식이야."
성급한 확신에 맞서는 규칙
Waystone 아키텍처 문서는 자기 자신한테 특이한 지시를 실어. 미해결 질문을 명시적으로 열어둬라. 프레임워크랑 벤더랑 저장에 대한 짐작을 우발적 아키텍처로 만들지 마라. 그게 concrete-first 원칙이야. 진짜 vertical slice가 그 결정을 유용하게 만들기 전엔 DB도, 지도 provider도, 배포 토폴로지도 안 골라. 결정이 나빠서가 아니라, 증거 전에 내린 결정은 결정의 옷을 입은 짐작이라서야. 아무도 짐작이라 표시 안 한 짐작은 나중에 다들 추론된 거라 여기는 아키텍처로 굳어버리거든.
실제로 이게 어떻게 보이나
v0 엔진은 DB schema로 시작하는 대신 journey를 평범한 파일로 저장해. journey record, plan 문서, append-only breadcrumb 로그. geocoder랑 지도 타일은 v0 선택으로 이름 붙고, 엔진 자기 endpoint 뒤에서 명시적으로 교체 가능해. 그리고 문서는 늘 Open Decisions 목록을 유지해. 마이그레이션 도구, routing이랑 고도 provider, 오프라인 packet 저장, 충돌 해결 표면, native 클라이언트 임계값. 각각이 정직한 답이 '아직 미정'인 자리고, 조용히 기본값으로 흘러가는 대신 그렇게 적혀 있어.
왜 명시적 목록이 중요해
모든 프로젝트가 잠정적 선택을 해. 드문 건 어떤 선택이 잠정적이었는지 적어두는 것이야. 그 목록이 미래 독자, 그러니까 미래의 아빠랑 미래의 Pippa랑 미래의 너한테, '이유가 있어서 골랐다'랑 '그냥 움직이려고 집었다'를 구별하게 해줘. 목록이 없으면 6개월 뒤 코드에서 둘이 똑같아 보이고, 아무도 두 번째 종류를 못 건드려. 첫 번째일 수도 있으니까. Open Decisions 섹션은 우유부단이 아냐. 아키텍처가 아직 움직여도 되는 곳의 지도야.