경력·사례·글은 한국어 원문으로 제공됩니다.

← 모든 에피소드

중기 · 회사 업무 · 사람 개입 경로

수집이 깨졌을 때 사람이 고칠 길

외부 결과를 가져오지 못해 계산이 멈췄다. 수집을 복구하고 운영자가 값을 넣을 길을 만든 경험에서, 다시 진행하기 전에 확인할 것을 생각한다.

그때
외부 결과가 들어오지 않아 계산이 멈췄고, 운영자가 값을 넣을 경로를 만들었다.
지금
사람이 값을 넣고 다시 진행할 때 무엇을 확인할지 돌아본다.

결과가 들어오지 않자 계산이 멈췄다

회사 서비스에서 외부 사이트의 결과를 가져와 계산에 쓰고 있었다. 어느 날 그 사이트가 개편되면서 가져오는 주소와 응답이 달라졌다. 다른 때에는 사이트 자체의 문제로 데이터를 가져오지 못했다.

결과가 들어오지 않으면 뒤의 계산도 멈췄다. 운영 담당자에게 연락을 받았고, 나는 자리를 비운 상태에서 급히 코드를 고쳤다. 처음 겪은 일을 해결한 뒤에도 비슷한 문제가 다시 찾아왔다.

이 시스템은 처음부터 데이터가 부정확하면 다음 단계로 진행하지 않도록 되어 있었다. 잘못된 값으로 계산을 계속하는 것보다 멈추는 편이 나았다. 다만 멈출 수 있다는 것과 다시 진행할 수 있다는 것은 달랐다.

다시 요청하는 것만으로는 고쳐지지 않았다

재시도는 실패한 요청을 다시 보내는 방법이다. 잠깐 연결이 끊겼거나 상대 서버가 바빴다면 시간이 지난 뒤 같은 요청이 성공할 수 있다. 하지만 가져오는 주소나 응답 형식이 바뀌었다면 이야기가 다르다. 예전 주소로 다시 요청하거나 새 응답을 예전 방식으로 읽는 것만으로는 필요한 값을 얻기 어렵다. 재시도가 다루는 일시적 실패

당시에도 가져오는 API를 새 버전에 맞게 고치고 배치를 다시 실행해 수집을 복구했다. 배치는 정해진 작업을 한꺼번에 처리하는 프로그램이다. 이 경우에는 외부 결과를 다시 가져와 뒤의 계산에 쓸 수 있도록 하는 작업이었다.

수집 코드를 고치는 것과 함께, 긴급할 때 운영 담당자가 확인한 값을 직접 넣을 수 있는 경로를 만들었다. 수집이 멈춰도 사람이 데이터를 확인하고 이어갈 수 있게 하려는 선택이었다. 자동 수집을 없앤 것은 아니다. 평소에는 보완한 수집이 잘 동작했고 점검도 자주 해서 수동 경로를 많이 쓰지는 않았다.

필요할 때는 운영 담당자가 잘 활용했다고 들었다. 나중에 유사한 문제가 생겼을 때도 그 경로로 대응한 것으로 기억한다. 정확히 몇 번 사용했는지는 모른다. 사용 횟수는 적었지만, 데이터가 비었을 때 코드를 고치는 일 외에 대응할 방법이 생겼다.

사람이 넣은 값은 어떻게 확인할까

지금 다시 이 경로를 만든다면, 입력할 수 있게 하는 것에 더해 입력한 값을 어떻게 확인할지 살펴보고 싶다. 사람이 원본을 확인해도 옮겨 적다가 잘못 넣을 수 있기 때문이다.

입력값 검증은 프로그램이 값을 사용하기 전에 정해진 조건에 맞는지 확인하는 방법이다. 숫자를 받아야 하는 곳에 글자가 들어왔는지, 허용한 범위를 벗어났는지 같은 형식 검사가 있다. 값들이 서로 맞는지도 따로 볼 수 있다. 예를 들어 시작일과 종료일이 모두 날짜 형식이어도 순서가 뒤집혀 있다면 처리할 수 없는 요청일 수 있다. OWASP도 입력의 형식과 업무상 의미를 함께 확인하도록 설명한다. 입력값 검증 참고

하지만 형식에 맞는 값이 실제 원본과 같은 값인지는 다른 문제다. 설명을 위해 이번 결과를 넣어야 할 자리에 이전 결과를 넣었다고 가정해보자. 숫자의 개수와 범위가 맞으면 형식 검사에는 걸리지 않을 수 있다. 어떤 결과를 보고 입력했는지, 지금 처리할 대상과 맞는지는 다시 확인해야 한다. 실제로 그런 입력 오류가 났다는 이야기는 아니다.

입력한 값과 적용할 대상을 먼저 보여주고 확인한 뒤 계산으로 넘기는 방법도 검토할 만하다. 계산 결과를 미리 확인하는 기능을 붙일 수 있다면, 그 확인 과정에서는 실제 반영이 일어나지 않도록 나눠야 한다. 누가 어떤 값을 바꿨는지 기록하는 것도 나중에 판단을 되짚는 데 도움이 될 수 있다.

항목을 늘리는 것만으로 실수가 사라지지는 않고, 확인할 정보가 너무 많아 실제로 읽지 않게 되는 문제도 생각해야 한다. 우선 어떤 값이 틀렸을 때 뒤의 계산이 달라지는지부터 살펴보는 편이 좋겠다.

드물게 쓰는 길도 필요했다

그때의 수동 경로는 평소 자동 수집을 대신할 만큼 자주 쓰이지 않았다. 그래도 문제가 생겼을 때 실제로 사용됐다. 잘 동작하는 날에는 쓰지 않던 기능이, 수집을 고치는 동안 필요한 경로가 됐다.

지금 돌아보면 멈추는 조건만큼이나, 누가 무엇을 확인한 뒤 다시 진행할 수 있는지도 중요하게 보인다. 사람이 값을 넣게 하면 끝나는 것이 아니라, 그 사람이 판단할 때 필요한 정보를 함께 보여줄 수 있을까. 다시 만든다면 그 부분부터 더 살펴보고 싶다.

다시 만난 문제

이 글의 연결

수집이 끝났는지 확인하고 나서야 지급한 일수집이 끝났는지 확인하고…202를 받았는데 아무것도 수집되지 않았다202를 받았는데 아무것…

댓글

댓글은 GitHub 토론을 사용하며, 열면 GitHub 로그인이 필요합니다. 고객·사람이 드러나는 정보는 남기지 말아 주세요.

작성 2026-10-05 · 수정 2026-10-06

기억에 의존한 회고이며 당시 문서로 확인하지 못했다.