메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

지속적 배포 (CD): 릴리스 지옥을 끝내는 가장 확실한 방법

내가 경험한 바에 따르면 지속적 배포를 하면 소프트웨어 전달 시 ‘변경사항 전달에 걸린 시간’, ‘전달 가능한 변경사항 수’와 같은 핵심 지표들이 눈에 띄게 개선된다.

 

커밋된 코드가 유저 앞에 도달하기까지의 과정에 대한 이야기가 여전히 논의가 이어지고 있기에, 이 자리를 빌어 나의 경험을 공유하고자 한다. 부디 이 내용이, 이 책이 널리 사랑받는 다른 프랙티스들과 어깨를 나란히 하는데 긍정적으로 작용했으면 하는 바람이다.

 

자, 그럼 지속적 배포는 정확히 무슨 일을 할까? 미반영 코드가 프로덕션에 이르는 데 지속적 배포는 어떤 기여를 하는 걸까? 아주 가까운 친척 뻘인 지속적 전달과는 어떤 차이점이 있을까? 그리고 이 차이점이 중요한 이유는 무엇일까?

 

 

✅ 힘들수록 더 자주 하라

 

솔직히 나도 처음에는 리뷰, 통합, 테스트, 배포가 너무 귀찮아서 나중으로 미루려고 했다. 이런 일을 필요 이상 자주 하고 싶은 사람이 과연 있을까? 

 

몇 주간 나만의 기능 브랜치에서 코딩 하다 머지/릴리스 지옥을 더 이상 미룰 수 없는 때가 찾아오면 어떻게든 며칠간 고개를 푹 숙이고 끝내면 됐다. 고생이 끝나면 시련은 모두 잊고 다시 나만의 코드 정원으로, 평화롭고 안온한 일상으로 돌아가면 된다. 

 

하지만 누군가 우리 팀에 와서 그간 우리가 각자 작업한 새 기능이 모두 포함된 버전의 소프트웨어가 어떻게 작동되는지 보여달라고 요청하면 처음부터 또 시작이다. 이 성가신 이해관계자들이 데모와 릴리스로 그만 좀 훼방 놓았으면 하고 바라면서…. 그러면 개발자가 진짜 할 일에 집중할 수 있을 텐데!

 

나는 상이한 스케줄에 따라 통합과 릴리스를 진행해야 하는 팀에서 근무한 이후에야 힘들수록 더 자주 하라는 말이 무슨 뜻인지 이해되기 시작했다. 신기하게도 주기가 짧아지면서 팀이 소프트웨어를 준비하기 위해 할 일이 줄었고, 재작업이 줄면서 책상에 다시 돌아오는 일도 줄었다.

 

힘들수록 더 자주 하라는 말은 통합과 배포에서 고통의 쓴맛을 더 느끼라는 게 아니라, 빈도를 늘리면 느끼게 될 고통이 줄어든다는 뜻이다. 매번 릴리스하는 고통뿐만 아니라, 전체적인 고통도 줄어든다.

 

이처럼 힘들고 고통스러운 일을 미루지 말고 오히려 주기를 짧게 가져가라는 원칙은 애자일 소프트웨어 방법론의 하나인 익스트림 프로그래밍(XP)이 강조하는 핵심 철학 중 하나다. XP는 '작은 단위로 자주 통합하고 테스트한다'는 원칙을 내세웠는데, 이는 오늘날 지속적 통합(CI)과 지속적 전달/배포의 핵심 철학과 맞닿아 있다.

 

처음엔 직관에 반하는 얘기처럼 들린다. 고통스러운 일을 더 자주 하라니? 하지만 실제로는 주기를 짧게 가져가면 매번 처리해야 하는 변경량이 줄어들고, 문제가 생겨도 그 원인을 찾기 훨씬 쉬워진다. 나도 주 단위 배포를 경험하면서 “고통의 총량이 줄어드는 방식”을 실감했다. 몇 달 치 변경을 한꺼번에 올리던 시절보다, 오히려 매주 혹은 매일 배포하는 게 팀 전체를 덜 힘들게 했다.

 

 

✅ 자동화와 파이프라인의 진화

 

이 원칙은 자연스럽게 자동화로 이어졌다. 사람 손으로 반복하는 과정은 언제나 에러의 위험이 크고, 속도도 느리다. 그래서 빌드 → 테스트 → 배포라는 일련의 과정을 도구로 대체하는 흐름이 자리 잡았다. 이 과정에서 지속적 통합 (Continuous Integration, CI)이 업계 표준으로 자리잡았고 자동화 범위가 확장되면서 지속적 전달 (Continuous Delivery, CD), 더 나아가 지속적 배포 (Continuous Deployment, CD)로 발전했다.

 

출처: 『지속적 배포』(한빛미디어, 2025)

 

