알림 없이 2시간 멈춘 서비스: 자동화가 조용히 멈추지 않게 하는 법

API 서버가 2시간 멈췄지만 오류가 하나도 없어서 알림도 없었습니다. 헬스체크를 나누고 데드맨 알림을 넣어, 신호가 끊기면 외부 감시 서비스가 알립니다.

알림 없이 2시간 멈춘 서비스: 자동화가 조용히 멈추지 않게 하는 법

RankBoard가 2시간 동안 멈춰 있었는데 알림은 한 건도 오지 않았습니다. 서버 프로그램은 오류 없이 돌고 있었고, 요청을 받을 곳만 사라진 상태였습니다. 이렇게 조용히 멈추는 일을 막으려면 "오류가 나면 알리는 장치"와 "정상 신호가 안 오면 알리는 장치"를 함께 둬야 합니다. 장애 원인과 그 뒤에 만든 알림 체계를 적고, 매일 도는 업무 자동화에 같은 장치를 넣는 방법도 이어서 정리했습니다.

알림 없이 멈춘 2시간

RankBoard의 API 서버는 앞단의 프록시가 주기적으로 상태를 확인합니다. 이 확인(헬스체크)에 실패한 서버는 요청을 받지 못하도록 빠집니다. 서버가 여러 대라면 고장 난 한 대만 빠지고 나머지가 일을 계속합니다.

문제는 그때 서버가 한 대뿐이었다는 점입니다. 헬스체크가 실패하자 유일한 서버가 빠졌고, 요청을 받을 곳이 없어졌습니다. 서버 프로그램 자체는 오류 없이 돌고 있었기 때문에 오류 알림은 오지 않았습니다. 서비스는 그렇게 2시간 동안 알림 없이 멈춰 있었습니다.

그 뒤에 무엇을 만들었나요?

헬스체크를 나눴습니다. 프록시가 서버를 뺄지 판단하는 확인을 다른 상태 확인과 분리해, 유일한 서버가 쉽게 빠지지 않게 했습니다.

장애 전에 오는 신호에 알림을 걸었습니다. 검색 장애 때처럼 디스크 입출력이 한도에 가까워지면 멈추기 전에 알림이 옵니다.

데드맨 알림을 넣었습니다. 정해진 시간마다 "살아 있다"는 신호를 보내고, 신호가 끊기면 외부 감시 서비스가 알립니다. 서버가 통째로 멈춰 오류조차 보낼 수 없을 때도 알 수 있습니다.

점검 플래그를 만들었습니다. 문제가 생기면 스위치 하나로 앱에 점검 안내를 띄웁니다. 사용자가 원인 모를 오류 화면을 보지 않게 됩니다.

5분 런북을 썼습니다. 증상별로 무엇을 어떤 순서로 확인할지 적은 짧은 문서입니다. 새벽에 알림을 받아도 생각하지 않고 순서대로 따라갈 수 있습니다.

TIP자동화를 맡길 때 "자동화가 아예 안 돌았으면 누가 언제 알게 되나요?"라고 물어보세요. "오류가 나면 메일이 갑니다"라는 답이라면, 실행 자체가 안 된 경우는 빠져 있을 수 있습니다.

업무 자동화는 어떻게 조용히 멈추나요?

매일 아침 주문을 모으거나, 정해진 시간에 전표를 넣는 자동화는 사람이 지켜보지 않습니다. 그래서 멈춰도 한동안 모릅니다. 흔한 경우는 이렇습니다.

멈추는 이유 오류 알림이 오나요? 알게 되는 때
쇼핑몰 비밀번호나 API 키 만료 설정에 따라 다름 담당자가 주문이 안 모인 걸 볼 때
실행하는 PC나 서버가 꺼짐 오지 않음 며칠 뒤 누락을 발견할 때
쇼핑몰 엑셀 양식 변경 열 이름이 바뀌면 조용히 빈 값 거래처가 물어볼 때
처리할 건이 0건으로 나옴 오지 않음 (정상처럼 보임) 마감 때

실행 자체가 안 되거나 0건으로 끝나는 경우가 가장 위험합니다. 오류로 잡히지 않아서 아무 알림도 오지 않습니다.

자동화에 넣는 감시 장치

  • 실행 신호: 자동화가 끝날 때마다 처리 건수와 함께 신호를 남기고, 정해진 시간까지 신호가 없으면 담당자에게 알립니다.
  • 평소와 다른 건수 알림: 평일 아침인데 주문이 0건이면 오류가 없어도 알립니다.
  • 양식 확인: 엑셀 열 이름이나 순서가 바뀌면 처리하지 않고 멈춘 뒤 알립니다.
  • 대응 문서: 증상별 확인 순서를 적은 런북을 운영 문서와 함께 넘깁니다.

이 장치들은 자동화 견적 체크리스트에서 말한 운영 범위에 들어갑니다. 구축 비용만 비교하면 빠지기 쉬운 부분이라 견적서에 따로 적어 드립니다.

정리하면

오류 알림만으로는 아예 안 돈 경우를 놓칩니다. RankBoard의 2시간은 오류가 하나도 없는 장애였습니다. 매일 도는 자동화일수록 "안 돌았을 때"를 먼저 생각하고 만들어야 합니다.

자주 묻는 질문

자동화가 멈추면 어떻게 알 수 있나요?

오류가 났을 때 알리는 것만으로는 부족합니다. 정해진 시간에 '정상으로 돌았다'는 신호가 오지 않으면 알리는 장치를 함께 둡니다. 자동화가 아예 실행되지 않은 경우에는 오류도 나지 않기 때문입니다.

데드맨 알림이 무엇인가요?

자동화가 끝날 때마다 '살아 있다'는 신호를 보내고, 정해진 시간 안에 신호가 오지 않으면 담당자에게 알리는 방식입니다. 운전자가 손을 떼면 열차를 세우는 장치에서 이름을 따왔습니다.

장애가 나면 누가 무엇을 하나요?

루코 웍스는 증상별로 확인할 곳과 순서를 적은 짧은 대응 문서(런북)를 만들어 둡니다. 운영 문서와 함께 넘겨 드리기 때문에 다른 개발자도 같은 순서로 대응할 수 있습니다.