기술

담당 개발자가 떠나기 전, 인수인계에서 받아 둘 것 — 문서만 봐서는 모르는 다섯 가지

2026.11.0810분 읽기

외주 개발사 담당자에게 메일을 보냈는데 일주일째 답이 없습니다. 또는 사내 개발자가 다음 달에 그만두겠다고 말합니다. 손에 남는 것은 인수인계 문서 한 묶음과 서버 접속 정보 몇 줄입니다. 문서를 넘겨 보면 빠진 것은 없어 보입니다.

문제는 몇 주 뒤에 드러납니다. 어느 새벽 자동 작업이 멈추거나, 앱 업데이트를 내려는데 만들 수가 없습니다. 인수인계 문서는 떠나는 사람이 기억나는 것을 적은 것입니다. 시스템이 실제로 기대고 있는 그 사람의 메일함·PC·기억은 문서에 잘 적히지 않습니다.

아래는 저희가 운영을 맡은 시스템들에서 실제로 본 일 다섯 가지입니다. 하나씩 무엇이 멈추는지, 왜 문서만 봐서는 모르는지를 적습니다.

인수인계 문서에 적힌 것과 시스템이 실제로 기대고 있는 것을 좌우로 비교한 그림


인증 메일이 담당자 개인 메일로 가고 있었습니다

한 고객사 시스템은 매일 새벽 외부 서비스에 자동으로 로그인해 자료를 받아 옵니다. 사람이 지켜보지 않는 작업입니다. 어느 새벽, 이 작업이 실패했습니다. 로그인 응답은 '성공'이었는데 그다음 단계에 필요한 값이 오지 않았습니다.

원인은 '2차 인증'(비밀번호 다음에 메일로 온 코드를 한 번 더 넣는 절차)이었습니다. 외부 서비스가 이 절차를 요구했고, 인증 메일은 담당자의 개인 메일로 가고 있었습니다. 비밀번호를 저장해 둬도 새벽에 그 메일을 열어 볼 방법이 없었습니다.

인증 메일이 시스템이 읽을 수 있는 메일함으로 오도록 수집 계정을 바꿨습니다. 그 메일에서 코드를 읽어 넣는 단계도 로그인 과정에 붙였습니다. 복구 뒤 빠진 자료는 없었습니다.

담당자가 퇴사해 그 메일 계정이 정지되면 그날 밤부터 같은 일이 생깁니다. 인수인계 문서에는 보통 아이디와 비밀번호만 적힙니다. 인증 메일이 누구에게 가는지는 거의 적히지 않습니다.


해 두었다는 기록과 실제 코드가 달랐습니다

저희 쪽 작업에서 생긴 일입니다. 한 회사의 사내 업무 시스템 백업을 다른 서버에도 한 벌 더 복사하는 작업이었습니다. '커밋 메시지'(코드를 바꿀 때 남기는 작업 설명)에는 복사가 실패하면 알림에 사유가 나오게 했다고 적혀 있었습니다. 실제 코드에는 그 부분이 없었습니다.

코드를 자동으로 고치던 스크립트가 중간에 실패했는데, 설명만 그대로 남은 채 저장됐습니다. 다음 작업에서 빠진 부분을 채웠습니다. 그 사이 운영 설정을 아직 바꾸기 전이라 실제 피해는 없었습니다. 막은 것은 검사가 아니라 작업 순서였습니다.

그대로 운영에 나갔다면 복사가 실패해도 알림에 사유가 나오지 않았을 겁니다. 넘겨받을 때 받는 작업 기록과 '다 해 두었습니다'라는 말은 하려던 일의 기록입니다. 실제로 된 일의 기록은 아닙니다.

그래서 첫 복사 뒤에는 파일 수와 용량 합계를 양쪽에서 맞춰 봤습니다. 일부러 실패를 만들어 알림이 오는지도 확인했습니다. 복사가 됐다는 것과 그 사본으로 되살릴 수 있다는 것은 따로 확인해야 하는 일입니다.

