서효다의존 실측

기대던 서비스가 사라지면
거기 기댄 코드가 전부 드러납니다.

로그인을 맡기고 있던 외부 서비스가 어느 날 없어졌습니다. 하루 만에 직접 만든 로그인으로 갈아탔고, 7일 뒤에 미처 안 옮겨진 자리 둘을 찾았습니다. 갈아타는 것보다 다 갈아탔는지 아는 것이 어려웠습니다 — 그 기록입니다.

01 사건

바꾸는 데 걸린 시간은 하루였습니다

5먼저 잠근 자리 — 로그인 없이 쓰거나 지우지 못하게
20직접 만든 로그인으로 교체 (+264 / −461줄)

지운 줄이 더한 줄보다 많습니다. 외부 서비스에 맞추느라 있던 코드가 그만큼이었다는 뜻입니다. 남의 규칙에 맞추는 부분이 통째로 없어졌습니다 — 직접 하니 오히려 짧아졌습니다. 물론 이 정도 규모에서 그렇다는 뜻입니다.

실제로 필요한 것은 「지금 로그인한 사람이 누구인지」를 위조할 수 없게 기록해두는 것 하나와, 그것을 서버가 매번 확인하는 것 하나였습니다. 그리고 들어가기·나가기·지금 누구인지, 셋. 그게 전부였습니다 — 처음부터 이렇게 만들 수 있었느냐는 다른 질문입니다.

02 순서

문을 먼저 잠그고 자물쇠를 바꿨습니다

같은 날 한 두 가지 작업의 순서가 중요합니다. 먼저 로그인 없이는 아무것도 쓰거나 지울 수 없게 막았고, 그다음에 로그인 방식을 바꿨습니다.

반대로 했으면 그 사이에 아무나 들어올 수 있는 시간이 생깁니다. 기대던 서비스가 이미 죽어 있으니 「예전 잠금이 아직 걸려 있겠지」는 성립하지 않습니다 — 죽은 자물쇠는 잠근 것이 아닙니다.

갈아타는 일에서 가장 위험한 순간은 「옛것을 떼고 새것을 붙이기 전」입니다. 그 틈을 없애려면 먼저 막고 나서 바꿉니다.

03 남은 자리

7일 뒤에 옮겨지지 않은 둘을 찾았습니다

7일바꾼 날부터 찾아낸 날까지
2안 옮겨진 채 남아 있던 페이지
7그 안에 남아 있던, 없어진 서비스를 부르는 자리

로그인 확인을 한 곳으로 모아뒀는데, 그 자리를 안 거치고 직접 물어보던 페이지 둘이 남았습니다. 이미 없어진 서비스에 「지금 누가 로그인했나」를 묻고, 아무 답도 없으니 이름 자리가 빈 채로 화면이 떴습니다.

그 페이지로 가는 링크가 어디에도 없었습니다. 들어갈 길이 없으니 쓰는 사람도 없고, 깨졌다고 말해줄 사람도 없었습니다. 아무도 안 가리키는 페이지는 조용히 깨진 채로 남습니다.

왜 7일이나 걸렸나 — 찾아볼 이유가 없었기 때문입니다. 오류가 뜨는 것도 아니고, 들어가는 사람도 없고, 확인하는 장치도 없었습니다. 결국 다른 일을 하다가 우연히 눈에 걸렸습니다.

04 범위

「고쳤다」가 어디까지인지 적습니다

로그인 안 한 사람이 들어오면 로그인 화면으로 보내도록 한 줄을 넣었습니다. 확인해보니 절반만 막혔습니다.

사람브라우저로 들어가면 로그인 화면으로 튕긴다 ✓
기계서버가 내보내는 원본은 그대로 나간다 ✗

그 튕김은 화면이 이미 뜬 다음에 일어납니다. 서버는 여전히 같은 내용을 그대로 내보내고 있습니다. 사람은 막혔고 기계는 안 막혔습니다.

서버에서 아예 막으려면 들어오는 요청을 하나하나 걸러야 하고, 그건 따로 판단이 필요한 일입니다. 그래서 「여기까지 했다」고 적어둡니다 — 어디까지인지 없이 「고쳤다」고만 적으면, 다음 사람은 다 막힌 줄 압니다.

05 요지

갈아타는 것보다 다 갈아탔는지 아는 것이 어렵습니다

바꾸는 것 자체는 하루였습니다. 남은 자리를 찾는 데 7일이 걸렸고, 그것도 우연이었습니다. 차이는 «찾아낼 방법이 있었는가» 하나입니다.

기대던 것을 걷어낼 때 세 가지를 같이 하면 이 7일이 줄어듭니다 — 먼저 막고 나서 바꾸고, 옛 자리가 남았는지 세어보는 방법을 만들고, 아무도 안 가리키는 페이지를 목록으로 뽑아둡니다. 마지막이 제일 자주 빠집니다. 들어갈 길이 없는 페이지는 있다는 사실 자체를 잊어버리기 때문입니다.

이 문제 한 장으로 /lp/deploy 배포 쪽 기록 /ship
사람이 읽는 것지금방법증거할 수 있는 것과 없는 것
깊이 보는 것숙박 운영을 시스템으로기록이 남는 곳발견되지 않는 이유띄우는 데서 막히는 자리지식이 흩어지는 자리없어도 돌아가게 만드는 자리AI가 실제 일에 붙는 자리기대던 것이 사라졌을 때BOM·ECO 를 그래프로검사가 보는 층만 살아남습니다
왜 여기서 멈추는 걸까요했던 걸 또 하고 있습니다제가 없으면 안 돌아갑니다다 만들었는데 띄우지를 못합니다잘 만들었는데 아무도 모릅니다AI를 배웠는데 정작 일에는 안 씁니다
다른 언어Seo Hyoda
AI·검색이 읽는 곳기계가 읽는 것

이 지도는 실제로 배포된 페이지에서 생성됩니다. 손으로 든 목록이 아닙니다.