Kiro Crew 팀은 에이전트와 엔지니어 3명이 일주일에 풀 리퀘스트(PR) 1,000건을 병합한 뒤, 사람이 모든 코드를 줄마다 읽지 않아도 품질을 유지하는 방법을 공개했다. 핵심은 검토자의 승인만으로 판단하지 않고 자동 테스트와 CI 기록을 근거로 삼으며, 수정부터 재검증까지 이어지는 과정을 자동화하는 것이다. 앞서 공개한 작업 규모는 이전 글에서 확인할 수 있다.
검토와 테스트를 자동화한 과정
팀은 초기에는 모든 변경을 사람이 검토했지만, 이 방식은 하루도 채 지속되지 않았다. 자동 리뷰 봇을 도입한 뒤에는 모든 AI 리뷰 의견을 해결해야 병합할 수 있도록 했으나, 리뷰가 여러 차례에 걸쳐 추가되고 작은 수정이 커지는 문제가 생겼다. 이에 차단해야 할 심각한 지적과 후속 작업으로 넘길 사소한 의견을 구분하고, 여러 차례 검토해 가능한 한 한 번에 문제를 드러내는 별도 리뷰 에이전트도 추가했다.
GitHub로 옮긴 뒤에는 빌드, 단위 테스트, 종단 간 테스트를 PR마다 자동 실행했다. 격리된 환경에서 변경된 코드를 실행하는 테스트 작업은 관련 화면의 스크린샷과 동영상을 PR에 첨부한다. 리뷰도 역할별로 나눴다. 설계, 근본 원인, 사용자 경험을 살피는 리뷰어를 두고 서로 다른 모델 계열로도 코드를 검토하게 했다. 팀은 테스트 커버리지를 90% 이상으로 높였으며 100%를 목표로 한다고 밝혔다.
리뷰 의견을 차단 항목으로 삼으려면 구체적인 위치와 인용 근거, 문제가 발생하는 조건, 결과를 제시해야 한다. 무엇이 어떻게 깨지는지 설명하지 못하면 권고 사항으로 분류한다. 되돌릴 수 있는 설계 선택은 나중에 고칠 수 있으므로 차단하지 않는다는 기준도 적용했다.
이후 팀은 prepare-pr 기술을 만들어 PR이 모든 검사를 통과할 때까지 수정 과정을 자동으로 반복하게 했다. 여러 CI/CD 검사 결과는 단일 PR Readiness 판정으로 모은다. 이 판정은 단순히 실패 항목이 없다는 뜻이 아니라, 예정된 검사가 모두 실행돼 통과했음을 나타낸다. 에이전트는 실패한 검사와 리뷰 의견을 확인하고, 타당한 문제는 수정하며 그렇지 않은 의견에는 근거를 들어 답한 뒤 새 변경을 제출한다. 동일한 판정으로 에이전트는 작업 완료를 확인하고 사람은 PR의 준비 상태를 판단한다.
PR을 간단한 등급으로 분류해 단순한 건은 자동 승인·병합하고, 나머지는 AI가 검토 제안을 작성하도록 했다. 에이전트는 실제 코드 변경에 맞춰 PR 설명을 갱신하며, CI 검사로 설명이 코드와 일치하는지도 확인한다.
병합 이후에도 이어지는 관리
병합이 품질 관리의 끝은 아니다. 릴리스 전에는 실제 앱을 설치하고 핵심 흐름을 실행하는 에이전트 테스트를 포함해 제품 단위 검사를 한다. 병합된 코드에는 매시간 규정 준수 검사와 매일 내부 보안 에이전트 검사가 이뤄진다. 보안 봇은 도구에서 실제 작업을 시도해 보호 장치의 문제를 찾고, 외부 신고를 받는 보안 접수 창구도 운영한다. 빠른 변경으로 생긴 중복 코드나 큰 파일, 사용되지 않는 코드는 정기적으로 리팩터링한다.
PR마다 수십 건의 자동 검사를 하고 하루에 100건의 PR을 처리하면서 GitHub의 요청 한도와 자체 자원 한계에도 부딪혔다. 팀은 CI 작업을 묶음으로 나누고, 저렴하고 빠른 검사부터 통과해야 느린 검사가 시작되도록 했다. 일부 검토는 AWS CodeCommit으로 옮기고 일부 테스트는 자체 호스트에서 실행한다.
자동 수정 과정이 불필요하게 커지는 문제도 있었다. 리뷰에서 지적된 예외 상황을 해결하려고 코드를 덧붙이고, 그 추가 코드가 다시 다른 지적을 부르는 식이다. 이를 줄이기 위해 여러 차례 수정 뒤에는 변경 내역과 리뷰 의견을 되짚는 회고를 prepare-pr와 CI에 넣었다. 회고는 중단, 되돌리기, 더 단순한 해결책을 제안한다. 별도의 조정 에이전트가 이 제안을 먼저 판단하고, 결정하기 어려운 경우에만 사람을 부른다. 팀은 실제 사용자에게 발생할 수 있는 문제를 최소한의 코드 변경으로 고치며, 도달 가능한 충돌이나 보안 취약점, 데이터 손실은 예외 없이 수정한다고 설명했다.
팀이 제안한 적용 방법은 리뷰 의견의 심각도를 나누고, 여러 리뷰 결과를 한 차례에 모으며, 검사 상태를 ‘모두 실행돼 통과함’으로 나타내는 단일 판정값을 두는 것이다. 제품의 실제 사용 흐름을 릴리스 전에 테스트하고, 자동 수정 루프에 회고를 넣는 방법도 제시했다. 다만 코드베이스마다 조건이 다르므로 각 제품에 맞춰 조정해야 한다고 덧붙였다.
Kiro Crew는 오픈소스이며, 글에서 설명한 작업 흐름과 리뷰 프롬프트, prepare-pr 기술은 GitHub 저장소에서 공개돼 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요