월요일 아침, 재고 알림이 평소처럼 도착했습니다. 숫자도 멀쩡합니다. 그런데 창고에 가 보니 실제 수량과 한참 다릅니다. 어디서도 빨간불은 안 켜졌습니다. 시스템은 매일 성실하게 돌았는데, 보고 있던 값이 며칠 전에 멈춘 데이터였던 겁니다.
이런 장면, 한 번쯤 겪으신 적 있을 겁니다. 자동화는 요란하게 고장 나지 않습니다. 대개는 조용히 어긋납니다.
에러 없이 어긋나는 버그
자동화의 무서운 점은 멀쩡해 보인다는 데 있습니다. 스크립트는 종료 코드 0으로 끝나고, 알림은 제때 옵니다. 다만 그 알림이 가리키는 진실이 더는 맞지 않을 뿐입니다.
이런 결함은 로그에 안 남습니다. 단일 진실 공급원(SoT)이 둘로 갈라져도 두 곳이 각자 답을 내놓으니, 프로그램은 멈출 이유가 없습니다. 큐에 쌓인 작업이 며칠째 처리를 못 받아도 큐 자체는 살아 있으니, 헬스체크는 초록불을 켭니다. 사람이 직접 들여다보기 전까지 아무 신호도 안 옵니다.
작은 가게의 예약 봇을 떠올려 볼까요. 어느 날 예약 플랫폼이 응답 형식을 살짝 바꿉니다. 봇은 에러 대신 빈 값을 받아 들이고, 사장님 화면에는 "오늘 예약 0건"이 뜹니다. 한가한 날이라 여기고 넘어갑니다. 실제로는 예약이 꽉 찼는데 말입니다. 어디서도 빨간불은 안 켜졌습니다. 그저 들어오는 데이터가 막혔을 뿐인데, 그 막힘은 화면 어디에도 표시되지 않았던 겁니다.
왜 시스템은 침묵 속에 표류하나
도구 하나를 처음 붙일 때는 모든 연결을 손바닥 보듯 압니다. 문제는 그다음입니다. 두 번째 자동화가 얹히고 세 번째가 또 얹힙니다. 그사이 외부 API가 응답 형식을 슬쩍 바꾸고, 누군가 권한을 조정합니다. 각각은 작은 변화입니다.
그렇게 반년이 지나면 아무도 전체 그림을 못 봅니다. 한 자동화의 출력이 다른 자동화의 입력으로 흘러가는 경로를, 머릿속에 다 담은 사람이 없는 겁니다. 손대지 않으면 안전하다고 믿지만, 가만히 둔 시스템이야말로 천천히 표류합니다. 바깥세상은 계속 변하는데 내 자동화의 가정만 그 자리에 멈춰 있으니까요.
작은 팀일수록 이 위험이 큽니다. 만든 사람이 곧 운영자이고, 그 한 사람의 기억이 유일한 문서인 경우가 많습니다.
감사가 드러내는 건 코드가 아니다
여기서 코드 리뷰는 큰 도움이 안 됩니다. 코드 리뷰는 함수 하나가 맞게 짜였는지를 봅니다. 조용한 버그는 함수 안이 아니라 함수와 함수 사이, 시스템과 시스템 사이에 숨어 있습니다.
전체를 한 번 점검하면 그제야 구조 수준의 문제가 떠오릅니다. 두 시스템이 같은 데이터를 다르게 기억하고 있다거나, 한쪽이 보내는 신호를 다른 쪽이 오래전부터 무시하고 있었다거나. 개별 코드는 다 정상인데 연결이 어긋난 상태. 이건 버그 수정보다 아키텍처 진단에 가까운 일입니다.
그래서 점검의 시선이 달라야 합니다. 코드 리뷰가 나무 한 그루의 건강을 본다면, 자동화 감사는 숲 전체에 물이 어떻게 흐르는지를 봅니다. 물길이 끊긴 곳과 두 갈래가 엉킨 곳, 데이터가 어디서 고이고 어디서 새는지를 따라가는 일입니다.
감사 주기를 어떻게 설계하나
거창한 절차는 필요 없습니다. 핵심은 정기적으로, 전체를 한 번에 본다는 데 있습니다. 자동화가 누적되는 만큼, 점검도 누적된 전체를 대상으로 삼아야 합니다.
분기에 한 번 반나절이면 작은 팀에는 충분합니다. 자동화 목록을 늘어놓고, 각 시스템이 어디서 데이터를 받아 어디로 보내는지 종이에 그려 보세요. 그 그림에서 끊긴 화살표나 두 번 그려진 상자가 보이면, 그게 바로 다음에 손볼 곳입니다.
점검할 축은 네 가지로 충분합니다. 같은 값을 두 곳이 따로 들고 있지 않은지(SoT), 큐에 며칠 묵은 작업이 없는지, 외부에서 들어오는 피드가 끊기거나 형식이 바뀌지 않았는지, 만료가 임박한 토큰이나 너무 넓게 열린 권한이 없는지. 한 축에 십 분씩만 들여도 한 시간이면 한 바퀴를 돕니다.
발견한 문제는 그 자리에서 다 고치려 들 필요가 없습니다. 오히려 적어 두는 일이 먼저입니다. "A 봇과 B 시트가 재고 수량을 따로 센다" 같은 한 줄이면 됩니다. 구조 문제는 대개 한 번에 손보기 어려우니, 기록해 두고 우선순위를 매기는 편이 낫습니다. 다음 감사 때 그 목록이 출발점이 되어 줍니다.
- 01자동화 목록화
- 02데이터 흐름 그리기
- 03축별 점검(SoT·큐·피드·권한)
- 04구조 문제 기록
새 자동화를 붙이는 일에는 다들 열심입니다. 정작 이미 돌고 있는 것들을 다시 들여다보는 일은 미뤄집니다. 자동화에 일을 맡겼다는 건 그 판단을 시스템에 위임했다는 뜻입니다. 위임한 일도 가끔은 들여다봐 주어야 합니다.
다음 분기 캘린더에 반나절만 비워 두세요. 점검하는 그 반나절이, 조용히 어긋난 채 흘러간 석 달을 되찾아 줍니다.
- Single Source of Truth (SoT)
- 기술 부채(Technical Debt)
- 옵저버빌리티(Observability)



