카카오TV, MSA 기반 데브옵스 구축기: Argo CD와 GitOps 도입
핵심 내용
Jenkins와 Argo CD를 분리하고 GitOps를 적용해 배포 자동화 및 운영 리소스를 최소화했다.
자세히 보기
카카오TV는 2018년 MSA 도입을 결정하며 쿠버네티스 기반 데브옵스 시스템을 구축했다. 초기에는 서비스 안정성을 위해 Dev/Sandbox와 CBT/Production 환경을 물리적으로 분리했으며, Istio 대신 Ingress NGINX를 선택해 스트랭글러 패턴과 함께 트래픽 라우팅을 처리했다.
CI/CD 구조 개선과 GitOps 도입
기존 Jenkins 중심의 CI/CD는 DRY 원칙 위반으로 인해 설정 변경 시 모든 MSA 프로덕트의 파이프라인을 수정해야 하는 유지보수 부담이 컸다. 이를 해결하기 위해 CI는 Jenkins로 유지하되, CD는 Argo CD로 분리하여 GitOps 방식을 채택했다. GitOps는 배포 형상을 선언형으로 기술하고 Git 리포지토리를 단일 진실 공급원으로 활용하여 배포 이력 관리와 롤백을 간소화한다.
배포 전략도 복잡한 Git Flow에서 GitHub Flow로 단순화했다. 개발자가 PR 머지 버튼만 누르면 도커 이미지 빌드, Helm 차트 기반 values 파일 생성, GitOps 리포지토리 푸시, Argo CD 동기화가 자동 수행된다. 신입 개발자도 별도의 학습 없이 배포할 수 있도록 인터페이스를 설계했다.
인프라 관리 최적화
오픈소스 인프라 관리를 위해 Helm 차트를 직접 수정하는 대신 Kustomize를 활용해 필요한 부분만 패치하는 방식을 도입했다. Replicated의 Ship 도구를 이용해 Helm을 Kustomize 형태로 변환한 후, 변경 사항을 GitOps 리포지토리에 커밋하여 Argo CD로 관리했다.
또한 Stateful한 Jenkins 애플리케이션을 Stateless하게 관리하기 위해 Configuration as Code 플러그인과 DSL을 활용해 설정과 Job을 코드로 관리했다. Jenkins 데이터는 Git에 저장되므로 PV 삭제나 파드 재시작만으로 복구 가능하며, 레플리카 증설을 통해 자연스럽게 스케일아웃이 가능하도록 구성했다. 이러한 구조를 통해 운영 리소스를 대폭 절감하고 배포 안정성을 확보했다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.