C.W.K.
Stream
Lesson 01 of 05 · published

한 비트짜리 거짓말

~9 min · boolean-insufficient, health, policy

Level 0Lone Machine
0 XP0/37 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"'online 이야?' 는 틀린 질문이야. 맞는 질문은 '있어야 할 상태야?' 야."

한 비트짜리 거짓말

세상에서 제일 자연스러운 fleet 필드는 online: true 야. 완전해 보여 — 기계가 떴거나 안 떴거나. 근데 거짓말이야, 같은 비트가 어느 기계가 걸치느냐에 따라 정반대를 뜻하거든.

같은 비트, 반대 의미

항상 켜진 서버가 online: false 면 alarm 이야 — 깨어날 만한 일. 여행용 랩탑이 online: false 면 그냥 화요일이야 — 가방 속에서, 계획대로 자는 중. boolean 은 그 둘을 못 갈라. 서버는 떠 있어야 하고 랩탑은 자도 된다는 걸 아는 policy 만이, 똑같은 하나의 fact 를 두 개의 다른 verdict 로 바꿀 수 있어.

비트가 조용히 숨기는 것

기계가 도달 가능할 때조차, 비트 하나는 알 가치 있는 걸 전부 지워: 도달되지만 빌드 한 칸 뒤처짐; 한 경로로는 닿고 다른 경로로는 죽음; 떠 있지만 drift; 떠 있지만 backup 서비스가 3주 전 조용히 unload 됨. online 은 열두 개의 다른 질문을 하나도 안 푸는 한 답으로 뭉개.

해법은 더 영리한 비트가 아니라 더 많은 축

더 영리한 boolean 을 발명해서 구하는 게 아냐. 하나의 질문을 둘로 쪼개서 구해 — 이 기계는 어떤 상태여야 하나?우리가 실제로 뭘 봤나? — 그리고 둘에서 verdict 를 계산해. 그 쪼개기가 이 트랙의 나머지야.

health 는 읽기값이 아니라 verdict 야. 어떤 단일 측정도, policy 가 그 측정이 뭐였어야 하는지 말하기 전엔 건강하지도 안 건강하지도 않아.

Code

두 가지를 뜻하는 비트·python
alive = ping(host)   # True / False. 그래서 뭐?

# alive == True, 매일 밤 backup 이 3주 전 죽은 서버에서
#          -> 대시보드는 "괜찮음" 이라고 해
# alive == False, 계획대로 비행기에서 자는 랩탑에서
#          -> 대시보드는 "다운" 이라고?
#
# 비트는 똑같고, 의미는 반대야. 비트를 영리하게 만들어서
# 못 고쳐. 하나 대신 질문 둘을 던져서 고쳐:
#   1. 이 기계는 어떤 상태여야 하나?   (desired)
#   2. 우리가 실제로 뭘 관찰했나?       (observed)
# health 는 그 쌍에서 계산하는 거야 -- ping 하나가 절대 아니라.

External links

Exercise

네가 돌리는 기계 하나를 잡아. 맨 위에 'online: true' 라고 써. 이제 그 줄이 문자 그대로 참인 채로 그 기계가 지금 가질 수 있는 진짜 문제 다섯 개를 나열해. 다섯 중 몇 개를 실제로 통보받고 싶어?
Hint
디스크 참, 틀린 빌드, 죽은 서비스, wifi 는 되고 VPN 은 안 됨, 시계 틀어짐. 'online' 은 다섯 개를 다 명랑하게 숨기고 초록 점을 보고해.

Progress

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

댓글 0

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

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