AI가 잘 만들수록, 내가 뭘 모르는지 모른다

김도도·2026년 8월 1일

다 처리했는데 화면엔 '실패'라고 뜬다

AI로 만든 기능이 분명히 잘 됐는데, 정작 자료가 몰린 날 화면이 빨갛게 죽는다 — 뒤에서 시스템은 멀쩡히 다 처리하고 있는데도.

요즘은 코드를 몰라도 Claude 같은 AI한테 "카드 명세서 업로드 기능 만들어줘" 하면 그럴듯한 게 나온다. 실제로 잘 된다 — 작은 파일로 테스트하는 동안은.

문제는 실무 규모에서 터진다. 실무자가 수천 건짜리 파일을 올린 순간, 화면에 빨간 에러가 떴다. 그런데 서버 로그를 보면 36초에 걸쳐 전부 정상 처리하고 '성공'이 찍혀 있다. 서버는 일을 다 했는데, 사용자 화면은 실패라고 말하는 상태였다.

범인은 코드가 아니라 '30초 규칙'

원인은 중간에 있는 프록시였다. 연결을 지켜보다 응답이 늦으면 먼저 끊어버리는 '문지기'라고 보면 된다. 요청이 30초를 넘기자 이 문지기가 "얘 죽었나 보다" 하고 연결을 먼저 끊어버린 거다. 뒤에서 서버는 멀쩡히 일하고 있는데, 앞단은 이미 실패로 처리한 뒤였다.

이게 AI 코딩의 함정이다. AI는 "정상적으로 잘 되는 경로(happy path)"를 기가 막히게 짜준다. 그런데 "실무 규모에서 어디가 먼저 터지는가"는 먼저 알려주지 않는다. 물어보지 않으면. 30초 타임아웃, 큰 파일, 동시 요청 같은 '벽'은 실제로 그 규모를 맞아본 사람이 알고 챙겨야 한다.

이 상태가 특히 나쁜 이유가 하나 더 있다. 데이터는 다 들어갔는데 화면만 실패라고 뜨니, 사용자는 다시 올리게 되고 — 그러면 같은 데이터가 이중으로 처리된다.

타임아웃을 늘리는 건 해결이 아니다

급하면 프록시 타임아웃을 늘리면 된다. 실제로 180초로 늘려서 하루를 벌었다. 근데 이건 해결이 아니라 유예다. 파일이 더 커지면 늘린 한도도 또 뚫린다. 상한을 쫓아 올리는 건 끝이 없다.

진짜 해결은 구조를 바꾸는 거였다. 오래 걸리는 작업은 받자마자 "접수됐습니다"부터 답하게 했다. 실제 처리는 뒤에서 하고, 화면은 몇 초마다 "다 됐나요?"를 물어본다. 처리에 얼마가 걸리든 연결이 끊길 일이 없다.

AI한테 일을 시킬 때도 이렇게 말하면 된다 — "시간 오래 걸리는 작업이니까, 요청을 받으면 바로 접수 응답부터 주고 처리는 백그라운드로 돌린 다음, 화면에서 진행 상태를 확인하게 만들어줘." 이 한마디가 있고 없고가 위 사고를 가른다.

화려한 방법이 항상 답은 아니다

실시간 푸시 같은 더 세련된 방법도 있었지만 안 썼다. 혼자 운영하는 시스템은 부품 하나 늘어나는 게 전부 비용이라, 몇 초 간격으로 물어보는 걸로 충분한 일에 그 비용을 낼 이유가 없었다. 폴링도 처리 중인 작업이 있을 때만 켜고, 다 끝나면 끈다.

백그라운드 처리량도 숫자로 정했다. 서버가 메모리 2GB짜리 작은 인스턴스인데, 파일 하나 파싱에 메모리를 50MB쯤 쓴다. 동시에 4개면 200MB — 그래서 작업 스레드를 기본 2개, 최대 4개로 묶고, 그 이상 밀리면 큐에서 순서를 기다리게 했다. 화려한 튜닝이 아니라 서버 사양에서 역산한 상한선이다.

AI는 종종 제일 화려한 방법을 권한다. 근데 1인 운영에서는 '덜 세련되고 덜 고장 나는 쪽'이 맞을 때가 많다. 이 판단도 사람 몫이다.

하나는 더 챙겼다. 서버가 처리 도중에 재시작되면 '처리 중'으로 남은 작업이 조용히 사라지는데, 이걸 부팅할 때 찾아서 실패로 표시하게 했다. 조용히 사라지는 작업이 실패라고 뜨는 작업보다 훨씬 나쁘다. AI는 이런 '중간에 죽었을 때'를 웬만해선 먼저 챙겨주지 않는다.

진짜 위험은 '뭘 모르는지 모르는 것'

이 사건이 남긴 기준은 기술이 아니었다. 서버가 일을 다 끝냈어도, 그게 사용자 화면에서 안 끝났으면 안 끝난 거다. 성공을 정의하는 건 서버 로그가 아니라 사용자가 보는 화면이다.

그런데 더 깊은 문제가 있다. AI는 시킨 건 잘 만든다. 근데 뭘 시켜야 할지는 그 일을 아는 사람만 안다. 이 사건도 결국 "실무에선 파일이 수천 건씩 몰린다"는 현장 감각을 내가 몰랐기 때문에 터진 거다. 작은 파일로만 테스트하는 개발자는 그 규모를 모른다.

제일 위험한 건 내가 뭘 모르는지조차 모르는 상태다. AI가 답을 척척 내줄수록, 애초에 질문을 놓쳤다는 걸 눈치채기 더 어려워진다. AI에게 개발을 맡길수록, 사람이 남겨야 할 건 코드가 아니라 "무엇을 물어야 하는가"다.

profile
AI를 부려 낯선 도메인을 해체하고 현장의 문제를 해결합니다.

0개의 댓글