피드로 돌아가기
Kubernetes BlogInfrastructure
원문 읽기
The Invisible Rewrite: Modernizing the Kubernetes Image Promoter
Kubernetes Image Promoter를 9단계 점진적 재작성으로 코드 20% 삭제하면서 프로덕션 promotion 작업을 30분 이상 단축하고 rate limit 오류 제거
AI 요약
Context
Kubernetes Image Promoter(kpromo)는 7년간 누적된 중복 코드, 동일 기능의 여러 구현 방식, 완료되지 않은 TODO들을 포함한 모놀리식 구조로 확장이 어려워졌다. 프로덕션 promotion 작업은 30분 이상 소요되고 rate limit 오류가 빈번했으며, 새로운 기능(provenance, vulnerability scanning) 추가가 고통스러웠다.
Technical Solution
- Rate limiting 재작성: 모든 registry 작업을 적응형 백오프로 적절하게 제한하는 메커니즘 구현 (#1702)
- 인터페이스 추상화: registry와 인증 작업을 clean interface 뒤에 배치해 교체와 단독 테스트 가능 구조 구성 (#1704)
- Pipeline 엔진 도입: 단일 대형 함수 대신 7개 명확하게 분리된 phase(Setup → Plan → Provenance → Validate → Promote → Sign → Attest)로 promotion 실행 구조 전환 (#1705)
- SLSA provenance 검증 추가: staging 이미지에 대한 provenance 확인 기능 구현 (#1706)
- 서명과 복제 분리: image signing과 signature replication을 별도 pipeline phase로 분리해 rate limit 경합 제거 (#1713)
- 모놀리식 코어 완전 제거: 9단계 점진적 phased approach로 레거시 code path 완전 삭제 (v4.2.0 → v4.3.0 이행)
- 병렬 처리 및 재시도 로직: registry 읽기 병렬화, 모든 네트워크 작업에 대한 재시도 로직, per-request timeout, HTTP connection 재사용 구현
Impact
프로덕션 promotion 작업 시간을 30분 이상 단축 (구체적 수치 미명시).
Key Takeaway
인프라 핵심 도구의 대규모 재작성은 점진적 phased approach로 각 단계를 독립적으로 검토·병합·검증함으로써 롤백 경로를 유지하면서 진행할 수 있으며, 사용자 노출 변화 없음을 엄격한 요구사항으로 유지하면서도 내부 아키텍처를 근본적으로 개선할 수 있다.
실천 포인트
모놀리식 구조의 legacy 시스템을 전면 재작성해야 할 때, 전체 시스템을 한번에 교체하는 대신 기능별로 명확한 interface를 정의하고 각 phase를 순차적으로 구현·배포하면 리스크를 최소화하면서도 7년치 기술 부채를 제거할 수 있다.