
UseHourly의 스테이징 사이트에 일부러 심은 검색 오류를 AI 파이프라인이 감지해 수정하고 검토용 풀 리퀘스트(PR)를 만들었다. 오류 발생 42초 뒤 수정 요청이 만들어졌고, 31분 뒤 PR이 준비됐다. 이 과정에서 사람은 수정 계획을 확인하고 최종 결과를 승인하는 두 단계에 참여했다.
데니스 존탁(Denis Zontak)은 AI가 대부분의 코드를 작성하는 환경에서 실수를 막연히 피하기보다, 실수를 찾아내고 고칠 수 있는 절차를 만드는 것이 중요하다고 설명한다. 파이프라인은 Night Watch와 Day Shift라는 두 서비스로 구성된다. Night Watch는 사이트 로그와 상태 점검을 살펴 사고를 열고 AI에 분류를 맡긴 뒤 이메일, Telegram, Slack으로 알린다. Day Shift는 요청을 명세로 바꾸고 별도 작업 공간에서 코드를 작성해 프로젝트 점검을 실행한다. 두 번째 에이전트가 변경 사항을 검토한 뒤 스테이징에 배포한다.
사람은 제안된 수정이 맞는지 명세를 확인하고, 배포할 만한 결과인지 승인한다. 각 에이전트 단계는 해당 에이전트와 별개의 검사 절차로 확인하며, 진행 내용은 기록한다. 따라서 파이프라인을 멈췄다가 다시 시작해도 이미 한 작업을 반복하지 않도록 설계했다.
실험에서는 일부러 만든 버그를 임시 브랜치에 넣었다. 검색 과정에서 보관 처리된 고객의 항목을 찾으면 undefined의 name을 읽으려다 오류가 나는 문제였다. Night Watch는 스택 추적을 근거로 코드 수정이 필요하다고 분류했고, 42초 만에 Day Shift에 요청을 전달했다. 첫 명세는 문제의 위치는 찾았지만 원인을 놓치고, 오류를 숨길 수 있는 약한 테스트를 제안했다. 사람이 원인이 새 보관 필터에 있으며 검색 결과에 고객 이름과 함께 항목이 다시 나타나야 한다고 알려주자, 수정 계획이 정답과 일치했다. 이후 한 줄 수정과 재현 테스트가 준비됐고, 점검과 코드 검토를 통과해 스테이징에 배포됐다. 재생 테스트에서는 검색 10회 모두 해당 항목이 고객 이름과 함께 반환됐다.
이 과정은 첫 오류부터 PR 생성까지 31분이 걸렸고, 에이전트 비용은 2.45달러였다. 사람의 조치는 수정 계획을 한 번 돌려보내고 승인한 뒤 병합하는 것이었다. 다만 수정 후에도 스테이징에 트래픽이 없어 로그 오류가 더는 나타나지 않자, Night Watch는 사고를 닫지 못했다. Day Shift는 15분 뒤 수정이 적용되지 않았다고 판단해 같은 수정을 다시 만들었다. 존탁은 오류가 사라졌다는 사실만으로 복구를 판단하지 말고, 실패했던 요청을 다시 실행해 확인해야 한다고 정리했다.
스테이징 환경을 일부러 망가뜨리는 훈련에서는 상태 확인 요청이 503을 반환하거나 느려지고, 데이터 호출 하나가 실패하도록 설정할 수 있다. 이 전환 기능은 스테이징 빌드에서만 작동하며 긴 토큰이 필요하고, 시작과 종료 때마다 로그를 남긴다. 첫 훈련에서는 알림이 오지 않았고, 두 번째에는 4분 동안 이메일 16통이 몰렸다. 이를 고친 뒤 세 번째 훈련에서는 분류 완료와 복구 완료를 알리는 이메일 두 통, Telegram 메시지 한 건이 전달됐다. 훈련은 단위 테스트만으로 확인하기 어려운 로그, 알림, 알림을 읽는 사람까지 점검하는 데 쓰였다.
파이프라인을 만드는 과정에서는 명세 작성기가 버그가 있는 브랜치 대신 메인 브랜치의 코드를 읽어 원인을 추측하는 문제도 발견됐다. 또 하루 20통이면 충분할 것으로 본 이메일 한도가 잘못된 시작 한 번에 16통이나 소진됐다. 앞으로는 훈련과 실제 사고에 서로 다른 한도를 적용하고, 수정 후 실패 요청을 재생하는 복구 확인과 스테이징의 주기적인 가상 사용자 점검을 추가할 계획이다. 심어 둔 여러 종류의 버그를 밤마다 처리하는 점수표도 구상하고 있다.
별도의 스테이징 부하 시험에는 계정 10,000개와 항목 257만 건, 청구서 66,881건을 넣었다. 데이터 처리 시간은 가장 큰 계정에서도 모든 페이지가 0.2초 미만이었다. 관리자 전용 보고서 페이지 하나는 작은 인덱스 두 개를 추가한 뒤 2.9초에서 0.27초로 줄었다. 이는 해당 스테이징 시험의 결과다.
Day Shift와 Night Watch는 성과를 보여줄 만한 측정값이 마련되면 오픈소스로 공개할 예정이다. 존탁은 먼저 복구 성공률, 소요 시간, 비용을 측정하는 작업을 진행하겠다고 밝혔다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요