AI 를 현실에 뿌리박기: 코드베이스의 벡터 검색이 우리의 SDLC 자동화를 어떻게 변화시켰는지
저자: Antony Brahin
소프트웨어 개발에서 사용자 스토리를 상세한 문서와 실행 가능한 작업으로 전환하는 과정은 성공에 매우 중요합니다. 그러나 이 수동적인 과정은 종종 일관성 부족과 상당한 시간 투자를 유발하는 원인이 됩니다. 저는 이를 간소화하고 향상시킬 수 있는지 확인하고자 했습니다.
사용자 스토리에서 잘 정의된 실행 가능한 작업 집합으로의 여정은 매우 중요합니다. 이는 또한 우리의 워크플로우에서 가장 시간이 많이 소요되고 반복적이며 일관성 없는 부분 중 하나입니다. 그 행정적인 고생은 단순히 지루할 뿐만 아니라, 여기에 일관성 부족이 스며들고 소중한 시간이 손실됩니다. 저는 이를 자동화할 수 있다고 확신했습니다.
이 글에서는 Azure DevOps (ADO) 의 사용자 스토리를 입력으로 받아 Google 의 Gemini 와 고급 AI 프롬프트 체인을 활용하고, 코드베이스의 벡터 검색을 통해 전체 요구사항 문서, 기술 사양, 테스트 계획, 그리고 즉시 실행 가능한 작업 집합을 출력하는 완전한 엔드투엔드 자동화를 구축하는 방법을 안내하겠습니다.
상용 도구가 존재할 때 왜 이것을 구축했는가?
이 분야는 매우 뜨겁다는 것을 알고 있습니다. GitHub 와 Atlassian 과 같은 거대 기업들은 통합 AI 를 개발하고 있으며, 스타트업들은 전문 플랫폼을 제공하고 있습니다. 저의 목표는 그들과 경쟁하는 것이 아니라, 각 작업 부분에 가장 적합한 도구를 사용하여 단일 생태계에 구애받지 않고 맞춤형 "유리 상자" 솔루션을 구축함으로써 무엇을 달성할 수 있는지 확인하는 것이었습니다.
이 접근 방식이 다른 점은 유연성과 완전한 제어입니다. 이는 미리 포장된 제품이 아니라, Power Automate 를 기반으로 구축된 견고한 워크플로우입니다. Power Automate 는 여러 플랫폼으로의 API 호출 일련의 작업을 오케스트레이션 (orchestrator) 역할을 합니다. 이를 통해 프로세스의 각 단계를 우리 자신의 필요에 맞게 세밀하게 조정할 수 있었습니다.
아키텍처: 고수준 개요
전체 솔루션은 ADO 사용자 스토리 업데이트로 트리거되는 Power Automate 클라우드 흐름 (cloud flow) 이며, 일련의 API 호출을 오케스트레이션합니다. 생성에는 Gemini AI 를 사용하고, 코드 컨텍스트에는 Retrieval-Augmented Generation (RAG) 을 사용하며, 실행에는 직접적인 ADO API 호출을 사용합니다.
흐름의 전체 아키텍처는 다음과 같습니다:
- Azure DevOps 의 사용자 스토리가 흐름을 트리거합니다.
- AI 가 간결한 요구사항을 생성합니다.
- 코드베이스에 대한 **벡터 검색 (RAG)**이 관련 기술 컨텍스트를 가져옵니다.
- AI 가 코드 컨텍스트를 포함하여 기술 사양을 생성합니다.
- AI 가 요구사항과 사양을 기반으로 포괄적인 테스트 전략을 생성합니다.
- AI 가 사양과 코드 컨텍스트를 구조화된 작업으로 분해합니다.
- 마지막으로, Power Automate 는 요구사항, 기술 사양, 및 테스트 전략을 ADO Wiki에 저장하고 개별 ADO 작업을 생성합니다.
전장: 특정 과제를 해결하고 솔루션 찾기
이것을 구축하는 것은 직선적인 과정이 아니었습니다. 흥미로운 디버깅 세션과 프롬프트 엔지니어링 개선의 연속이었습니다. 제가 싸운 주요 전투들 중 일부는 다음과 같습니다:
도전 과제