블로그 발행 방식을 바꾼 김에, 표본에 속지 않는 판단과 소리 없이 죽는 파이프라인을 잡아내는 계측을 함께 정비했습니다
이번 주는 토요일과 일요일, 이틀 동안 작업이 몰렸습니다. 그 전 며칠은 개발일지가 조용했는데, 알고 보니 원인 자체가 이번 주의 첫 번째 주제였습니다.
발행 인프라부터 다시 짰다
토요일에 열흘 넘게 개발일지가 끊겼던 원인을 찾았습니다. 매일 밤 자동으로 돌아가고는 있었는데, 마지막 저장 단계가 권한 승인 대기에 막혀 아무도 모르게 조용히 끝나고 있었습니다.
원인을 고치는 김에 발행 구조 자체를 바꾸기로 했습니다. 티스토리 글쓰기 API가 오래전에 끊겨서 발행만은 늘 수동이었는데, 신규 발행처를 GitHub Pages와 Dev.to 두 곳으로 옮기고 티스토리는 과거 글 아카이브로만 남겼습니다.
사고나 오판처럼 원인 분석이 필요한 사건은 개발일지 안에 짧게 묻어두는 대신, 별도 사후분석 시리즈로 떼어 쓰기로 한 것도 같은 날 결정했습니다. 왜 조용했는지를 찾아 고치는 하루가, 자연스럽게 "앞으로 조용한 실패를 어떻게 더 빨리 알아챌 것인가"라는 이번 주 전체의 주제로 이어졌습니다.
표본에 속지 않는 판단
일요일에는 주말 동안 돌려둔 재무 데이터 처리 개입의 A/B 테스트 결과를 판정했습니다. 전체 종목 표본에서는 채택 기준을 충족했는데, 오류가 잦은 종목만 모은 별도 표본에서는 개선폭이 더 커 보이는 숫자가 나왔습니다.
더 좋아 보이는 숫자 쪽으로 채택 기준을 옮기고 싶은 유혹이 있었지만, 다른 AI에게 자문을 구해 이 두 표본이 같은 개입을 다른 조건에서 두 번 잰 것일 뿐이라는 걸 확인했습니다. 그래서 대외 보고 수치는 전체 표본 하나로 고정하고, 오류가 잦은 표본 쪽 결과는 보조 확인 정도로만 남겼습니다.
같은 테스트를 돌리던 중 안전장치가 리포트 한 건을 차단했는데, 조사해보니 리포트를 조립하는 내부 코드의 지시문 문구가 최종 리포트에 그대로 노출되는 결함이었습니다. 이번 개입과는 무관한, 원래 있던 결함이 우연히 걸린 것으로 확인했지만, 지시문 문구와 탐지 패턴을 함께 갱신해서 재발을 막았습니다.
소리 없이 죽는 것들을 울게 만들었다
모의계좌 완전자동 검증 트랙(새 창)의 주문 실행 유닛이 최근 한 달 사이 처리 시간 초과로 두 번 죽었는데, 둘 다 사후에야 알았습니다. 제한선을 올리는 미봉책 대신, 라운드마다 소요 시간과 외부 API 호출 통계를 남기고 제한선에 가까워지면 미리 경고가 뜨도록 계측을 추가했습니다.
비슷한 시기에 다른 안전장치에서도 "검출 0건"이 문제가 없어서인지 검출기 자체가 죽어서인지 구별할 수 없는 사고가 반복됐습니다. 검출기가 실제로 몇 건을 봤는지까지 함께 기록하는 관측 장치를 새로 만들어서, 이제는 "0건"과 "애초에 볼 게 없었음"을 로그만 보고 구별할 수 있습니다.
trading 쪽 인프라도 함께 정비했다
로컬 대형 모델 성능 비교 벤치마크가 GPU 자원을 다른 작업과 나눠 쓰다 중간에 멈춰 있었는데, 사람이 지켜보지 않아도 GPU가 비는 즉시 이어서 돌 수 있도록 재개 절차를 문서로 정리했습니다. 시작할 때 입력 데이터의 지문을 검증해서, 재개 시점에 다른 입력을 잘못 물고 도는 일도 막았습니다.
이번 주를 관통한 건 하나의 새 기능이 아니라, 조용히 실패하는 지점을 찾아 소리 나게 만드는 일이었습니다. 발행 자동화도, A/B 테스트 판정도, 실행 파이프라인도, 검출기도 전부 같은 종류의 구멍—문제가 있어도 아무 신호가 안 나오는 상태—을 하나씩 메웠습니다.
Top comments (0)