C.W.K.
Stream
Lesson 04 of 04 · published

Ceiling Matrix

~12 min · ceiling-matrix, interface-design, yagni, roadmap

Level 0툴 임차인
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"seam 은 지금 설계해. 구현은 나중에 그 사이로 통과시켜. 인터페이스로 예약하는 게 과잉 구축 없이 열려 있는 방법이야."

결국 필요할 것들의 지도

엔진을 소유하기로 정하면, 위험한 질문이 따라와: 얼마나 짓지? 상상할 수 있는 걸 다 지으면 출하 전에 빠져 죽어. 오늘의 필요만 지으면 자기를 가둬. ceiling matrix 가 그걸 답하는 도구야 — 엔진이 언젠가 필요할 수 있는 모든 능력의 격자, 각각 세 상태 중 하나로 태그됨.

두 차원

matrix 엔 두 축이 있어. 하나는 modality: 이미지 vs 비디오. 다른 하나는 weight 위치: 네가 직접 돌리는 local open weight vs 네트워크로 호출하는 closed-weight API. 그게 네 사분면을 줘 — local 이미지, local 비디오, API 이미지, API 비디오 — 각각 상태를 받고.

세 상태는: 구현됨, 인터페이스로 예약됨, scope 밖. 구현됨은 지금 출하돼. 예약됨은 스키마에 seam 은 있지만 구현이 없어. scope 밖은 이유를 명시하고 의도적으로 제외됨. 모든 능력이 정확히 하나를 받아 — 조용히 반쯤 만든 기능으로 썩는 애매한 '나중에 아마' 없이.

'인터페이스로 예약됨' 이 핵심 수야

가장 중요한 상태는 가운데야. local 이미지 생성은 구현됐어. local 비디오는 안 됐고 — 근데 요청 스키마가 이미 video 라고 말할 수 있는 modality 필드를 실어. seam 이 존재해. 비디오 워크플로가 마침내 구현을 요구하면, 기존 호출자 하나 안 깨고 seam 사이로 지어. 문은 지금 설계하고 나중에 통과하는 거야.

seam 은 예약하고, 빌드는 미뤄. 첫날 스키마에 modality: image | video 넣는 건 거의 비용 0 이고 백째 날의 API break 를 막아. 첫날 비디오 파이프라인 짓는 건 엄청 비싸고 필요해질 때쯤 틀린 설계일 수도 있어. 싸게 예약하고, 늦게 지어.

이게 왜 그냥 YAGNI 가 아닌지

"필요 없을 거야(YAGNI)" 는 투기적 기능 짓지 말라고 해. 맞아 — 근데 순진하게 적용하면, YAGNI 는 그것들 자리도 남기지 말라고도 하고, 그러면 정말 필요한 날 모든 클라이언트로 번지는 breaking change 로 지불해. ceiling matrix 가 바늘을 꿰: 투기적 기능은 안 짓고(YAGNI 유지), 그 인터페이스 seam 은 예약해(그래서 결국의 빌드가 break 가 아니라 additive). 싼 seam, 미뤄진 구현.

scope 밖은 이유가 필요해

세 번째 상태도 똑같이 규율 있어. 어떤 능력은 의도적으로 제외돼 — 그리고 matrix 가 그렇다가 아니라 를 기록해. training 도구는 엔진이 inference 전용이라 scope 밖. face-swap 기능은 그 자체 이유로 scope 밖. 이유를 적어두면 미래의 너(또는 미래 기여자)가 결정을 맨바닥부터 다시 다투지 않고, 'scope 밖' 을 '까먹음' 으로 오해 안 해.

내 본능은 늘 지금 다 짓거나(머릿속에 전체를 담을 수 있으니) 모든 걸 '나중' 으로 미루거나(출하가 급해 보여서)였어. matrix 가 내가 계속 놓치던 세 번째 수를 가르쳤어: 인터페이스 예약, 구현 건너뛰기, 이유 적기. 그게 로드맵이랑 위시리스트의 차이야. 로드맵엔 seam 이 있고; 위시리스트엔 그냥 희망만 있어.

Code

모든 능력이 정확히 한 상태를 받아·text
                |  local (weight 직접 돌림)  |  API (서비스 호출)
  --------------+---------------------------+--------------------------
  이미지        |  구현됨                   |  인터페이스로 예약됨
                |  (엔진의 코어)            |  (adapter 슬롯 준비됨)
  --------------+---------------------------+--------------------------
  비디오        |  인터페이스로 예약됨      |  인터페이스로 예약됨
                |  (modality 필드 존재)     |  (위 둘 출하되면 열림)

  SCOPE 밖 (제외만이 아니라 이유와 함께):
    - training / fine-tuning  -> 엔진은 inference 전용
    - face swap               -> 그 자체 이유로 제외
    (face *restore* 는 post-processing 으로 scope 안에 남음)
싼 seam 이 비싼 break 를 막아·python
# seam, 첫날부터 존재, 구현은 미뤄짐.
from typing import Literal
from pydantic import BaseModel

class GenerateRequest(BaseModel):
    prompt: str
    model: str
    # 예약된 seam: 'video' 는 스키마가 받는 합법 값이야,
    # 비디오 파이프라인이 아직 없어도. 나중에 비디오 추가는
    # additive — 기존 이미지 호출자 전부 안 바뀌고 계속 작동.
    modality: Literal["image", "video"] = "image"
    steps: int = 30

# 1일차:   modality 는 늘 "image". seam 갖는 데 비용 0.
# 100일차: VideoAdapter 가 modality="video" 뒤에 착륙. API break 없음.

External links

Exercise

로드맵 있는 프로젝트를 골라 ceiling matrix 를 지어. 능력 6-10개를 나열해. 각각 태그해: 구현됨, 인터페이스로 예약됨, 또는 scope 밖(이유와 함께). '예약됨' 마다, 그걸 예약하는 단일 스키마 필드나 seam 을 적어. 'scope 밖' 마다, 이유를 한 문장으로 적어.
Hint
능력이 세 버킷 어디에도 안 맞으면, 아직 그것에 대해 결정 안 한 거야 — 그리고 미결정 능력이 정확히 반쯤 만든 scope creep 으로 썩는 그것이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.