본문 바로가기
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 면 큰일이야. 당장 깨어나야 할 일. 여행용 랩탑이 online: false 면 그냥 평범한 화요일이야. 가방 속에서 계획대로 자는 중이니까. boolean 은 이 둘을 못 갈라. 서버는 떠 있어야 하고 랩탑은 자도 된다는 걸 아는 policy 만이, 똑같은 하나의 사실을 서로 다른 두 판단으로 바꿔.

비트가 조용히 숨기는 것

기계가 닿을 때 조차, 비트 하나는 알아야 할 걸 전부 지워. 닿긴 하는데 빌드가 뒤처졌거나, 한 경로로는 닿고 다른 경로로는 죽었거나, 떠 있는데 drift 났거나, 떠 있는데 backup 서비스가 3주 전 조용히 내려갔거나. online 은 서로 다른 열두 질문을 하나도 못 푸는 답 하나로 뭉개.

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

더 똑똑한 boolean 을 만들어서 될 일이 아냐. 질문 하나를 둘로 쪼개서 풀어. 이 기계는 어떤 상태여야 하지?우리가 실제로 뭘 봤지?. 그리고 그 둘에서 판단을 계산해. 그 쪼개기가 이 트랙 나머지 전부야.

health 는 읽어오는 값이 아니라 내리는 판단이야. 어떤 측정값도, 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

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

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