피드로 돌아가기
Dev.toDevOps
원문 읽기
4대 추상화 모델 기반의 플러그형 분산 CI/CD 시스템 설계
How hard can it be to build a CI/CD system?
AI 요약
Context
Concourse CI의 Resource Abstraction 모델은 유연하나 운영 오버헤드가 높음. GitHub Actions로는 충족 불가능한 커스텀 환경 필요성과 단일 바이너리 기반의 수평 확장성 요구로 인해 PikoCI 설계 추진.
Technical Solution
- Resource, Runner, Service, Secret의 4가지 Pluggable Abstractions를 정의하여 URL 기반의 동적 로딩 구조 구현
- HCL 설정을 통해 타입 정의와 인스턴스화를 분리함으로써 파이프라인 구성의 재사용성 확보
- Pub/Sub Queue 기반의 Worker 통신 구조를 채택하여 Worker의 위치 투명성 및 NAT 환경 내 배포 가능성 확보
- Service Type에 Ready Check와 Stop 로직을 내장하여 Docker-in-Docker 없이도 Task 실행 전후의 의존성 생명주기 관리
- DB 및 Pub/Sub 시스템을 인터페이스화하여 In-memory, SQLite, NATS 등 환경에 따른 저장소 및 메시징 백엔드 교체 가능 설계
실천 포인트
1. 외부 의존성(DB, Queue)을 인터페이스로 추상화하여 개발-테스트-운영 환경의 런타임 전환 가능 여부 검토
2. Worker-Server 간 직접 연결 대신 Message Queue를 통한 비동기 구독 모델로 확장성 확보
3. 인프라 구성 요소(Runner, Secret 등)를 URL 기반 플러그인 형태로 설계하여 시스템 확장성 강화