AI로 코드를 쓸 때 반드시 사람이 봐야 하는 곳
AI로 며칠이면 동작하는 것이 나옵니다. 다만 동작하는 것과 안전한 것은 다릅니다.
반드시 직접 확인할 곳
- 인증·권한 — 남의 데이터가 보이는지
- 금액 계산 — 클라이언트 값을 믿고 있는지
- 입력 검증 — 서버에서 다시 확인하는지
- 비밀키 취급 — 코드나 저장소에 들어갔는지
- 에러 처리 — 실패했는데 성공으로 넘어가는지
특히 결제 금액을 클라이언트에서 받는 코드는 자주 생성됩니다. 금액은 반드시 서버에서 확정해야 합니다.
생성된 코드의 전형적인 문제
| 증상 | 왜 생기나 |
|---|---|
| 동작은 하는데 느림 | 쿼리를 반복 호출 |
| 가끔 깨짐 | 예외 처리가 빠짐 |
| 보안 구멍 | 권한 검사 누락 |
| 나중에 못 읽음 | 일관성 없는 구조 |
테스트가 더 중요해졌습니다
직접 한 줄씩 쓰지 않았으니 내가 모르는 동작이 들어 있을 수 있습니다. 핵심 흐름만이라도 테스트를 걸어두어야 합니다.
특히 결제·인증·데이터 삭제는 반드시 테스트가 필요합니다.
속도가 빨라진 만큼 검토가 밀립니다
만드는 속도가 빨라지면 검토 없이 배포하는 습관이 생기기 쉽습니다. 배포 전 확인 목록을 만들어 두는 편이 안전합니다.
가장 위험한 패턴 — 금액을 클라이언트에서 받기
AI가 생성한 결제 코드에서 자주 나오는 실수입니다. 화면에서 금액을 받아 그대로 결제 요청에 넣는 구조입니다.
이러면 브라우저에서 값을 바꿔 1원으로 결제할 수 있습니다.
올바른 구조
① 화면은 상품 ID만 보냅니다
② 서버가 그 상품의 가격을 DB에서 조회합니다
③ 서버가 확정한 금액으로 결제를 요청합니다
④ 승인도 서버에서 처리하고 금액을 다시 검증합니다
① 화면은 상품 ID만 보냅니다
② 서버가 그 상품의 가격을 DB에서 조회합니다
③ 서버가 확정한 금액으로 결제를 요청합니다
④ 승인도 서버에서 처리하고 금액을 다시 검증합니다
권한 검사 누락
목록 조회에는 사용자 필터가 있는데 상세 조회에는 없는 경우가 흔합니다. ID만 바꾸면 남의 데이터가 보입니다.
- 모든 조회에 소유자 조건이 들어갔는지
- 수정·삭제에도 같은 조건이 있는지
- 목록과 상세가 같은 기준을 쓰는지
- 관리자 기능이 일반 사용자에게 노출되지 않는지
테스트할 때 계정을 두 개 만들어 서로의 데이터에 접근해 보세요. 이 한 번의 테스트가 가장 흔한 사고를 막습니다.
생성 코드에서 자주 보이는 성능 문제
| 패턴 | 증상 | 해결 |
|---|---|---|
| 반복문 안 쿼리 | 목록이 느려짐 | 한 번에 조회 |
| 인덱스 없음 | 데이터가 쌓이며 느려짐 | 조회 조건에 인덱스 |
| 전체 조회 후 필터 | 메모리 사용 급증 | DB에서 필터 |
| 불필요한 컬럼 조회 | 네트워크 낭비 | 필요한 것만 |
데이터가 적을 때는 안 보입니다. 100건에서는 멀쩡하다가 10,000건에서 갑자기 느려집니다. 테스트 데이터를 많이 넣어보면 미리 발견할 수 있습니다.
실패를 성공으로 처리하는 코드
예외를 잡았다면 반드시 무언가를 해야 합니다. 최소한 로그는 남겨야 합니다.
try/except로 감싸고 아무것도 안 하는 코드- 실패해도 성공 응답을 반환
- 재시도 없이 조용히 포기
- 에러를 로그에도 안 남김
배포 전 최소 체크리스트
- 다른 계정으로 남의 데이터에 접근되는가
- 금액이 서버에서 확정되는가
- 키가 코드나 저장소에 있는가
- 실패 시 사용자에게 알려지는가
- 삭제가 되돌릴 수 없는 것인지 확인했는가
- 대량 데이터에서 동작하는가
여섯 개를 순서대로 확인하는 데 30분이면 됩니다. 사고가 나면 며칠이 걸립니다.
자주 묻는 질문
AI가 쓴 코드를 그대로 상용에 써도 되나요?
동작 확인만으로는 부족합니다. 보안과 금액 관련 부분은 반드시 직접 읽어보시길 권합니다.
AI에게 보안 검토를 시켜도 되나요?
도움은 됩니다. 다만 같은 AI가 만든 코드를 같은 AI가 검토하면 놓치는 부분이 생깁니다. 체크리스트로 직접 확인하는 편이 안전합니다.
테스트 코드도 AI로 만들어도 되나요?
가능합니다. 다만 테스트가 무엇을 검증하는지는 직접 읽어야 합니다. 항상 통과하는 무의미한 테스트가 만들어지기도 합니다.
같이 보면 좋은 글
서버를 열어두면 바로 시작되는 공격들실제 로그에서 관찰되는 스캔 유형과 최소한의 방어. 서버를 인터넷에 열면 몇 분 안에 스캔이 시작됩니다. 유명하지 않아도 상관…처음 서비스를 팔기 전 확인할 목록만들고 나서 빠뜨리는 것들. 결제·정책·보안·운영을 한 장으로. 코드는 끝났는데 파는 준비가 안 되어 출시가 밀리는 경우가 많…혼자 만들 때 기술을 고르는 기준최신 기술보다 중요한 것. 혼자 유지보수할 수 있는지가 핵심입니다. 혼자 만들 때 가장 중요한 기준은 성능도 유행도 아닙니다.…인프라 담당 없이 배포하는 현실적인 방법서버 한 대로 시작해 안정적으로 운영하는 최소 구성. 처음부터 복잡한 인프라를 구성할 필요가 없습니다. 서버 한 대와 프로세스…혼자 운영할 때 최소한으로 봐야 할 것모니터링을 거창하게 하면 안 봅니다. 정말 필요한 네 가지. 대시보드를 아무리 예쁘게 만들어도 안 보면 소용없습니다. 혼자라면…AI API 비용이 매출을 넘지 않게 하는 설계쓸수록 적자가 나는 구조를 피하는 방법. 모델 분리와 캐시. AI를 쓰는 서비스는 사용량에 비례해 원가가 늘어납니다. 정액제로…