문서와 코드가 어긋날 때 어느 쪽을 고칠지 정한 기록도 있습니다.


예전에 뺀 조건을 다시 넣자 같은 멈춤이 생겼습니다

한 운영 시스템에는 매일 자료를 갱신하는 '배치'(정해진 시각에 자동으로 실행되는 작업)가 있습니다. 몇 해 전, 이 배치의 조회 조건에 값 하나를 넣었다가 갱신이 대량으로 멈췄습니다. 얼마 뒤 운영 쪽 요청으로 그 값을 조건에서 뺐습니다.

올해 다른 이유로 그 값이 다시 들어갔고, 멈춘 건이 다시 쌓이기 시작했습니다. 멈춘 건만이 아니라 같은 묶음에 있는 진행 중인 건까지 갱신되지 않았습니다. 예전에 왜 뺐는지는 요청 기록에만 있었고 코드에는 없었습니다.

이유가 코드 옆에 없으면, 누가 보든 같은 판단을 다시 하게 됩니다. '예전에 고쳐 달라고 해서 고친 문제가 다시 생겼다'는 말이 나온다면, 대개 그 요청의 이유가 시스템 어디에도 남지 않은 경우입니다.


앱이 개발자 PC의 임시 키로 서명되고 있었습니다

앱 설치 파일에는 '서명'(누가 만든 앱인지 증명하는 디지털 도장)이 붙습니다. 한 고객사의 관리자용 앱은 스토어를 거치지 않고, 관리자 웹에서 설치 파일을 받아 설치하는 방식이었습니다.

이 앱이 개발 도구가 처음에 만들어 주는 임시 키로 서명되고 있었습니다. 앱은 잘 설치되고 잘 동작했습니다. 그래서 아무도 몰랐습니다.

임시 키는 개발 PC마다 따로 생깁니다. 그 PC가 바뀌거나 담당자가 떠나면 같은 서명으로 업데이트를 만들 수 없습니다. 서명이 다른 설치 파일은 같은 앱의 업데이트로 받아들여지지 않습니다. 사용자 전원이 앱을 지우고 다시 설치해야 합니다.

이번에 전용 키로 바꾸면서 기존 설치자에게 한 번 재설치를 안내해야 했습니다. 사용자가 사내 관리자로 한정돼 감수할 수 있었습니다. 사용자가 많은 공개 앱이었다면 감수하기 어려웠을 겁니다.

키 파일과 그 키를 여는 비밀번호 파일은 한 묶음으로 백업했습니다. 키 설정이 없으면 앱 빌드가 멈추게 했고, 키 없이 일부러 빌드해 실제로 멈추는 것까지 확인했습니다. 스토어로만 배포하는 앱은 스토어가 이런 서명을 거절하므로 이 문제가 처음부터 생기기 어렵습니다.


외부 서비스 비밀번호가 암호화 없이 저장돼 있었습니다

운영 중인 한 시스템에서 외부 서비스 로그인 비밀번호가 데이터베이스에 그대로 저장돼 있었습니다. 시스템이 외부 서비스에 대신 로그인하려면 비밀번호를 어딘가에 갖고 있어야 합니다. 문제는 어떻게 갖고 있느냐입니다.

그대로 저장돼 있으면 데이터베이스를 볼 수 있는 사람은 누구나 비밀번호를 읽을 수 있습니다. 계정 목록을 엑셀로 내려받는 기능에도 비밀번호 열이 있었습니다. 데이터베이스만 고쳐서는 엑셀 쪽 경로가 그대로 남습니다.

비밀번호를 암호화해 저장하도록 바꾸고, 엑셀에서 비밀번호 열을 지웠습니다. 서비스를 멈추지 않고 옮겼고, 전환 중 자동 수집 실패는 없었습니다.

이런 저장 방식은 매일 쓰는 화면에는 드러나지 않습니다. 바깥 사람이 처음부터 다시 보는 검토에서 드러난 사례도 있습니다.


