새 기능 일정이 밀릴 때 AI 코딩 도구는 매력적인 선택지다. 화면을 만들고, API 연결 코드를 작성하고, 테스트 초안을 준비하는 시간이 줄어든다. 문제는 이 속도 향상을 곧바로 “개발이 해결됐다”는 판단으로 바꾸는 데 있다.
CTO나 개발 리드는 AI가 만든 코드의 양보다, 그 코드가 제품에 들어간 뒤 누가 정확성을 설명하고 장애를 고치며 보안 문제를 책임질지를 정해야 한다. AI는 코드 작성 비용을 낮추는 도구가 될 수 있다. 반면 제품이 약속한 동작을 계속 지키게 하는 일은 여전히 팀의 엔지니어링 체계에 남는다.
특히 빌드 단계에서는 “AI 사용을 허용할 것인가”보다 “어떤 변경에 어느 수준의 증거와 사람의 승인을 요구할 것인가”가 더 중요한 질문이다.
바뀐 것은 구현의 출발점, 바뀌지 않은 것은 출시 책임
AI 코딩 도구는 보일러플레이트, 데이터 변환, 테스트 골격, 문서 초안, 익숙한 프레임워크의 화면 구성처럼 패턴이 반복되는 작업에서 출발 시간을 줄일 수 있다. 개발자가 빈 파일에서 시작하는 대신, 실행 가능한 초안에서 시작할 수 있다는 점은 분명한 변화다.
하지만 초안이 있다는 사실은 요구사항이 맞다는 증거가 아니다. 예를 들어 “관리자가 주문을 취소할 수 있다”는 요구는 코드 한 조각으로 끝나지 않는다. 이미 출고된 주문은 어떻게 할지, 취소 권한은 누구에게 있는지, 환불 실패 시 상태는 어떻게 남길지, 같은 요청이 두 번 들어오면 어떤 결과가 맞는지까지 정해야 한다. 이 결정은 자연어 요구사항에 숨어 있을 수 있고, 기존 운영 규칙과 충돌할 수도 있다.
AI가 컴파일 오류나 테스트 실패를 고쳐도 같은 한계가 남는다. 컴파일러와 테스트는 팀이 미리 표현한 규칙만 확인한다. 잘못 정한 규칙, 빠진 예외 조건, 현실과 다른 테스트 데이터는 통과한 코드 안에도 남는다.
따라서 AI 코딩 도구 도입의 성과를 생성 코드 줄 수나 PR 수로만 판단하면 위험하다. 배포 후 결함, 되돌리기 어려운 데이터 변경, 보안 취약점, 온콜 대응 시간, 변경 이해에 드는 비용도 함께 봐야 한다. 속도는 산출물의 양이 아니라 안전하게 변경을 배포하고 복구하는 주기로 측정하는 편이 낫다.
코드 위험도에 따라 자동화 허용 범위를 나눈다
모든 코드에 같은 통제를 적용하면 팀은 느려지고, 모든 코드에 같은 자유를 주면 사고 범위가 커진다. 실무에서는 코드의 작성 방식보다 변경이 실패했을 때의 영향으로 경계를 나누는 편이 유용하다.
| 변경 영역 | AI 생성 활용 | 사람 검토 | 테스트·승인 기준 |
|---|---|---|---|
| 내부 개발 도구, 일회성 분석, 폐기 예정 시제품 | 폭넓게 허용 가능 | 결과를 사용할 담당자가 확인 | 입력·출력과 폐기 조건 확인 |
| 화면 표시, 정적 콘텐츠, 낮은 영향의 반복 UI | 허용 가능 | 담당 개발자가 동작과 접근성을 검토 | 컴포넌트·통합 테스트, 시각 확인 |
| 핵심 업무 규칙, 결제 전후 상태, 권한 처리 | 보조 초안 중심 | 도메인 담당자와 코드 소유자 검토 | 경계 조건 테스트, 변경 승인 |
| 인증, 인가, 비밀정보, 개인정보, 금전 이동, 데이터 삭제·마이그레이션 | 제한적으로 사용 | 보안 또는 책임 소유자의 명시적 검토 | 자동 테스트 외에 위협 검토, 복구 절차, 배포 승인 |
| 장애 대응 자동화, 인프라 권한, 안전과 직결된 제어 | 생성보다 분석·문서화 보조에 한정 | 운영 책임자 검토 | 격리 환경 검증, 단계 배포, 수동 중지 수단 |
이 표는 특정 산업의 규제 결론이 아니라 제품 운영을 위한 일반적인 구분이다. 의료, 금융, 제조, 모빌리티처럼 잘못된 동작의 비용이 큰 환경이라면 높은 위험 영역을 더 넓게 잡아야 한다. 반대로 팀 내부의 일회성 도구라도 고객 데이터나 운영 자격 증명을 건드린다면 낮은 위험으로 분류해서는 안 된다.
핵심은 “AI가 썼으니 위험하다”가 아니다. 사람이 쓴 코드도 같은 실패를 낼 수 있다. 다만 AI가 구현 속도를 높이면 검토해야 할 변경량도 늘고, 작성자가 코드의 전제와 예외를 충분히 이해하지 못한 채 병합할 가능성도 커진다.
사람 검토는 코드 읽기가 아니라 주장 검증이어야 한다
AI 생성 코드를 사람이 한 줄씩 읽는다고 해서 품질이 자동으로 보장되지는 않는다. 코드 리뷰의 목적은 문법을 감상하는 일이 아니라, 변경이 충족해야 할 주장을 검증하는 일이다.
PR이나 변경 요청에는 최소한 다음 내용을 남기는 편이 좋다.
- 이 변경이 해결하려는 사용자 또는 운영 문제는 무엇인가
- 정상 흐름 외에 실패, 재시도, 중복 요청, 권한 없는 요청에서는 어떻게 동작하는가
- 변경 전후에 유지돼야 할 업무 규칙은 무엇인가
- 어떤 테스트가 그 규칙을 확인하며, 아직 확인하지 못한 부분은 무엇인가
- 문제가 생겼을 때 어떤 지표나 로그로 감지하고 어떻게 되돌릴 수 있는가
- AI가 작성 또는 수정한 범위가 어디이며, 담당 개발자가 직접 확인한 가정은 무엇인가
이 기록은 AI 사용 여부를 감시하기 위한 문서가 아니다. 시간이 지난 뒤에도 팀이 왜 이 코드를 배포했는지, 어떤 위험을 받아들였는지 추적하게 한다. 담당자가 바뀌거나 장애가 발생했을 때 특히 차이가 난다.
사람의 검토를 의무화해야 하는 작업도 분명하다. 접근 제어 정책의 변경, 고객 데이터의 삭제·이관, 결제나 정산 상태 전이, 외부 시스템에 영향을 주는 자동 실행, 암호화와 비밀정보 처리, 장애 시 복구 경로를 바꾸는 변경이 여기에 속한다. 이 영역에서는 코드가 그럴듯해 보인다는 이유로 승인하면 안 된다. 담당자는 테스트 결과뿐 아니라 제품 규칙과 운영 시나리오를 함께 확인해야 한다.
테스트가 없는 생성 속도는 검증 부채가 된다
AI 도구는 테스트 코드도 빠르게 만들 수 있다. 그러나 생성된 테스트가 구현의 현재 동작을 그대로 따라가면, 잘못된 구현과 잘못된 테스트가 함께 통과할 수 있다. 특히 AI가 먼저 만든 함수의 구조를 보고 테스트를 만들게 하면 이런 위험이 커진다.
중요한 규칙은 구현보다 먼저, 또는 구현과 독립적으로 표현하는 편이 낫다. 예를 들어 권한 기능이라면 “권한이 없는 사용자는 어떤 경로로도 대상 정보에 접근할 수 없다”는 규칙을 테스트로 확인해야 한다. 결제 흐름이라면 “같은 결제 완료 통지가 반복돼도 주문 상태와 청구 결과가 중복 변경되지 않는다”는 식으로 실패 조건을 명시해야 한다.
조기 경고 신호도 정해 둘 필요가 있다.
- AI가 만든 변경의 설명을 작성자가 자기 말로 설명하지 못한다.
- 테스트가 정상 흐름만 다루고 권한, 실패, 중복, 시간 경과를 다루지 않는다.
- 생성된 코드가 기존 모듈의 규칙과 다른 방식으로 예외를 처리한다.
- 작은 요구 변경인데 수정 파일과 의존성이 과도하게 늘어난다.
- 배포 전에는 통과했지만 운영 환경의 데이터 규모, 권한 구성, 외부 연동 조건을 재현하지 못한다.
- 되돌리기 어려운 변경인데 롤백 방법과 데이터 복구 책임자가 정해져 있지 않다.
이 신호는 AI가 실패했다는 판정이 아니라, 팀이 생성 속도를 검증 속도로 따라잡지 못하고 있다는 신호다. 이때 해결책은 더 긴 프롬프트가 아니라 변경 범위를 줄이고, 테스트 환경을 보강하고, 승인 대상을 다시 나누는 데 있다.
도입 정책은 금지 목록보다 작업 흐름으로 설계한다
AI 코딩 도구 정책을 “사용 가능” 또는 “사용 금지”로 끝내면 현장에서 우회가 생기거나, 반대로 유용한 자동화 기회까지 놓치기 쉽다. 팀이 따라갈 수 있는 흐름으로 정하는 편이 낫다.
첫 단계에서는 낮은 위험의 작업을 골라 사용 범위를 명확히 한다. 예를 들면 테스트 데이터 생성, 문서 초안, 내부 도구, 격리된 시제품처럼 결과를 쉽게 검증하거나 폐기할 수 있는 영역이다. 이때도 소스 코드와 비밀정보, 고객 데이터가 어떤 도구와 계정으로 전달되는지는 별도로 통제해야 한다.
다음으로는 AI가 생성한 변경을 기존 CI와 품질 기준 안에 넣는다. 정적 분석, 단위·통합 테스트, 의존성 점검, 코드 소유자 승인, 배포 전 검증이 AI 생성 코드라고 해서 면제되어서는 안 된다. 기존 체계가 없다면 AI 도입은 그 부재를 더 빨리 드러낼 가능성이 크다.
마지막으로 높은 위험 영역은 AI의 역할을 좁힌다. 설계 대안 정리, 테스트 케이스 누락 탐색, 로그 해석 보조처럼 사람의 판단을 넓히는 용도는 검토할 수 있다. 반면 권한 변경이나 금전 처리처럼 결과를 되돌리기 어려운 실행은 사람이 목적, 조건, 영향 범위를 승인한 뒤에만 진행하도록 분리하는 편이 안전하다.
AI 코딩 도구를 잘 쓰는 팀은 더 많은 코드를 생성하는 팀이 아니라, 어떤 변경은 빠르게 실험하고 어떤 변경은 느리더라도 증명해야 하는지 구별하는 팀이다. 다음 개발 계획 회의에서는 도구 도입 여부부터 묻기보다, 예정된 변경을 위험도별로 나누고 각 등급에 필요한 테스트와 승인자를 먼저 적어보는 것이 좋다.