여기서 중요한 변화는 “코드는 항상 배포 가능한 상태여야 한다”는 생각이다. 기능 브랜치를 오랫동안 끌고 가는 대신, 작은 단위로 커밋하고 즉시 통합하며, 파이프라인을 통해 검증하는 것이다. 덕분에 ‘릴리스 지옥’을 겪을 일이 줄어들고, 새로운 기능을 언제든 이해관계자에게 보여줄 수 있게 되었다.

 

하지만 여기서도 여전히 한계는 남아 있었다. 바로 최종 배포 버튼이다. 대부분의 조직은 자동화된 파이프라인을 갖추고도, 마지막 단계만큼은 사람이 승인해야 했다. 이 버튼 하나가 남아 있다는 사실이 사소해 보일지 몰라도, 실제로는 워크플로 전체에 큰 차이를 만든다.

 

 

✅ 지속적 배포로 나아가기

 

프로덕션 배포는 언제나 두렵다. 실제 유저 환경은 예측 불가능하고, 트래픽과 데이터는 개발 환경에서 재현하기 힘들다. 잘못된 배포는 몇 분 만에 수많은 사람에게 피해를 줄 수 있다. 그렇다 보니 팀은 “조금 더 기다렸다가 한꺼번에 배포하자”라는 유혹에 자주 빠진다. 

 

그러나 경험상, 이것이야말로 가장 위험한 선택이었다.

 

릴리스 단위가 커질수록 리스크는 기하급수적으로 커진다. 작은 커밋 하나가 문제를 일으켰을 때는 바로 되돌리면 되지만, 수십 개 커밋을 한 번에 배포하면 원인을 찾는 데 몇 시간이 걸리고, 경우에 따라서는 롤백조차 어려워진다.

 

지속적 배포 (CD)는 이 문제를 정면으로 해결한다. 핵심은 단순하다. 마지막 버튼을 없애고, 모든 커밋을 자동으로 프로덕션까지 흘려보내는 것. 파이프라인이 품질 게이트를 통과했다고 판정하는 순간, 그 변경은 실제 유저 환경에 반영된다.

 

출처: 『지속적 배포』(한빛미디어, 2025)

 

이 방식은 개발자가 프로덕션을 더 이상 “나중에 신경 쓸 일”로 미루지 못하게 한다. 모든 커밋이 곧바로 유저 앞에 서기 때문에, 코드 작성 순간부터 프로덕션 환경을 1급 고려사항으로 다루게 된다. 결과적으로 코드 베이스와 프로덕션 상태는 항상 일치하며, 릴리스 관리라는 추가 작업이 사라진다.

 

 

✅ 우리가 던져야 할 질문들

 

물론 여기서 끝이 아니다. 지속적 배포를 도입하면 아래와 같은 새로운 고민들이 따라온다.

 

  • 미완성 기능은 어떻게 숨겨야 할까?
  • 하위 호환성을 깨뜨리지 않으려면 어떤 전략이 필요할까?
  • 배포와 기능 릴리스를 어떻게 분리할 수 있을까?
  • 인프라 안정성은 잦은 배포를 견딜 수 있을까?
     

이 질문들은 단순히 기술적인 체크리스트가 아니라, 팀의 업무 방식과 문화까지 바꾸는 문제다. 나 역시 팀에서 지속적 배포를 도입하면서 이런 질문들에 부딪혔고, 답을 찾는 과정에서 많은 시행착오를 겪었다.

 

이 글에서는 그 답을 다 풀어낼 수 없지만 책『지속적 배포』를 통해 실제 사례와 방법론을 바탕으로 이러한 질문들에 구체적으로 답하고자 한다.


* 위 콘텐츠는 지속적 배포』내용을 재구성하여 작성하였습니다.

 

지속적 배포는 단순히 자동화 도구를 하나 더 얹는 문제가 아니다. 소프트웨어 전달 경로 전체를 재정의하는 방식이자, 개발자가 프로덕션을 바라보는 태도 자체를 바꾼다. XP에서 시작된 “힘들수록 더 자주 하라”는 원칙이, 지속적 통합(CI)과 지속적 전달(CD)을 거쳐 결국 지속적 배포로 이어진 것은 결코 우연이 아니다.

 

나는 이 프랙티스가 지난 수십 년간 이어진 자동화 여정의 정점이라고 생각한다. 이제 남은 과제는, 각 팀이 이런 새로운 방식 속에서 어떻게 일하는 지를 탐구하는 일이다.  내 경험이 보여주듯, 릴리스 주기가 짧아질수록 고통이 줄고 품질이 높아진다. 책 『지속적 배포』는 그런 경험을 뒷받침하는 원칙과 실제 사례를 자세히 다루고 있다. 그 이야기는 책에서 자세히 풀어 보겠다.

댓글

댓글 입력