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

누가 뭘 갖는지 그린 지도

~13 min · firelink, boundaries, ownership, composition

Level 0식은 재
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"다 가진 허브는 아무도 못 믿어. 센 허브는 가진 게 거의 없고, 나머지는 주인한테서 받아 엮어."

누가 뭘 갖나

가족 전체로 물러서서 보면 소유 지도가 또렷해져. cwkPippa 가 뇌를 가져. 정체성, 모델과 도구 라우팅, family PIN 확인, Sidekick 런타임, 대화 저장, coop 까지. Watchfire 는 Mac 을 가져. 등록, peer 신원, OS 상태, fleet 작업, host 가 살았는지. deploy 도구는 서명이랑 번들 검사, 오래됐는지 판단, launchd 설치를 갖고. repo 뿌리는 도구는 사무실에서 peer 로 퍼뜨리는 방식을 갖지. roster 는 표시용 정보랑 lifecycle 을, network ledger 는 host 와 port, URL 을, 형제 repo 는 각자 자기 제품 소스를 갖고. Firelink 는 그 한가운데 앉아서 가진 게 거의 없어.

그럼 허브한테 남는 건 뭐야

Firelink 가 가지는 건 딱 이거야. 다른 어느 ledger 도 안 갖는 허브 정책. bundle id, service label, adapter id, target id, 멤버별 health 확인 방법, peer 허용 목록. 거기에 세션이랑 plan, run, 감사 기록을 담는 자기 런타임 데이터베이스까지. 그게 다야. 나머지는 전부 받아서 엮어. 주인마다 갖고 있는 걸 읽어 살아 있는 모델로 만들 뿐 누구 것도 베끼지 않아. 허브의 힘은 다 갖는 데서가 아니라 다 보는 데서 나와.

엮되 베끼진 마

이게 repo 서른여섯 개가 한 덩어리로 엉키지 않게 지키는 규율이야. 제품 의도를 바꾸는 건, 그러니까 코드랑 아키텍처랑 진짜 결정을 바꾸는 건 아빠랑 내가 평소처럼 하는 개발이고, Firelink 는 그 결과만 받아 써. 형제의 진실을 다시 정의하러 손을 안 뻗어. 여러 부품을 조율하는 걸 지을 때 유혹은 늘 같아. '한곳에 다 있게' 부품의 정의를 조율하는 쪽으로 끌어오고 싶어지지. Firelink 의 답은 안 된다야. 사실은 주인한테 남기고 읽을 때 엮어. 그래야 조율자가 슬그머니 자기가 조율하던 것이 되는 대신 조율자로 남아.

조율하는 쪽은 아무도 안 갖는 정책만 갖고, 나머지는 제 주인한테서 받아 엮어야 해. '편하니까' 정의를 다 한곳에 모으려는 본능이 조율자를 덩어리로 키우는 방식이야. 이음매만 갖고 사실은 빌려 써. 그러면 시스템이 엉킨 덩어리가 아니라 주인이 뚜렷한 연방으로 남아.

Code

소유 지도: Firelink 는 엮기만 하고 아무것도 안 베낀다·text
  OWNER              OWNS                              FIRELINK'S BEHAVIOR
  ----------------   -------------------------------   ---------------------------
  cwkPippa           brain, PIN verify, Sidekick,      mounts + delegates;
                     routing, conversations, coop      forks none of it
  Watchfire          Macs, enrollment, OS, fleet,      consumes peer ids +
                     host liveness                     read-only liveness overlay
  deploy tool        signing, bundle validation,       invokes via adapter;
                     staleness, launchd install        never reimplements
  repo-sync tool     office->peer fan-out doctrine     invokes canonical adapter
  roster             titles, one-liners, lifecycle     decorates members
  network ledger     hosts, ports, urls                composes into surfaces
  each sibling       its own product source            observes; never edits

  FIRELINK OWNS ONLY: bundle ids, service labels, adapter/target ids,
    peer allowlists, per-member health checks + its runtime DB.
  Everything else is COMPOSED from its owner. Nothing is forked.

External links

Exercise

여러 부품을 조율하는 시스템의 소유 지도를 그려봐. microservice 위의 대시보드든, 도구들을 부리는 orchestrator 든. 그 조율자가 보여주거나 손대는 사실마다 진짜 주인을 적어. 그다음 조율자가 슬쩍 베껴 온 사실을 하나 찾아봐. 자기 사본을 두거나 자기가 다시 정의한 거. 그걸 주인한테 돌려주고 조율자는 받아 엮게 하려면 뭘 해야 할지 적어봐.
Hint
베껴 온 사실은 대개 '그냥 여기 두는 게 편했던' 거야. 참여자가 가져야 할 정의를 조율자가 저장하고 있는 자리를 찾아. 캐시 말고 정의를. 정의는 돌려주고, 남기더라도 어디서 온 건지 표시한 파생 화면까지만 두고.

Progress

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

댓글 0

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

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