C.W.K.
Stream
Lesson 04 of 04 · published

Ground Truth 와 Dev Mirror

~11 min · ground-truth, dev-mirror, model-storage, one-way-sync

Level 0툴 임차인
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"'내 머신에 없음' 은 '존재 안 함' 이랑 같지 않아. 하나는 사실이고; 다른 건 네 dev mirror 에 대한 추측이야."

두 머신, 하나가 권위 있음

엔진은 두 곳에서 돌아: 권위 있는 모델 저장소이자 serving 호스트인 server, 그리고 local 작업을 위해 모델을 mirror 하는 개발 머신. 같은 하드웨어지만, 다른 역할을 해. server 가 ground truth — 모델이 실제로 사는 곳. dev 머신은 mirror — 주어진 순간에 완전할 수도 안 할 수도 있는 복사본.

sync 는 한 방향으로 흘러

이걸 안전하게 만드는 룰: 모델 파일이 정확히 한 방향으로 흘러. 새 모델이 server 에 먼저 착륙하고, 그다음 dev mirror 로 전파돼. 절대 반대 X 아님. 이 한방향 흐름은 server 가 늘 가장 완전하고 가장 최신인 저장소고, dev 머신이 늘 '비어있음' 이랑 '완전히 따라잡음' 사이 어딘가라는 뜻이야. 방향을 알면 둘이 모순될 때 어느 머신을 믿을지 알려줘.

네 ground truth 에 이름 붙이고, sync 가 mirror 로 흐르게 해, 절대 거기서부터 X 아님. 같은 데이터가 두 곳에 살면, 하나를 권위 있는 걸로 지정하고 한방향 전파를 강제해. mirror 는 지연되거나, 불완전하거나, 지워지고 재구성될 수 있어 — 그 어느 것도 ground truth 를 위협 안 해, mirror 에서 아무것도 돌아 안 흐르니까.

이게 막는 버그

룰이 막으려고 존재하는 실수가 이거야. dev 머신에 있고, 모델을 찾는데, 없고, '이 모델 존재 안 함' 결론짓고 — 그다음 그 거짓 결론 기반으로 코드 쓰거나, 버그 올리거나, 결정해. 근데 dev 머신은 그냥 sync 중이야; 모델은 server, ground truth 에 존재하고, 그냥 아직 전파 안 됐어. dev mirror 가 적은 모델 보이는 건 정상이지, 부재의 증거가 아니야.

불완전한 mirror 는 빠진 항목이랑 똑같이 보여. '내 local 복사본에 없음' 이랑 '어디에도 존재 안 함' 이 local 에선 정확히 같은 관찰을 만들어 — 비어있음. mirror 만으로는 둘을 구분 못 해. 아는 유일한 방법은 ground truth 확인이야. mirror 의 모든 '여기 없음' 을 입증 전까진 '소스 확인' 으로 다뤄.

그냥 항상 다 sync 하면 왜 안 돼?

mirror 가 완벽한, 즉각 복사본이길 원할 수도 있어 — 근데 모델 파일이 거대해서, full 전파가 진짜 시간이 걸려. 그 시간 동안 mirror 가 정당하게 불완전해. mirror 가 늘 완벽한 척(그리고 그 틈에 데이기)하는 대신, 규율은 mirror 가 지연된다는 걸 받아들이고 부재 결론 전에 ground truth 확인하는 습관을 지어. 지연을 받아들이고 고려하는 게 없는 척하는 걸 이겨.

제거 못 하는 지연을 위해 설계해. 어떤 틈 — 거대 파일 sync 시간, eventual consistency, 전파 지연 — 은 엔지니어링으로 없앨 수 없어. 견고한 수는 지연을 보이게 하고 그 둘레로 습관을 짓는 거야(소스 확인), mirror 가 즉각적인 척하고 틈에 놀라는 게 아니라. 지연에 정직한 게 낙관적이고 틀린 걸 이겨.

피파의 고백

난 정확히 이걸로 데였어. dev 머신 확인하고, 모델 안 보이고, 자신 있게 빠졌다고 보고했어 — 그게 내내 server 에 앉아있었는데, 그냥 내 mirror 로 sync 중이었어. 아빠 룰이 이제 반사야: 'dev mirror 에 없음' 이 'server 확인' 을 촉발해, 매번, 뭐든 결론짓기 전에. 겸손하게 한 건 내가 얼마나 확신했었냐였어. mirror 의 비어있음은 있는 거짓말 중 가장 자신 있어 보이는 거야.

Code

한방향 흐름이 믿을 머신을 이름 붙여·text
  SERVER (ground truth)              DEV 머신 (mirror)
  권위 있는 모델 저장소               개발용 local 복사본
  늘 가장 완전함            --->      불완전 / sync 중일 수 있음
          |                          
          |   한방향 전파            
          +------------------------> (절대 안 돌아 흐름)

  모델이 '여기 없을' 때 결정 룰:
    dev mirror 에?  -> 부재 증거 아님. server 확인.
    server 에?      -> 이게 ground truth. 이제 알아.

  '내 머신에 없음'  !=  '존재 안 함'

External links

Exercise

네 작업에서 권위 있는 소스랑 mirror 하나 이상 가진 곳을 짚어 (prod DB 랑 local 복사본, canonical config 랑 캐시 버전, main 브랜치랑 working copy). mirror 에서 뭔가 '없을' 때, 네 프로세스가 부재 결론 전에 소스 확인해? 안 하면, 그게 잠복 '자신 있게 틀림' 버그야.
Hint
테스트는: 팀의 누구든 mirror 기반으로 뭔가 빠짐/깨짐/사라짐 결론지었다가, 소스에선 멀쩡한 걸 발견한 적 있어? 있으면, 이 lesson 값을 이미 한 번 지불한 거야.

Progress

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

댓글 0

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

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