다섯 가지가 문서에 보이지 않았던 이유

다섯 건 모두 평소 화면에서는 아무 이상이 보이지 않았습니다. 드러난 것은 새벽 작업이 실패했을 때, 다른 일로 설정을 열어 봤을 때, 같은 사고가 두 번째 났을 때 같은 순간이었습니다.

인수인계 문서를 꼼꼼히 읽어도 이런 것은 보이지 않습니다. 문서는 무엇이 있는지를 적습니다. 그것이 누구의 메일함과 PC와 기억에 기대고 있는지는 적지 않습니다.

담당자가 떠난 뒤 메일 인증·앱 서명·조건의 이유가 각각 어디서 멈추는지 세 줄로 보여 주는 그림

그래서 넘겨받을 때 할 일은 문서를 읽는 것보다 직접 해 보는 것입니다. 회사 계정으로 로그인해 보고, 회사가 가진 저장소에서 코드를 받아 실행해 보고, 백업으로 되살려 봅니다. 도메인·서버·코드 저장소의 관리자 계정이 회사 명의인지도 같은 이유로 확인합니다.

이 확인은 떠나는 사람이 아직 연락될 때 해야 합니다. 그래야 빠진 것을 그 사람에게 물어볼 수 있습니다.


가져갈 것 — 연락이 끊기기 전에 받아 둘 것

이럴 때: 담당 개발자의 퇴사가 정해졌거나, 외주 개발사와 계약이 끝나 가거나 연락이 뜸해졌을 때입니다. 떠나는 사람이 아직 답할 수 있을 때 아래를 하나씩 확인하고 지웁니다.

연락이 끊기기 전에 받아 둘 것을 네 묶음 확인표로 정리한 그림

계정·접근

도메인·서버의 관리자 계정이 회사 명의 메일로 되어 있다

시스템이 쓰는 외부 서비스 계정의 인증 메일이 회사가 열어 볼 수 있는 메일함으로 간다

떠나는 사람의 계정과 접근 권한을 실제로 막았고, 막힌 것을 확인했다

코드·실행

코드 저장소의 소유자가 회사 계정이다

회사가 가진 저장소에서 코드를 직접 내려받아 실행해 봤다

백업이 어디 있는지 알고, 그 백업으로 되살려 봤다

앱이 있다면 서명 키 파일과 그 키를 여는 비밀번호 파일을 회사가 한 묶음으로 보관하고 있다

기록·이유

고객 요청으로 바꾼 조건과 그 이유가 코드 옆이나 회사 문서에 남아 있다

'해 두었습니다'라고 받은 항목마다 실제 화면이나 실행 결과로 한 번씩 확인했다

외부 서비스·비밀번호

시스템이 대신 로그인하는 외부 서비스 목록과 각 계정의 소유자를 받았다

그 비밀번호가 암호화되어 저장돼 있다

엑셀 내려받기 같은 다른 경로로 비밀번호가 그대로 나가지 않는다

쓰면 안 되는 경우

외부 서비스 약관이 자동 로그인을 막는다면 인증 메일을 자동으로 읽는 방식은 쓸 수 없습니다

메일함을 자동으로 읽게 하면 그 메일함 권한이 곧 2차 인증 권한이 됩니다. 이 대가를 함께 따져야 합니다

스토어로만 배포하는 앱은 임시 키 서명 문제가 처음부터 생기기 어렵습니다

사용자가 많은 공개 앱은 서명을 바꾸면 전원 재설치가 필요해 감수하기 어렵습니다


마치며

담당자가 떠나는 날보다 그 전 몇 주가 더 중요합니다. 위 확인표는 그 몇 주 동안 실무자와 대표가 함께 하나씩 지워 가는 용도입니다.

비슷한 상황이면 진단부터 받아 보세요.

#인수인계#외주개발#개발자퇴사#유지보수#시스템점검#계정관리