같은 글자, 다른 약속 두 개
CD 는 의도적으로 overloaded 야. 같은 두 글자가 두 가지 다른 걸 뜻해. 그리고 그 차이는 대부분의 팀이 인정하는 것보다 훨씬 중요해.
- Continuous Delivery — CI 를 통과한 모든 commit 이 자동으로 packaging 되고 versioning 되고 deploy 할 준비가 돼. 그래도 사람이 버튼을 누르거나 release ticket 을 승인해야 prod 에 닿아.
- Continuous Deployment — CI 를 통과한 모든 commit 이 자동으로 prod 에 deploy 돼. 사람 없음. Pipeline 자체가 deploy 버튼이야.
둘 다 밑에 작동하는 CI 가 필요해. Delivery 는 쉬운 약속이야: 지금 ship 하고 싶으면 이 commit 을 ship 할 수 있어. Deployment 는 어려운 약속이고: 지금 이 commit 을 ship 하고 있어, test suite + rollback plan 이 그 결정을 걸 만큼 충분히 좋아.
어느 쪽을 진짜 원해?
Deployment 가 화려하고 대부분의 팀은 정직하게 그걸 못 해. Delivery 가 현실적인 목표야 — test coverage, observability, rollback 스토리가 성숙할 때까지는. 잘못 고르는 거 — pipeline 이 사실은 Delivery 인데 Deployment 라고 주장하는 거 — 가 outage 사는 곳이지.