
이번 시간부터는 CI/CD 파이프라인과 컨테이너 기술 등 웹 개발의 배포 자동화 과정에 대해 정리하겠습니다.
전통적인 소프트웨어 인도 프로세스는 개발 → 품질 보증 → 운영 단계로 나뉘어 진행됩니다. 이러한 전통적 방식에는 몇 가지 단점이 있습니다.
이러한 단점들을 보완하기 위해 각 단계를 자동화하는 파이프라인 구축이 필요합니다.
개발부터 배포까지의 단계를 자동화하는 것을 CI/CD라고 합니다.
| 구분 | 의미 | 역할 |
|---|---|---|
| CI (Continuous Integration) | 지속적 통합 | 코드의 빌드, 테스트, 병합이 잘 이루어지는지 자동으로 확인합니다. |
| CD (Continuous Delivery/Deployment) | 지속적 인도/배포 | 기존 QA 팀의 인수 테스트와 운영 팀의 구성 관리 역할까지 자동화합니다. |
CD를 성공적으로 구현하기 위해서는 다음과 같은 전제 조건이 갖춰져야 합니다.
웹 개발 파이프라인을 구축하기 위해 다양한 도구들을 활용합니다.
| 역할 | 도구 |
|---|---|
| 컨테이너 가상화 및 클러스터 운용 | Docker, Kubernetes |
| 파이프라인 자동화 서버 | Jenkins |
| 구성 관리 자동화 | Ansible |
| 버전 관리 | GitHub |
응용 프로그램, 설정 파일, 라이브러리 및 관련 의존성을 하나로 묶어 관리하는 것을 컨테이너화라고 하며, 이렇게 묶인 덩어리를 컨테이너라고 부릅니다.
컨테이너화를 적용하면 다음과 같은 이점이 있습니다.
가상화란 물리적인 컴퓨터 리소스를 추상화하여, 사용자가 리소스와 상호작용하는 방식으로부터 물리적 특징을 감추는 기술입니다. 하나의 컴퓨터에서 여러 대의 컴퓨터를 운영하는 것처럼 만들어주는 VirtualBox가 대표적인 예시입니다.
이러한 가상화를 CI/CD 파이프라인에 사용하는 이유는, 항상 동일하고 통일된 환경을 제공하여 자동화를 적용하기 좋기 때문입니다.
서버 가상화 기술은 크게 두 가지로 나뉩니다.
| 방식 | 특징 |
|---|---|
| VM (가상 머신) 기반 | 하이퍼바이저를 통해 하드웨어 자체를 모사합니다. 비교적 무겁고 느립니다. |
| 컨테이너 기반 | OS를 모사하며, 컨테이너 엔진이 격리된 런타임 환경을 제공합니다. |
컨테이너 가상화는 하드웨어를 모사하는 VM과 달리 OS를 모사하기 때문에 훨씬 가볍고 빠릅니다. 디스크 용량 절감과 낮은 오버헤드라는 장점도 있어 현대 개발 환경에서 널리 채택되고 있습니다.