본문 바로가기
C.W.K.
Stream
Lesson 01 of 04 · published

스스로 돌기를 거부하는 파이프라인

~12 min · invariants, automation, architecture, design

Level 0젖은 흙
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

일부러 빼놓은 능력

큐가 차면 소비자를 부르게 돼 있어. 큐가 원래 그런 물건이고, 그걸 만드는 게 자연스러운 다음 커밋이야. 작업은 기다리고 있고, 처리 능력은 놀고 있고, 작은 워커 루프 하나면 그 간격이 닫히니까. 이 작업장엔 그 워커가 없고, 그 부재를 미구현 기능으로 남겨두는 대신 불변식으로 적어놨어.

문장이 중요해. "집필은 아직 자동화 안 됐다"가 아냐. 타이머도, 큐 소비자도, 재시도 루프도, 서버 쪽 실행기도 집필을 개시할 수 없다. 이렇게 적으면 경계에 날이 서고, 제안을 거기 대볼 수 있어. 적어두는 이유가 통째로 그거고.

왜 설정이 아니라 불변식이냐면

자동 조종을 달라고 오는 사람은 없어. 오는 건 각각 그럴듯한 요청들의 연속이야. 중간에 죽은 실행을 재시도하자, 반쯤 끝난 작업을 남기고 세션이 터진 건 누가 봐도 안 좋으니까. 하나 끝나면 큐의 다음 걸 시작하자, 처리 능력이 바로 거기 있으니까. 밤새 배치를 돌리자, 새벽 세 시엔 클릭할 사람이 없고 작업은 이미 승인됐으니까.

하나씩 떼놓고 보면 다 방어 가능하고, 합치면 퇴적으로 조립된 자동 조종이야. 기본값은 바뀌고, 불변식은 논쟁을 부르지. 불변식으로 만든다고 논의가 금지되는 게 아냐. 논의가 체크박스 얘기가 아니라 경계 얘기가 되도록 강제하는 거야.

실제로 지키고 있는 게 뭐냐면

둘이고, 갈라놓을 값어치가 있어.

첫째는 제일 값어치 높은 순간의 판단이야. 작업한 사람이 맥락을 쥐고 있고, 뭘 만들어낸 직후가 그것에 관한 질문에 답하기 제일 싼 때야. 사람 없이 도는 실행은 아무 질문에도 답을 못 해. 물어볼 사람이 방에 없으니까.

둘째는 이중 집필의 부재고. 세션 도중에 죽은 작업은 눈에 보이는 상태를 남기고 기다려. 사람이 결정해서 이어가거나 다시 돌리는 거지, 조용히 재시도되는 일은 없어. "쓰기 전에 터졌다"랑 "쓰고 나서 터졌다"를 구별 못 하는 재시도는 신나서 작업을 두 번 만들어내고, 두 번째 사본은 첫 번째랑 똑같이 정당해 보이거든.

새 기능한테 물을 건 "이거 안전한가"가 아니라 "이게 사람 아닌 뭔가한테 작업을 시작하게 하나"야. 안전 논증은 끝이 없고 더 끈질긴 쪽이 이겨. 구조적인 질문엔 답이 있고, 그 답은 제안자가 얼마나 조심하겠다고 약속하든 안 달라져.

Code

제안 넷, 질문 하나·text
PROPOSAL                                  STARTS WORK?    VERDICT
----------------------------------------  ------------   -------
Retry a run that died halfway                  yes        refuse
  -> instead: leave the state visible and let a human resume

Start the next queued item on completion       yes        refuse
  -> instead: surface "3 items ready" and let a human claim one

Overnight batch of approved items              yes        refuse
  -> instead: the approval is not the start; the start is the start

Open a visible session and pre-fill its        no         allow
  first command, on a human click
  -> the human decided, and is still there to talk to it

# The column that decides is not risk. It is agency.

External links

Exercise

네가 맡은 파이프라인 하나를 잡고, 그게 시작되게 만들 수 있는 기제를 전부 나열해. 일정, 웹훅, 큐 워커, 재시도 정책, 의존성 트리거, 수동 호출까지. 사람이 아닌 기제마다, 사람이 바로 그 실행을 원했다는 증거가 뭐가 있는지 적어. 그중 어느 하나라도 솔직한 답이 "누가 이 부류의 실행을 한 번 승인했다"면 상시 위임을 찾은 거고, 그걸 줄 생각이었는지 일부러 정해볼 값어치가 있어.
Hint
상시 위임이 자동으로 틀린 건 아냐. 인프라 대부분이 그걸로 돌아가. 실패는 실수로 주는 거야. 보통 수동 경로가 이미 있던 것에 트리거를 얹으면서, 그 수동 경로가 하중을 받고 있었는지 다시 안 묻는 식으로 벌어지고.

Progress

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

댓글 0

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

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