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

경계

~9 min · boundary, consume-not-absorb, separation-of-concerns

Level 0Lone Machine
0 XP0/37 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"엔진은 기록하고 실행해. 두뇌는 판단해. 그 선을 한 번 그으면, 두 반쪽 다 온전해질 수 있어."

두 주인, 깨끗한 선 하나

이 퀘스트가 끝날 때쯤 분할이 날카로워. Watchfire 는 fleet 사실이랑 durable operation 상태를 가져. registry, observation, operation, campaign, audit trail. cwkPippa 는 Pippa 의 정체성, 판단, tool routing, cross-brain 위임을 가지고. 어느 쪽도 상대 반쪽에 손을 안 뻗어. 엔진은 결정을 내리기 시작 안 하고, 두뇌는 fleet 의 장부를 쥐기 시작 안 해.

가져다 쓰되, 흡수하진 마. 한 층 위에서.

이 규칙을 둘째 트랙에서 앱에 대해 만났어. Watchfire 는 형제 엔진의 문서화된 health 를 가져다 쓰되, 그 내부 진단을 자기 안에 복사하진 않아. 바로 그 규칙이 Watchfire 랑 Pippa 사이 경계를 다스려. Watchfire 는 Pippa 한테 판단을 청하고 도울 operation 을 넘길 순 있어. 근데 두 번째 두뇌가 되진 않고, Pippa 는 두 번째 fleet-state store 가 되진 않아. contract 는 가져다 쓰고, 내부는 각자 자기 자리에 두고.

선이 깨끗하게 남는 이유

흐리면 둘 다의 최악을 얻어. 반쯤 판단하는 엔진이랑 fleet 을 반쯤 기억하는 두뇌. 각자 진짜 주인이랑 어긋나. 경계는 관료주의가 아니라, 각 쪽이 정확히 하나에 authoritative 하게 하는 거야. Watchfire 는 기계에 대한 진실, Pippa 는 뭘 할지에 대한 판단. 제대로 된 반쪽 둘이, 어중간한 조각 넷보다 나아.

엔진엔 두 번째 두뇌가 없어

구체적으로, Watchfire 는 agent runtime 을 안 품어. 길거나 끊김에 약한 작업은 durable operation 으로 Watchfire 에 먼저 commit 되고, Pippa delegate 가 그 operation 의 id 에 대해 실행해. 대화는 절대 operation store 가 아니고, 엔진은 절대 판단자가 아냐. 각자 정확히 자기로 남고, 둘 사이 이음매는 merge 가 아니라 contract 야.

엔진은 진실이 되게, 두뇌는 판단이 되게 둬. 깨끗한 경계가, 두 부분짜리 시스템이 두 개의 반쪽 시스템이 되는 걸 막아.

Code

두 주인, 그 사이의 contract 하나·python
OWNERSHIP = {
    "watchfire": ["fleet registry", "observations", "operations", "campaigns", "audit"],
    "cwkpippa":  ["pippa identity", "judgment", "tool routing", "delegation"],
}

# 이음매는 merge 가 아니라 CONTRACT:
#   Watchfire -> Pippa:  "여기 operation id. 도와줘 / 판단해줘"
#   Pippa -> Watchfire:  사실을 읽고, typed operation 을 제안
#
# Watchfire 는 agent runtime 을 안 품어. cwkPippa 는 fleet-state 사본을 안 둬.
# 상대의 contract 는 가져다 쓰고, 상대의 내부는 절대 안 흡수해.

External links

Exercise

네가 만든 시스템에서 서로 얘기하는 두 컴포넌트를 잡아. 서비스랑 client, 앱이랑 DB, UI 랑 API 같은 거. 각자 authoritative 한 하나랑 둘 사이 contract 를 써. 그다음 한 컴포넌트가 상대 내부에 손을 뻗는 데를 하나 찾아. 그게 결국 일으킬 drift 를 그려봐.
Hint
손 뻗기는 보통 지름길이야. client 가 '더 빨라서' 서비스의 private 테이블을 직접 읽어. 서비스가 그 테이블 모양을 바꾸기 전까진 돼. 그다음부터 둘은 어떤 contract 도 문서화 안 한 방식으로 묶여버려. 깨끗한 버전은 stable interface 만 가져다 쓰고, 그 뒤의 내부는 절대 안 건드려.

Progress

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

댓글 0

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

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