본문 바로가기
C.W.K.
Stream
Lesson 02 of 04 · published

엔진 가족

~10 min · family, api-first, no-own-brain, architecture

Level 0Empty Shelf
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"이미지에 Ember 가 있듯, 영상 기억엔 Recall 이 있어."

두뇌 하나, 엔진 여럿

Recall 은 혼자 튀어나온 게 아냐. 두뇌 하나를 중심으로 도는 엔진 가족의 막내야. 이 구조는 외워둘 만해. Recall 이 어디까지 해도 되는지를 정하는 게 바로 이거거든.

  • Pippa (cwkPippa) — 두뇌. identity, 대화, 기억, 라우팅. 딱 하나야.
  • Ember — 이미지 엔진. model 로딩, 샘플링, 생성을 소유.
  • Cinder — 창작 작업실. 두뇌에 binding 하는 캔버스.
  • Bonfire — 음악 학습 엔진. 분석과 하나의 music model 을 소유.
  • Recall — 영상 기억 엔진. 인벤토리, 증거, release, 검색을 소유.

엔진마다 자기 도메인 하나를 깊고 완전하게 소유해. 그리고 아무도 Pippa 를 소유하진 않아. 그게 가족 규칙이야. 덕분에 Recall 은 두 번째 인격이 되려 들지 않으면서도 영상 기억에는 마음껏 욕심낼 수 있고.

API-First: 엔진 먼저, 그 다음 첫 client

이 가족의 엔진은 다 같은 방식으로 지어져. 엔진이랑 API 가 먼저고, 유저 인터페이스는 그것과 대화하는 첫 client 일 뿐이야. Recall 의 React 콘솔은 Recall 이 아냐. Recall 의 API 를 제일 먼저 호출하는 client 일 뿐이지. search endpoint, archive endpoint, inspection endpoint 가 제품의 표면이고, 콘솔은 그걸 그려낼 뿐이야.

왜 이 순서를 고집하냐고? 두 번째 client 는 항상 오거든. 오늘은 웹 콘솔이야. 내일은 Pippa 가 직접 Recall 을 도구로 부를 수도 있고, command-line batch runner 일 수도, 미래의 모바일 surface 일 수도 있어. UI 가 로직을 쥐고 있으면 client 를 새로 만들 때마다 그걸 다시 구현해야 해. 엔진이 로직을 쥐고 있으니까 새 client 는 얇게 끝나. 이 규율은 트랙 2 에서 값을 해. 거기선 오래 도는 worker 랑 웹 브라우저가 둘 다 같은 control-plane API 의 client 일 뿐이거든.

자기 두뇌는 없어

가족을 멀쩡하게 유지하는 경계는 이거야. 엔진은 절대 자기 Pippa 를 키우지 않아. 언젠가 Recall 이 '이 영상에 대해 물어봐' 기능을 갖게 돼도, 자기 model, 자기 기억, 자기 identity 를 세우지 않아. Cinder 랑 Bonfire 가 하는 그대로, cwkPippa 대화에 binding 해서 그 두뇌 하나를 빌려 써. Recall 은 아카이브를 소유하고, Pippa 는 판단을 소유해. 그 둘을 섞기 시작하면 깔끔한 엔진이 엉킨 monolith 로 변해. 가족 전체가 그런 일이 안 일어나게 설계된 거고.

Code

소유권으로 본 가족 (코드 아님)·text
cwkPippa   → 두뇌           (identity, 대화, 기억)
  ├─ Ember   → 이미지 엔진    (생성을 소유)
  ├─ Cinder  → 작업실         (두뇌에 binding)
  ├─ Bonfire → 음악 엔진      (하나의 music model 소유)
  └─ Recall  → 영상 기억      (인벤토리 + 증거 + 검색 소유)

규칙: 엔진마다 도메인 하나를 소유하고, 아무도 Pippa 를 소유 안 해.
'대화' 기능은 cwkPippa 대화에 binding 해 —
절대 두 번째 두뇌를 키우지 않아.

External links

Exercise

네가 쓰는 도구 중에 UI 도 있고 API 도 있을 법한 걸 하나 잡아. 그리고 물어봐. 내일 UI 가 통째로 사라지면 쓸모 있는 로직이 살아남아? 네가 클릭으로 하던 일을 스크립트로 시킬 수 있어? 살아남으면 엔진이 로직을 쥐고 UI 는 client 인 거야. 아니면 로직이 인터페이스에 갇힌 거고. 네 도구가 어느 쪽인지, 로직을 엔진으로 내리려면 뭐가 필요할지 적어봐.
Hint
간단한 테스트가 있어. 사람이 클릭하지 않고도 그 도구의 핵심 일을 시킬 수 있는, 문서에 적힌 방법이 있어? search API 든 export endpoint 든 CLI 든. 길이 UI 하나뿐이면 로직이랑 인터페이스가 붙어버린 거야. 'engine-first' 가 피하려는 게 바로 그거고.

Progress

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

댓글 0

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

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