Deployment(배포 · 쿠버네티스 배포 관리 객체)
Deployment는 일반적인 소프트웨어 개발 맥락에서는 완성된 소프트웨어를 운영 환경에 옮겨 실행 가능하게 만드는 '배포' 과정을, 쿠버네티스 맥락에서는 원하는 개수의 Pod를 자동으로 유지·갱신하고 롤백까지 관리해주는 '배포 관리 객체'를 뜻하는, 서로 다른 두 가지 의미로 쓰입니다.
한눈에 보는 정의
Deployment는 맥락에 따라 두 가지 서로 다른 의미로 쓰이는 용어입니다.
1. 배포(일반적인 소프트웨어 배포 과정)
개발과 테스트를 마친 소프트웨어를, 실제 사용자가 이용할 수 있는 운영 환경에 옮겨 실행 가능한 상태로 만드는 과정을 뜻합니다.
- 예문: "새 버전은 테스트 서버에서 충분히 검증된 뒤, 자정에 운영 서버로 Deployment가 진행됐다."
- Building(빌드) (빌드) 과정을 거쳐 만들어진 실행 파일이나 패키지를, 서버나 클라우드 인프라에 실제로 올려 사용자가 접근할 수 있게 만드는 마지막 단계에 해당합니다.
- 사람이 수동으로 파일을 옮기던 방식에서 벗어나, CI/CD(지속적 통합·배포) (CI/CD) 파이프라인을 통해 자동으로 배포하면 실수를 줄이고 배포 속도를 크게 높일 수 있습니다.
- 배포 후 예상치 못한 문제가 발견되면, 이전 정상 버전으로 즉시 되돌리는 '롤백(rollback)' 절차를 미리 마련해두는 것이 안정적인 운영을 위한 필수 대비책으로 여겨집니다.
2. Deployment(쿠버네티스 배포 관리 객체)
Kubernetes(쿠버네티스) (쿠버네티스)에서, 원하는 개수의 Pod(파드) (Pod)가 항상 실행되도록 자동으로 유지하고, 버전을 갱신하거나 문제가 생기면 이전 버전으로 되돌리는 것까지 관리해주는 객체입니다.
- 예문: "Deployment 설정에서 복제본 수를 3개로 지정하자, Pod 하나가 죽어도 즉시 새 Pod가 자동으로 만들어져 항상 3개를 유지했다."
- Pod를 직접 하나하나 만들고 관리하는 대신, '이 컨테이너로 Pod 3개를 항상 유지해달라'고 Deployment에 선언해두면 나머지는 쿠버네티스가 알아서 처리합니다.
- 새 버전으로 업데이트할 때도 Rolling Update(롤링 업데이트) (롤링 업데이트)처럼 서비스 중단 없이 점진적으로 전환하는 전략을 Deployment 설정만으로 손쉽게 적용할 수 있습니다.
Q. 그래서 '이거 Deployment 문제야'라고 하면 뭘 뜻하나요?
일반적인 개발·운영 대화에서는 대부분 '배포 과정' 자체의 문제(배포 실패, 배포 지연 등)를 가리킵니다. 쿠버네티스를 다루는 문맥이라면 Pod 개수나 버전 관리를 담당하는 Deployment 객체의 설정 문제를 가리키는 경우가 많습니다.