CICD 구축

Claude Agent들은 feauture 단위로 컨텍스트를 소비할거라, feature 개발이 끝나면 MR을 생성해 기능테스트를 하기로 계획했다.
Dev
MR이 생성되면 ArgoEvents로 구성된 CICD 파이프라인이 동작하면서 이미지를 빌드 및 푸시하고 HelmRepo의 dev-values.yaml의 이미지 태그를 변경한다. Dev K8s는 변경사항을 감지하고 Sync를 맞추어 배포를 진행하고 테스트를 진행한다.
Prod
테스트가 완료되면 Merge 이벤트를 발생시켜 CICD 파이프라인을 동작시키고 HelmRepo의 prod-values.yaml의 이미지 태그를 변경한다. Prod K8s는 변경사항을 감지하고 Sync를 맞추어 배포를 진행하고 테스트를 진행한다.
App of Apps
CICD App들은 app of apps 패턴으로 생성하여, Argocd Application CRD도 형상관리가 가능하게 하면서 migration에 용이하도록 하였다. 한가지 주의할 점은 Auto Sync를 막아놓고 eventbus -> eventsource, eventsensor 순으로 sync를 맞추고 제거시에는 eventsource,eventsensor -> eventbus 순으로 제거해야 한다. 동시에 sync를 맞추고 제거하면 eventbus가 hang에 걸려 제대로 삭제 되지 않는다.
Claude 설계

Plan
Main Claude에게 구현할 서비스 아키텍처를 주고 Planning을 시켜 계획을 세우면 Gemini로 한번 더 계획을 리뷰하도록 하였다. 이 과정은 Skill로 구현하고 리뷰가 완료되면 Todo 리스트를 작성시켜 단계적으로 개발에 들어갈 수 있도록 하였다. Todo 리스트는 크게 Feature 단위와 SubTask 단위로 나누고 SubTask 작업이 끝나면 Git Push를, Feature가 끝나면 Git MR을 생성하도록 하였다.
문법검사
Bash 툴을 써서 git push 커맨드가 동작하면 PreToolUse Hook을 동작시켜 문법검사 쉘스크립트를 동작시켰다. 만약 문법에 문제가 있다면 git push는 중단되고 문법검사 내용을 Lint-Runner Agent에게 던져서 원인 분석을 시킨 뒤, 원인 분석이 끝나면 그 결과를 개발 담당 Agent에게 던져서 코드를 수정하도록 구현하였다.
오류분석
기능 테스트 중 오류가 발생하면 Grafana MCP로 메트릭과 로그를, Kuberenetes MCP로 k8s 상태 정보를 조회하여 오류 데이터를 Error Manager Agent에게 던져서 원인 및 조치 방법을 분석하고 분석 결과가 나오면 그 결과를 개발 담당 Agent에게 던져서 코드를 수정하도록 구현하였다.
문서기록
개발 담당 Agent들이 Write,Edit 툴을 수행할 때마다 PostToolUse Hook을 걸어 그 기록을 docs 디렉토리의 activity.log로 기록하고 docs keeper Agent가 update-docs skill로 트리거되어 activity.log를 기준으로 git 명령어를 변경사항을 조회해, 사람이 이해할 수 있는 문서로 CHAGNELOG.md(무엇을 변경했는지)와 DESIONS.md(무엇을 결정했는지)를 기록하도록 하도록 하였다.
'프로젝트' 카테고리의 다른 글
| [DevLink] kind 환경 구축하기 ( 2025.02.19(수) ) (0) | 2025.02.19 |
|---|---|
| [프로젝트] 로그인 및 회원가입 기능 구현 Day1 (0) | 2024.04.09 |
| [프로젝트] 포스트서비스 에러 조치 및 매칭 서비스 구현( 2023.12.28(목) ) (0) | 2023.12.29 |
| [프로젝트] 멘토링 서비스 구현 마무리 ( 2023.12.27(수) ) (0) | 2023.12.28 |
| [프로젝트] Naver Clova Speech 서비스에 적용 ( 2023.12.20(수) ) (0) | 2023.12.21 |