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

폐기는 사건이 아니라 불변식이야

~10 min · decommission, invariant, stays-green, doctrine

Level 0차가운 부싯돌
0 XP0/34 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"옛것을 지운 날 제거를 끝낸 게 아냐. 사라진 채로 있는 매일 제거를 끝내는 거야."

삭제는 폐기가 아냐

Track 1 이 옛 TextForge 기계를 은퇴시켰어. 근데 어느 하루의 삭제는 유지되는 폐기와 같지 않아. 삭제는 사건이고; 폐기는 참으로 유지해야 하는 상태야. 옛 도구엔 서버, 포트, 런치 잡, 래퍼, 환경이 있었고 — 그중 뭐든 누구도 의도 안 하고 돌아올 수 있어: 환경을 재생성하는 스크립트, 버릇으로 다시 더한 런치 잡, 무관한 변경 뒤 다시 리스닝 시작한 포트. 제거는 참으로 남는 동안만 참이야.

기계는 되기어들어

옛 인프라엔 중력이 있어. 스크립트에서 참조되고, 근육 기억에 기억되고, 예전에 됐으니까 되살리기 쉬워. 그게 정확히 '우리 지웠어' 가 약한 보증인 이유야: 돌아오는 데 아무도 되가져오기로 결정할 필요 없어 — 자동화된 프로세스나 무심한 명령이 할 수 있어. 한 번 제거했으니 레거시가 사라졌다 다루는 게 몇 달 뒤 그림자 런타임이 조용히 다시 나타나, 리메이크가 끝냈어야 할 일을 하는 법이야.

초록으로 남는 가드

그래서 폐기는 계속 통과해야 하는 확인으로 강제돼: 도는 레거시 프로세스 없음, 등록된 레거시 런치 잡 없음, 옛 포트에 리스닝 없음, 재생성된 래퍼나 환경 없음. 맨 첫 폐기 검증과 같은 아이디어지만, 상설 불변식으로 승격 — 다시 돌리고 초록을 기대하는 것, 한 번 체크한 상자가 아니라. 스케줄로 검증하는 제거가 제거된 채로 남는 제거야.

폐기 가드 (시간에 걸쳐 초록으로 남아야 함)
---------------------------------------------
레거시 프로세스 없음     pgrep -> 빔
레거시 런치 잡 없음      launchctl list -> 빔
옛 포트 리스닝 없음      lsof :옛_포트 -> 빔
래퍼 / 환경 없음         재생성? -> 아니오

한 번 초록은 삭제. 스케줄로 초록은 폐기.
제거는 지속적으로 사라졌다 검증돼야만 진짜야. 뭘 지우는 건 일회성 행동이고; 지워진 채로 두는 건 불변식이야. 자동화, 버릇, 흘러든 명령으로 되살아날 수 있는 뭐든엔, '제거' 하는 정직한 방법은 돌아오면 실패하는 확인을 더하고, 그 확인을 시간에 걸쳐 도는 거야. 검증 안 하는 상태는 그냥 바라는 상태고 — 옛 기계는 바람으로 사라진 채 안 남아.
이건 '런타임 폴백 없음' 의 뒷면이야. Track 1 은 레거시가 절대 폴백이면 안 된다고 했고, 어떤 코드 경로도 못 되살리게 심링크 없이 아카이브했어. 이 레슨은 운영 절반이야: 코드가 실행 불가여도, 프로세스, 포트, 잡이 다른 경로로 되기어들지 않았는지 여전히 검증해. 벨트와 멜빵 — 코드에서 부활을 불가능하게 하고, 그래도 안 일어났는지 확인해.

Code

상설 폐기 가드 — 영원히 비어 있길 기대·bash
#!/usr/bin/env bash
# 스케줄로 돌려. 비어있지 않은 결과는 레거시 런타임이 되기어들었고
# 폐기 불변식이 깨졌다는 뜻.

fail=0
pgrep -f 'textforge'            && { echo '레거시 프로세스 살아있음';  fail=1; }
launchctl list | grep -i textforge && { echo '레거시 런치 잡';  fail=1; }
lsof -i :8510 -i :8520 2>/dev/null && { echo '레거시 포트 리스닝'; fail=1; }

[ "$fail" = 0 ] && echo '폐기 초록: 레거시 죽은 채로'
exit "$fail"

# 한 번 초록은 삭제. 돌릴 때마다 초록은 폐기.

External links

Exercise

여섯 달 전 코드를 지워 도구를 폐기했어. 오늘 누가 옛 서비스가 다시 돈다고 신고해. '지웠는데' 도 그게 어떻게 가능한지 설명하고, 돌아올 수 있었던 구체적 벡터 셋을 이름 붙이고, 여섯 달 뒤가 아니라 돌아온 날 잡았을 가드를 묘사해.
Hint
코드 삭제가 모든 흔적을 없애진 않아: 환경이 셋업 스크립트로 재생성되고, 런치 잡이 기억이나 옛 dotfile 로 다시 더해지고, 포트가 부활한 프로세스로 다시 바인드돼. 돌아온 건 '삭제됨' 이 검증된 상태가 아니라 사건이었으니까. 가드는 어떤 레거시 프로세스, 런치 잡, 리스닝 포트에도 실패하는 스케줄된 확인이야 — 시간에 걸쳐 돌면 '우리 지웠어' 를 '지금 없다고 검증됨' 으로 바꿔, 6개월이 아니라 첫날에 기어듦을 잡아.

Progress

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

댓글 0

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

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