"적어둔 건 가설이야. 머신이 하고 있는 게 진실이고. 둘을 절대 헷갈리지 마."
허브가 존재하는 이유인 그 간격
첫 트랙에서, 허브의 핵심은 '뭐가 건강해?'에 답하는 거였어 — 북마크가 못 건드리는 질문. 여기서 그 질문이 이빨을 얻어. roster 가 'Ember 는 port 8100 에서 돈다'고 선언하는 것과 Ember 가 지금 실제로 8100 에 떠 있는 건 완전히 다른 두 사실이야. 첫째는 선언이야. 누가 한 번 적어둔 것, 여전히 참이길 바라는. 둘째는 관찰이야. host 에서, 이 순간 측정된. 선언을 보여주고 그걸 상태라 부르는 허브는 그냥 더 예쁜 북마크야.
host 에서 검증하고, 정직하게 surface 해
그래서 Firelink 는 declared state 를 가설로, observed state 를 답으로 취급해. 프로덕션 readiness, 설치된 서비스, resolve 된 URL, 발견된 버전, runtime 건강이 다 진짜 host 에서 검증되고 정직하게 surface 돼. 선언은 census 에 어디 볼지, 뭘 기대할지 말해주고; probe 는 실제로 뭐가 있는지 말해줘. 둘이 맞으면 좋고. 어긋나면, 그 불일치가 drift 야 — 덮을 에러가 아니라 first-class 사실.
왜 이 순서가 중요한가
방향이 규율이야. 관찰이 선언을 이겨, 늘. probe 가 서비스가 죽었다는데 roster 가 떠 있어야 한다면, 허브는 '선언은 up, 관찰은 down'을 보고해 — roster 를 조용히 믿고 초록불을 보이지 않아. 선언은 절대 현실을 override 못 해. 얼마나 많은 대시보드가 config 를 보여주고 그걸 건강이라 부르는지 눈치채기 전엔 뻔하게 들려. 그것들은 뭐가 돌아야 하는지를 렌더하고, 안 돈다는 걸 힘들게 알게 둬. Firelink 는 그걸 뒤집어 — 뭐가 있는지를 보여주고, 선언된 것과 갈라지는 데를 flag 해.