"짐작을 아키텍처로 만들지 마. 아무도 재방문 안 하는 짐작이 우발적 아키텍처가 태어나는 방식이야."
성급한 확신에 맞서는 규칙
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 섹션은 우유부단이 아냐. 아키텍처가 아직 움직여도 되는 곳의 지도야.