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

펜은 한 호스트가 쥔다

~10 min · single-writer, authority, split-brain, source-of-truth

Level 0Lone Machine
0 XP0/37 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"다들 계곡을 지켜볼 순 있어. 근데 logbook 에 적는 건 딱 한 사람이야."

눈은 여럿, 펜은 하나

fleet 엔 지켜보는 건 많아도 돼. 기계마다 자기 상태를 보고하고, probe 는 아무 데서나 돌고, 위임된 agent 는 event 를 남겨. 관찰은 싸니까 많을수록 좋아. 근데 fleet 의 제어 상태를 쓰는 건 딱 한 호스트야. office 라 치자. policy, membership, operation ledger 를 쓰는 건 걔 하나. 눈은 여럿, 펜은 하나.

펜이 둘이면 치르는 값

두 호스트가 둘 다 권위를 쥐고 쓰면 split-brain 을 산 거야. 하나는 랩탑을 retired 로 정하는데, 다른 하나는 여전히 active 로 두고 걔한테 operation 을 걸어. 하나가 이미 시작한 업그레이드를 다른 하나가 또 시작하고. 이제 뭘 읽든 누구 기준으로? 를 물어야 하는데, 정직한 답이 없어. 진실 원본이 둘인 시스템은 진실이 둘인 게 아니라 아예 없는 거야.

관찰자는 싸고, 권위는 안 싸

그래서 일부러 갈라놨어. 관찰은 원하는 만큼 넓게 뿌리되, 권위 있는 write 는 전부 한 주인한테 깔때기처럼 모아. 지켜보는 peer 는 witness 야. 보고만 하지, canonical store 에 서명하거나 합성하거나 쓰지 않아. logbook 저자가 딱 하나라서, 남들이 읽을 때 믿을 수 있는 거야.

탑도 이 규칙에 묶여

이 규칙엔 control-plane 호스트 자신도 예외가 아냐. office 는 펜을 쥔 동안 자기 자신을 fleet 에서 retire 못 해. 그 순간 변화를 적을 writer 가 안 남으니까. 펜을 다른 호스트로 넘기는 건 자기 gate 를 갖춘 진짜 operation 이지, 사고로 벌어지는 일이 아냐. 그 migration 은 Membership 트랙에서 다시 만나.

관찰은 흩뿌리고, 권위는 한곳에 모아. writer 가 둘이면 이중화가 아니라, 아무도 못 끝내는 말싸움이 생겨.

Code

읽기는 어디서나, 쓰기는 한 곳에서·python
# 어떤 호스트든, 어떤 Pippa 든, 어떤 probe 든 fleet 상태를 READ 할 수 있어.
state = watchfire.read(scope="fleet")        # 싸고, 안전하고, 어디서나

# 권위 있는 WRITE 는 control-plane 호스트만 commit 해.
#   office : policy + operation 의 유일한 canonical writer
#   peers  : witness. 관찰하고 보고만, store 엔 안 씀
op = watchfire.plan_operation(kind="retire_host", target="old-laptop")
watchfire.commit(op)   # 이 프로세스가 canonical writer 아니면 거부

# logbook 은 하나, 저자도 하나.
# 없애야 할 병목이 아니라, 모든 read 를 믿게 만드는 바로 그 속성이야.

External links

Exercise

랩탑 두 대가 오프라인에서 같은 'fleet status' 노트를 각자 고치고 나서 동기화한다고 쳐. 두 사본이 어떤 기계가 retired 인지를 두고 서로 어긋나게 끝나는 편집 순서를 짜봐. 그다음 정해봐. 어느 사본이 맞고, 읽는 사람은 그걸 어떻게 알아?
Hint
데이터 안엔 승자를 가릴 규칙이 없어. last-write-wins 는 그냥 마지막에 sync 한 쪽이지 맞은 쪽이 아냐. 그 구멍을 single writer 가 정확히 막아.

Progress

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

댓글 0

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

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