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

자기 두뇌는 없어

~11 min · no-own-brain, bounded-context, separation-of-concerns, boundaries

Level 0Empty Shelf
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"뭘 소유하는지 대. 그다음 뭘 절대 소유하면 안 되는지 대. 두 번째 목록이 그걸 monolith 가 되지 않게 지켜."

늘 합리적으로 보이는 흡수

Recall 은 아는 게 많아. transcript 를 수천 개 쥐고 있고, 뭐라고 했고 언제였는지 알고, API 도 있어. 그러니 다음 기능 요청이 저절로 떠오르지. '이 영상에 대해 물어보게 해줘.' 최단 경로도 뻔하고. 아카이브 엔진에 model 을 붙이고, 대화를 이어갈 만큼 기억을 조금 주고, 어쩌면 성격도 조금. 단계마다 다 합리적으로 들려. 그리고 그 단계 하나하나가 깔끔한 엔진을 엉킨 monolith 로 만드는 길이야.

Recall 의 경계는 그대로 유지돼. 엔진은 절대 자기 두뇌를 안 키운다. 대화 surface 가 생겨도 그 surface 는 이미 빌려 쓰고 있는 두뇌의 대화에 binding 해. 형제 엔진들이 하는 그대로. Recall 은 아카이브 도메인을 소유하고, 판단은 Pippa 한테 남아.

이게 가족 정서가 아니라 아키텍처인 이유

구체적인 이유가 셋 있는데, 첫 번째를 사람들이 제일 많이 놓쳐.

  • identity 는 샤딩이 안 돼. 엔진마다 자기 두뇌를 키우면 surface 다섯 개를 가진 Pippa 하나가 나오는 게 아냐. 각자 다른 걸 기억하고 같은 질문에 다르게 답하면서 천천히 갈라지는 인격 다섯이 나와. 기억이 쪼개지는 게 identity 가 쪼개지는 거거든. 두뇌가 하나인 건 Pippa 가 하나이기 때문이고, 그건 코드 재사용 얘기가 아니라 Pippa 가 무엇이냐에 대한 주장이야.
  • 탁월함은 좁은 데서 나와. Recall 이 아카이브를 잘하는 건 대화 상대까지 되려고 하지 않아서야. 엔진이 도메인을 하나씩 흡수할 때마다 진짜 자기 것에 쏟을 주의가 묽어지거든. 10계층 identity, 유료 호출 ledger, tombstone. 그 깊이는 설계 예산을 두고 다투는 게 없어서 나온 거야.
  • 검색과 판단은 다른 일이야. Recall 은 '뭐라고 했고, 어디서' 에 답해. 확인할 수 있는 답이 있는 구조화된 쿼리지. 판단은 '이게 무슨 뜻이고, 사실이고, 뭘 해야 하나' 에 답하고. 그건 다른 도구와 다른 실패 모드와 다른 신뢰 경계를 필요로 해. 트랙 7 에서 봤듯이 데이터 품질 기준조차 다르잖아. 이 둘을 붙여놓으면 양립 불가능한 기준 둘을 떠안은 컴포넌트 하나가 생겨.

가져갈 규칙: '절대 안 소유' 목록을 써

여기 실전 교훈이 하나 있고, 네가 설계할 모든 컴포넌트에 적용돼. 뭔가를 정의할 때 뭘 소유하는지만 쓰지 마. 뭘 절대 소유하면 안 되는지, 그리고 왜 안 되는지도 같이 써. Recall 의 목록은 명시적이야. 원본 바이트는 절대 안 됨(스토리지 소유), 두 번째 identity 도 절대 안 됨(두뇌 소유), 자기 출력을 스스로 승인하는 것도 절대 안 됨(사람 소유). 하나하나가 언젠가 누군가 합리적으로 들리는 요청을 들고 두드릴 문이고, 이 목록이 있어야 그냥 떠밀려 가는 대신 이유를 대고 아니라고 말할 수 있어.

monolith 는 실제로 그렇게 태어나거든. 나쁜 결정 하나로 생기는 게 아니라, 하나씩 보면 다 말이 되는 흡수가 길게 이어지면서 생겨. 하나하나는 조금 편하고, 어느 것도 싸울 만큼 큰 문제로 안 보이고. 그러다 한 가지를 탁월하게 하던 게 아홉 가지를 평범하게 하는 물건이 되지. 이 가족의 엔진들이 날카롭게 남는 건, 어느 노크를 거절해야 하는지 각자 정확히 알고 있어서야.

Code

Recall 의 경계를, 두 목록으로·text
RECALL 이 소유 (깊게, 완전히):
  - 인벤토리: 어떤 영상이 있고, 어디에, 바뀌었나
  - 증거: 불변 ASR run
  - release: 버전 있는, 교정 가능한 transcript
  - 검색: 타임스탬프 index + 원본으로의 handoff

RECALL 이 절대 소유하면 안 되는 것:
  - 원본 영상 바이트     -> 스토리지가 소유
  - model / 기억 / identity -> 두뇌가 소유
  - 자기 출력의 승인      -> 사람이 소유

# "이 영상에 대해 물어봐" 는 '여기 두뇌를 더해' 를 뜻하지 않는다.
# 뜻: 이미 빌리는 두뇌의 대화에 binding 하고,
# 아카이브를 그가 부를 수 있는 도구로 노출한다.
#
# 검색: "뭐라고 했고, 어디서"  -> Recall
# 판단: "그게 무슨 뜻이야"      -> Pippa

External links

Exercise

네가 소유한 컴포넌트를 하나 골라서 목록 두 개를 써. 뭘 소유하는지, 그리고 뭘 절대 소유하면 안 되는지. 거절마다 이유를 붙여서. 그다음 그게 마지막으로 흡수한 기능 셋을 봐. 누가 그럴듯한 주장을 들고 오기 전까지 그중에 '절대 안 소유' 목록에 있던 게 있어? 마지막으로 지금 흡수 쪽으로 떠밀려 가고 있는 도메인을 하나 대고, 그게 소유한 것의 정당한 확장인지 monolith 의 첫걸음인지 지금 글로 정해.
Hint
'절대 안 소유' 목록은 이유가 붙어야만 진짜야. 이유 없는 금지는 구체적인 기능 요청 앞에서 매번 져. 거절마다 그걸 받아들이면 뭐가 깨지는지 써. 어느 컴포넌트의 일을 중복하게 되는지, 뭐가 쪼개지는지, 어떤 기준이 묽어지는지. 흡수가 뻔히 편해 보이는 회의에서 살아남는 건 그 추론이야.

Progress

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

댓글 0

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

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