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

클릭은 크론이 아니야

~11 min · automation, security, architecture, dispatch

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

축은 하나가 아니라 둘이야

"자동화됐다"는 독립적인 질문 둘을 한 단어로 뭉개고, 그 둘을 갈라놓는 게 이 경계를 그릴 수 있게 만들어. 이렇게 물어봐. 바로 이 실행이 벌어져야 한다고 누가 정했나, 그리고 도는 동안 그 사람이 그 자리에 있나.

디스패치 버튼을 누르는 사람은 둘 다 사람이야. 일정은 첫 번째가 기계고 두 번째는 대개 부재고. 결정은 설정 시점에 한 번, 일반적으로 내려졌고, 나중에 아무도 안 본 특정 실행에 적용되지. 그게 상시 위임이고, 일부러 주는 건 아주 정상적인 일이야. 실패는 실수로 주는 거고, 그건 "자동화됐다"를 성질 하나로 취급할 때 벌어져.

디스패치한테 허용된 것

허용된 동작은 좁고, 정확히 적을 값어치가 있어. 명시적인 사람의 동작이 있을 때, 수명 짧고 불투명하고 한 번만 쓰이는 티켓을 로컬 기계한테 넘겨. 그 기계가 보이는 대화형 세션을 열고, 맞는 프로젝트를 물리고, 첫 명령을 준비해둬. 그리고 멈춰. 그 세션은 세션이야. 사람이 읽을 수 있고, 끊을 수 있고, 따질 수 있어.

이건 프로세스 실행이지 자율 작업이 아냐. 구별이 살아남는 이유는 디스패치가 못 하는 것들에 있어. 어떤 항목을 돌릴지 안 정하고, 세션이 열린 뒤엔 아무것도 안 돌리고, 재시도 안 하고, 클릭 말곤 아무것도 이걸 발동시킬 수 없어.

티켓이 수명 짧고 불투명하고 일회용인 이유

성질마다 구멍을 하나씩 닫아. 수명이 짧다는 건 내일 새는 티켓은 값어치가 없다는 뜻이야. 불투명하다는 건 작업 서술을 안 싣는다는 뜻이고. 받는 쪽이 그걸 진짜 페이로드로 교환하니까, 티켓만 쥔 공격자는 뭘 하고 있는지 아무것도 알 수 없어. 일회용이라는 건 소비하면 무효가 된다는 뜻이야. "같은 실행을 두 번 재생했다"가 가능성에서 로그로 보이는 오류로 바뀌지.

그중 어느 것도 클릭하는 사람을 못 믿어서가 아냐. 디스패치 경로는 바깥 행위자가 세션을 시작시킬 수 있는 유일한 자리라서, 시스템에서 제일 좁은 표면이어야 하는 거야.

"누가 정했나"랑 "누가 그 자리에 있나"를 따로 물으면 자동화라는 단어가 쓸모없어지고, 그게 요점이야. 자동화를 둘러싼 논쟁은 대부분 두 사람이 같은 단어로 서로 다른 사분면을 가리키는 거고, 사분면에 이름을 붙이는 순간 논쟁이 풀려.

Code

실행 티켓 — 안 들어 있는 게 전부 의도야·text
{
  "token": "opaque-random-string",
  "expires_at": "2026-08-07T09:12:00Z",
  "consumed": false
}

// What is NOT here:
//   - which item is being worked on
//   - which pipeline, which target, which reviewer
//   - any credential, path, or host
//
// The receiver exchanges the token for the payload over an
// authenticated call. Holding the ticket proves someone clicked;
// it does not describe what they clicked, and it stops proving
// anything at all once it is consumed or expires.
//
// Consuming is a state transition, so a replayed launch is not a
// silent duplicate - it is a 409 with a log entry attached.

External links

Exercise

사분면 넷을 그려봐. 사람이 정했나 기계가 정했나, 사람이 있나 없나. 그리고 네가 다루는 시스템 하나의 자동 경로를 전부 배치해. 그다음 기계가 정하고 아무도 없는 사분면만 보면서, 각 항목이 제일 나쁜 순간에 발동하면 뭘 만들어낼지 한 문장씩 적어. 답이 뭘 옮기거나 확인하는 게 아니라 내용물을 만들거나 공개하는 쪽이면 관문 후보야.
Hint
제일 나쁜 순간은 대개 편집 도중이야. 반쯤 쓰인 파일, 일부만 갱신된 레코드, 존재하지만 안 끝난 브랜치. 기계적인 경로는 그 상태를 견디거나 시끄럽게 실패하는데, 생산하는 경로는 그걸 최종본인 양 집어삼키는 경향이 있어.

Progress

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

댓글 0

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

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