피드로 돌아가기
How hard can it be to build a CI/CD system?
Dev.toDev.to
DevOps

4대 추상화 모델 기반의 플러그형 분산 CI/CD 시스템 설계

How hard can it be to build a CI/CD system?

Francesc Gil2026년 5월 28일5intermediate

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 기반 플러그인 형태로 설계하여 시스템 확장성 강화

원문 읽기