Gemini CLI로 RAG 마이그레이션 자동화: 코드 대신 오케스트레이션!

by DD
1개월 전
조회수 10

Gemini CLIConductor 확장 기능을 활용하여 RAG 마이그레이션(RAG Migration) 프로젝트를 오케스트레이션(Orchestration)하는 방법을 소개

Spec-driven 개발 방식을 통해 제품 정의, 기술 스택, 주요 기능, 워크플로우를 Markdown 파일로 관리하여 AI 에이전트(AI Agent)의 이해도 향상

AI 기반 TDD(Test-Driven Development)를 통해 코드의 신뢰성을 확보하고, 자동화된 검증 및 수동 검증을 결합한 체크포인트(Checkpoint) 프로토콜 적용

Human-in-the-Loop 모델을 통해 AI 에이전트와 협업하며, 안전한 개발 환경 구축 및 코드 품질 향상

총 19M의 입력 토큰(Input Tokens)과 400k의 출력 토큰(Output Tokens)을 사용했으며, 총 비용은 약 30달러로 측정됨

Gemini CLI와 Conductor 확장 기능의 결합

본문에서는 Gemini CLI를 활용하여 RAG 마이그레이션(RAG Migration) 프로젝트를 오케스트레이션(Orchestration)하는 방법을 제시한다. 특히, Conductor 확장 기능을 통해 spec-driven 개발 방식을 구현하여, 제품 정의, 기술 스택, 주요 기능, 워크플로우를 Markdown 파일로 관리한다.

Spec-driven 개발(Spec-driven Development): 코드 작성 전에 명세(Specification)를 정의하여 AI 에이전트(AI Agent)가 프로젝트의 맥락을 이해하도록 돕는다.

Track 기반 개발(Track-based Development): 각 주요 기능을 'Track'으로 정의하고, 초기화, 실행, 완료, 보관의 라이프사이클(Lifecycle)을 관리한다.

Human-in-the-Loop 모델(Human-in-the-Loop Model): AI 에이전트의 작업에 대한 검토 및 승인을 통해 안전하고 효과적인 협업을 지원한다. 이러한 접근 방식은 AI 기반 개발의 효율성을 높이고, 코드 품질을 향상시키는 데 기여한다.

AI 기반 TDD(Test-Driven Development)의 활용

저자는 AI 에이전트를 활용하여 TDD(Test-Driven Development)를 구현하고, 코드의 신뢰성을 확보했다. AI 에이전트는 테스트를 먼저 작성하고, 실패하는 것을 확인한 후, 테스트를 통과하기 위한 최소한의 코드를 작성한다.

Write Failing Tests: AI 에이전트는 예상되는 동작을 정의하는 테스트 파일을 생성한다.

Red Phase: 테스트를 실행하고 실패를 확인한다.

Green Phase: 테스트를 통과하기 위한 최소한의 코드를 작성한다.

Refactor: 코드의 가독성, 중복 제거, 성능 향상을 위해 리팩토링(Refactoring)을 수행한다.

Verify Coverage: 테스트 커버리지(Test Coverage)가 프로젝트 요구 사항을 충족하는지 확인한다. 이러한 과정을 통해 AI가 생성한 코드가 기능적으로 검증되도록 한다.

Terraform을 활용한 인프라 관리

본문에서는 Gemini CLI를 사용하여 Terraform 코드를 생성하고, 인프라를 관리하는 방법을 설명한다. product.md 파일에 정의된 지침에 따라, Gemini CLI는 프로젝트에 필요한 모든 리소스에 대한 Terraform 코드를 생성한다.

IaC(Infrastructure as Code): 모든 리소스가 소스 코드(Source Code)로 관리되므로, 새로운 환경을 쉽게 구축할 수 있다.

terraform plan: terraform apply 전에 terraform plan을 실행하여 변경 사항을 미리 확인한다.

Workflow.md 파일: 이러한 접근 방식을 모든 트랙(Track)에 적용하기 위해 workflow.md 파일에 관련 정보를 기록한다. 이러한 접근 방식은 인프라 관리의 일관성을 유지하고, 자동화를 통해 효율성을 높이는 데 기여한다.

체크포인트(Checkpoint) 프로토콜을 통한 품질 관리

저자는 각 단계의 완료 시점에 체크포인트(Checkpoint) 프로토콜을 실행하여 코드 품질을 관리하고, 개발 프로세스의 안정성을 확보했다.

자동 검증(Automated Verification): 전체 테스트 스위트(Test Suite)를 실행하여 코드의 기능적 정확성을 검증한다.

수동 검증(Manual Verification): 사용자에게 변경 사항을 검증하기 위한 단계별 지침을 제공한다.

감사 가능한 기록(Auditable Records): git notes를 사용하여 검증 보고서를 git 커밋에 첨부하고, plan.md 파일을 업데이트한다. 이러한 체크포인트는 개발 과정에서 발생할 수 있는 문제를 조기에 발견하고, 롤백(Rollback)을 통해 안전하게 복구할 수 있도록 돕는다.

AI 에이전트(AI Agent)와의 효과적인 협업

저자는 Gemini CLI와 AI 에이전트(AI Agent) 간의 효과적인 협업을 위해 다양한 솔루션을 활용했다. 특히, Yolo 모드가 활성화된 Gemini CLI 샌드박스(Sandbox)를 사용하고, 별도의 터미널에서 실행되는 커스텀 샌드박스 알림 스크립트를 구현했다.

안전한 개발 환경: 샌드박스 환경을 통해 AI 에이전트의 작업 범위를 제한하고, 잠재적인 위험을 최소화한다.

알림 시스템: 적절한 시점에 알림을 받아 다른 프로젝트에 집중하면서도 AI 에이전트의 진행 상황을 확인할 수 있다.

체크포인트 메커니즘: 불필요한 변경 사항을 롤백하거나, 알려진 상태에서 다시 시작할 수 있도록 지원한다.

Antigravity 활용: 코드 및 문서의 사소한 수정이나 리팩토링을 위해 Antigravity를 사용한다. 이러한 접근 방식은 AI 에이전트와의 협업 효율성을 높이고, 개발 생산성을 향상시키는 데 기여한다.

How I used Gemini CLI to orchestrate a complex RAG migration