배포를 진행하던 중 서버 전체가 외부에서 보이지 않는 상황이 생겼어요. 화면이 열리지 않았고 관리 접속도 닿지 않았어요. 앱을 바꾸는 작업과 서버 환경을 바꾸는 작업이 함께 묶인 상태에서 문제가 커졌어요. 밖에서 보이는 현상만으로는 어디서 시작됐는지 확정할 수 없었어요.

그 시점에 할 수 있는 일은 복구했다고 말하는 것이 아니었어요. 확인한 사실과 추정을 나누고 서버 담당자가 이어받을 수 있도록 정리했어요. 서비스 주소와 관리 접속이 모두 닿지 않는다는 사실, 원천을 읽는 다른 작업은 계속된다는 사실을 구분했어요. 추정 원인을 확정된 설명처럼 쓰지 않았어요.

Labs의 현재 운영 화면과 자료 상태
Labs의 현재 운영 화면과 자료 상태 · 현재 화면, 2026-10-08 · 예시 데이터화면 크게 보기

새 화면을 띄우기 전에 남아 있는 기반을 확인했어요

기존 서버를 대신할 환경을 준비할 때도 전체를 그대로 옮기는 방식으로 보지 않았어요. 남아 있는 코드와 자료, 새 환경에서 다시 연결해야 할 부분, 현재 접근할 수 없는 상태를 나눴어요. 돌아온 화면이 어떤 자료를 읽는지도 함께 확인해야 했어요.

첫 실행에서는 준비한 앱이 새 환경에서 시작되지 않았어요. 이때 공개 연결을 서두르지 않고 실행 문제를 먼저 해결했어요. 일부 부가 화면이 열리지 않은 경우도 앱 전체 실패로 묶지 않고 그 화면의 접근 조건을 확인했어요. 한 단계가 확인되기 전에 다음 단계를 완료로 보고하지 않았어요.

첫 화면이 열린 뒤에도 로그인과 보호된 자료가 아직 연결되지 않은 단계가 있었어요. 겉으로는 서비스가 살아난 것처럼 보여도 사용자는 기존 일을 할 수 없었어요. 실행 기반의 복구와 실제 업무의 복구를 따로 기록해야 했어요.

문제와 판단의 흐름
문제와 판단의 흐름도식 크게 보기

자료 공급이 연결된 뒤에는 최신 목록이 전달되는지, 자동 실행이 다음 주기에도 이어지는지 확인했어요. 필요할 때 이전 상태로 돌아갈 수 있는지도 함께 살폈어요. 복구 직후 한 번의 정상 응답만으로 계속 운영 가능한 상태라고 말하지 않았어요.

처음 진단에서 복구를 완료하지 못했다는 사실을 남긴 이유는 책임을 설명하기 위해서예요. 밖에서 읽을 수 있는 근거만으로 서버 안의 상태를 확정할 수 없었어요. 그 한계를 정리해야 다음 담당자가 다시 같은 추정을 확인하는 시간을 줄일 수 있어요.

첫 화면 복구와 후속 변경을 나눠 기록해요
첫 화면 복구와 후속 변경을 나눠 기록해요 · 화면 재구성화면 크게 보기

새 환경의 각 단계에서는 아직 하지 않은 일을 분명하게 적었어요. 첫 화면이 열렸을 때는 자료와 인증 연결이 남았고, 자료가 전달됐을 때는 실제 사용자 진입과 다음 자동 실행이 남았어요. 단계마다 남은 항목이 달라졌다는 기록이 복구의 실제 진행표였어요.

문서의 옛 기준도 운영 상태와 별개로 방치하지 않았어요. 현재 서비스가 정상이어도 다음 작업자가 이전 절차를 실행하면 또 다른 장애가 생길 수 있어요. 복구 이후 어떤 범위에서 변경할지를 인계하는 과정까지 읽어야 다음 개발을 안정적으로 시작할 수 있었어요.

앱 변경과 기반 변경의 책임을 나눴어요

후속 배포는 앱을 바꾸는 범위와 서버 기반을 바꾸는 범위를 분리했어요. 화면의 작은 수정이 서버 전체의 변경으로 이어지지 않도록 한 판단이었어요. 복구 이후 다시 일상적인 변경을 안전하게 이어가기 위해 필요한 경계였어요.

문서에 남아 있는 옛 주소와 이전 절차도 확인했어요. 실제 서비스는 새 환경에서 돌아가는데 다음 작업자가 옛 문서를 현재 기준으로 읽으면 같은 문제가 반복될 수 있었어요. 실행 기록과 문서가 말하는 현재 상태를 맞추는 작업도 복구의 일부였어요.

기록에는 운영 화면과 자료 전달, 실제 자동 주기의 성공이 남아 있어요. 그러나 실제 사용자의 비밀번호 입력부터 마지막 행동까지 모두 관찰한 것은 아니었어요. 재구축 뒤 새 예약 체인이 첫 무인 실행을 끝내는 확인도 해당 시점에는 남은 일이었어요. 다른 서비스의 미완료 연결을 이번 복구 성과에 넣지 않았어요.

이 사건에서 배운 과정은 서비스를 한꺼번에 살려 내는 요령이 아니었어요. 무엇이 돌아왔고 무엇은 아직인지 작게 구분하면서 다음 확인을 이어가는 방식이었어요. 사용자에게 중요한 것은 화면 한 장의 복귀보다 기존에 하던 일을 다시 할 수 있는지였어요.

복구를 관리하는 입장에서도 같은 질문이 필요했어요. 지금 확인한 정상은 입구의 정상인지, 로그인과 자료의 정상인지, 다음 실행까지 이어지는 정상인지 구분해야 했어요. 그 구분이 있어야 다음 담당자도 완료 표시를 믿고 이어받을 수 있었어요.