"더 이상 존재 안 하는 변화 위의 추상화는 유연성이 아니야 — 안 일어난 미래의 박물관이야. 삭제해. 미래가 실제로 도착하면 재도입해."
추상화를 obsolete 하게 만든 피벗
초기에, 작업실이 생성을 여러 다른 backend 로 라우팅할 수 있었고, 그래서 라우팅 enum — 각 가능한 backend 를 이름으로 나열하는 타입 — 을 실었어. 그땐 분별 있었어. 그러더니 엔진이 통합됐어: 한 엔진이 모든 생성의 단일 backend 가 됐어. 하룻밤 새, 그 라우팅 enum 이 정확히 한 값을 실었어. 추상화가 backend 간 변화를 흡수하려고 지어졌는데, 변화가 사라진 거야.
concrete-first 결정
옵션이 둘이었어. 둘째 backend 가 언젠가 돌아올 '혹시 몰라' 단일-값 enum 을 유지 — 또는 삭제해, 라우팅 로직을 직접 호출로 무너뜨리고, 진짜 둘째 backend 가 실제로 착륙하면 그때만 추상화를 재도입. 선택은 삭제였어. 값 하나 든 enum, 한 곳으로 라우팅하는 router, 더 이상 안 갈라지는 갈림길 위의 추상화 — 다 죽은 surface 야, 뒤에 아무것도 없는 복잡성.
왜 '혹시 몰라' 가 함정인지
단일-값 enum 유지가 신중하게 느껴져 — 둘째 backend 가 돌아오면? 근데 '혹시 몰라' 추상화는 꾸준한 세금을 물려: 모든 reader 가 왜 한 곳으로 라우팅하는 router 가 있는지 이해해야 하고, 모든 변경이 아무것도 안 하는 우회를 통과해야 하고, 신참이 존재 안 하는 다른 케이스를 찾느라 시간 낭비해. 비용이 지속적으로, 모두가, 영원히, 절대 안 올 수도 있는 이득 대비 지불돼. 나쁜 거래야.
깨끗하게 설계해서 재도입이 싸
삭제가 안전한 이유: 진짜 둘째 backend 가 언젠가 착륙하면, 라우팅 추상화 재도입이 경계 지어진, 잘 이해된 작업이야 — 정확히 나머지 시스템이 깨끗한 seam(module-분리 규율 전체)으로 지어졌으니까. 절대 필요 없을 거라 베팅하는 게 아니라; 필요하면, 도로 추가가 재작성이 아니라 유한한 작업일 거라 베팅하는 거야. 깨끗한 아키텍처가 '지금 삭제, 나중에 재추가' 를 도박 대신 안전한 베팅으로 만들어.