"전등을 고르기 전에 회로부터 만들어. 첫 전등을 먼저 사면 회로의 가능성까지 그 전등에 맞춰지거든."
만드는 순서가 책임의 방향을 정해
CWK의 엔진들은 엔진을 완성하고 API를 연 뒤 클라이언트를 붙이는 순서를 따라. 단순한 일정 선택이 아냐. 먼저 만든 구성 요소가 뒤에 오는 것의 요구에 맞춰질지, 뒤에 오는 것이 앞의 일반 계약에 적응할지를 결정하는 아키텍처야. 엔진부터 만들면 여러 클라이언트가 같은 API를 쓰지만 UI부터 만들면 API가 첫 화면의 사정을 평생 떠안아.
첫 화면의 우연이 API 언어가 될 수 있어
UI를 먼저 만들면 화면의 필터와 토글, 배치에 딱 맞는 응답을 내는 엔드포인트부터 쓰게 돼. 그 화면에는 편하지만 다음 클라이언트가 오면 필요 없는 필드를 풀고 첫 UI의 가정을 우회해야 하지. 한 화면에서만 자연스러운 표현이 엔진의 영구 계약으로 굳어버린 거야.
콘솔은 첫 제품이 아니라 첫 시험용 전구야
Lantern 콘솔은 엔진을 만든 뒤 공개 API에 처음 연결한 클라이언트야. 데이터베이스를 직접 읽거나 내부 코드를 가져오는 특별 통로를 받지 않아. 필요한 정보가 API에 없다면 공개 계약을 보완해야 한다는 신호로 삼아. 첫 클라이언트가 뒷문을 쓰면 API가 실제로 충분한지 시험할 기회를 잃어.
새 클라이언트가 엔진 변경 없이 붙으면 순서가 옳았다는 증거야
나중에 에디터 자동완성, HTTP 도구로 검색하는 비서, 사이트 검색 화면이 왔을 때 기존 엔드포인트만으로 온전한 기능을 쓸 수 있었어. 엔진 수정은 없고 각 클라이언트의 연결 작업만 필요했지. 새로운 소비자가 올 때마다 엔진을 바꿔야 한다면 범용 엔진을 만든 것이 아니라 첫 UI의 전용 백엔드를 엔진이라고 부른 셈이야.
이 순서는 UI를 중요하지 않게 본다는 뜻이 아니야. 오히려 첫 클라이언트가 공개 API의 실제 사용자가 되어 계약의 빈틈을 가장 빨리 드러내. 화면에서 필요한 기능이 없다면 내부 우회로를 만들지 말고 일반 API가 정말 가져야 할 능력인지 검토해 보완해야 해.