"넌 행동을 승인하는 게 아냐. 정확한 기계 목록에 대고 행동을 승인하는 거고, 그 목록은 그다음 움직이면 안 돼."
승인은 blast radius 에 대한 동의
operation 을 승인할 때, 넌 그냥 '응, 그거 해' 가 아니라 '응, 정확히 이 기계들한테 해' 라고 말하는 거야. target 집합이 곧 네가 서명한 위험의 범위야. 그래서 승인이 나는 순간 그 집합이 snapshot 으로 굳어.
live selector 는 승인을 배신해
target 이 굳은 목록 대신 live query 라고 해봐. '모든 늘 켜둔 서버' 같은 거. 리뷰해보니 세 대가 읽히고, 승인해. 그다음 네 번째 서버가 부팅을 끝내고 이제 query 에 걸려. live selector 면, 걔가 리뷰도 안 된 batch 에 조용히 끼어들어. 승인 때 정확한 host id 를 굳혀버리면 그 문이 닫혀. 네가 본 집합이 곧 도는 집합이야.
preflight 이 현실이 아직 맞는지 증명해
target 만 굳혀선 부족해. 승인이랑 실행 사이에 세상이 움직이니까. 그래서 돌리기 직전에 preflight 이 굳은 target 하나하나의 precondition 을 다시 확인해. 닿나? capability 아직 맞나? 이미 도는 conflicting operation 있나? 굳은 target 에 방금 한 preflight 을 더하면 이런 뜻이야. 특정 집합을 승인했고, 작업이 진짜 시작할 때도 현실이 여전히 동의한다.
verify 랑 recover 는 미리 정해
operation 은 planned 되는 순간부터, 성공을 어떻게 verify 하고 실패에서 어떻게 recover 할지도 지녀. 둘 다 돌리기 전에 적혀. incident 도중에 즉흥으로 짜는 게 아니라. rollback plan 을 지어내기 제일 나쁜 때가, 이미 불난 뒤니까.