지속적 통합 (CI)
개발자들이 하루에 여러 번 코드 변경 사항을 공유 저장소에 병합하고, 각 병합이 빌드 및 테스트로 자동 검증되는 소프트웨어 개발 방식.
CI는 1991년 그래디 부치가 공식화하고 켄트 벡이 익스트림 프로그래밍의 일부로 대중화했습니다. 일반적인 파이프라인: 트리거→빌드→테스트→린트/스캔→보고서. 플랫폼: GitHub Actions, GitLab CI/CD, Jenkins.
graph LR
Center["지속적 통합 (CI)"]:::main
Rel_parallelism["parallelism"]:::related -.-> Center
click Rel_parallelism "/terms/parallelism"
Rel_agile_methodology["agile-methodology"]:::related -.-> Center
click Rel_agile_methodology "/terms/agile-methodology"
Rel_raid["raid"]:::related -.-> Center
click Rel_raid "/terms/raid"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 5살도 이해할 수 있게 설명
CI는 수학 문제를 풀 때마다 숙제를 확인하는 똑똑한 선생님과 같습니다. 한 달 말에 첫 페이지의 실수를 발견하는 대신, 몇 초 안에 알게 되어 즉시 수정할 수 있습니다.
🤓 Expert Deep Dive
효과적인 CI는 테스트 피라미드(단위 테스트 많음, E2E 테스트 적음)에 기반하며 트렁크 기반 개발(TBD)과 함께 사용할 때 가장 효과적입니다. CI는 CD(지속적 전달/배포)의 전제 조건입니다.
❓ 자주 묻는 질문
What is the difference between CI and CD?
CI (Continuous Integration) automatically builds and tests code on every commit, ensuring the codebase is always in a working state. CD (Continuous Delivery or Deployment) goes further, automatically delivering or deploying that verified code to staging or production environments.
What is 'integration hell'?
Integration hell occurs when developers work on separate branches for a long time and then try to merge everything at once. The resulting merge conflicts and hidden incompatibilities can take days or weeks to resolve. CI prevents this by integrating small changes frequently.
Do I need CI for a solo project?
It's highly recommended even for solo projects. CI automatically runs your tests on every commit, catching regressions you might miss, and platforms like GitHub Actions offer generous free tiers.