"'모르겠다'도 답이야. 그 말을 못 하는 시스템은 대신 거짓말을 해."
참·거짓 하나론 부족해
'떠 있어?' 를 담는 제일 쉬운 방법은 참이냐 거짓이냐지. 그게 함정이야. 진짜로 다른 사실 셋을 조용히 뭉개거든. running 은 떠 있고 확인까지 됐다는 뜻. stopped 은 진짜 죽었다는 뜻. missing 은 아예 안 깔렸다는 뜻이고. 그리고 참·거짓엔 자리가 없는 네 번째가 있어. unknown, 그러니까 probe 가 답을 못 냈다는 것. 둘 중 하나로 우겨넣으면 거짓말을 고르게 돼. 모르는 걸 죽었다고 하거나 살았다고 하거나. 둘 다 언젠가 딱 나쁜 순간에 누군가를 헷갈리게 만들어.
Firelink 는 넷을 다 갈라놔. 'host 에 못 닿았다' 는 '서비스가 죽었다' 가 아냐. 'health 경로가 시간 초과됐다' 는 '앱이 안 깔렸다' 가 아니고. 각각 다음에 할 일이 다르니까, 뭉치면 사람이 필요로 하는 정보가 사라져.
본 건 전부 언제 봤는지를 달고 다녀
시각이 없는 관찰은 소문이야. census 가 남기는 사실마다 measured_at 이랑 어느 probe 가 봤는지가 붙어 있어. 그래야 읽는 사람이 뭘 봤는지만이 아니라 언제, 뭘로 봤는지까지 알지. 오래된 값이 틀린 건 아니야. 다만 자기 나이를 밝혀야 해. '8분 전 기준으로 살아 있음' 이랑 '방금 확인했는데 살아 있음' 은 전혀 다른 말이거든. 그 차이를 감추는 게 대시보드가 슬금슬금 소설이 되는 방식이야.
남이 본 걸 내가 본 것처럼 걸치지 마
이 정직함은 주인 경계를 넘어서도 그대로야. Firelink 는 Watchfire 가 본 host 도달 여부를 읽기 전용으로 얹어 보여줄 수 있어. 대신 Watchfire 가 언제 본 건지 그 시각을 그대로 달고, Firelink 가 방금 잰 것처럼 꾸미지 않아. 남의 관찰을 빌려다 내 실시간 측정인 척하는 건, 이 값이 얼마나 신선하고 누구 것인지에 대한 미묘한 거짓말이거든. Watchfire 것은 Watchfire 것으로, 그쪽 시각을 붙여서 보여줘. 사실 하나에 주인 하나는 적힌 것뿐 아니라 본 것에도 그대로 적용돼.