이번 시간부터는 CI/CD 파이프라인과 컨테이너 기술 등 웹 개발의 배포 자동화 과정에 대해 정리해 볼게요.
전통적인 소프트웨어 인도 프로세스는 개발, 품질 보증, 운영 단계로 나뉘어 진행돼요.
이러한 전통적 방식은 인도 기간과 피드백 주기가 느리다는 단점이 있어요. 자동화가 미비하여 핫픽스 적용 시 위험성이 크고, 건전한 개발 문화를 형성하는 데 한계가 존재해요. 이러한 단점들을 보완하기 위해 각 단계를 자동화하는 과정이 필요해요.
개발부터 배포까지의 단계를 자동화하는 것을 CI/CD 라고 불러요.
CD 를 성공적으로 구현하기 위해서는 자동화된 빌드 및 배포 환경, 신속한 파이프라인 실행과 장애 복구, 무중단 배포, 트렁크 기반 개발 등의 전제 조건이 갖춰져야 해요.
웹 개발 파이프라인을 구축하기 위해 다양한 도구들을 활용해요.
응용 프로그램, 설정 파일, 라이브러리 및 관련된 의존성을 하나로 묶어 관리하는 것을 컨테이너화라고 하며, 이렇게 묶인 덩어리를 컨테이너라고 불러요.
컨테이너화를 적용하면 개발 및 배포의 효율과 안정성이 향상돼요. 시스템 의존성이 최소화되어 소프트웨어 이식이 용이해지며, 이러한 유연성을 바탕으로 클라우드 컴퓨팅 인프라에서 널리 활용되고 있어요.
가상화란 물리적인 컴퓨터 리소스를 추상화하여, 사용자가 리소스와 상호 작용하는 방식으로부터 물리적 특징을 감추는 기술이에요. 하나의 컴퓨터에서 여러 대의 컴퓨터를 운영하는 것처럼 만들어주는 VirtualBox 가 대표적인 예시예요.
이러한 가상화를 CI/CD 파이프라인에 사용하는 이유는, 항상 동일하고 통일된 환경을 제공하여 자동화를 적용하기 좋기 때문이에요.
서버 가상화 기술은 크게 가상 머신 기반과 컨테이너 기반으로 나뉘어요.
컨테이너 가상화는 컨테이너 엔진이 가상의 런타임 환경을 제공하고 애플리케이션을 격리된 상태로 실행해요. 하드웨어를 모사하는 VM 과 달리 OS 를 모사하기 때문에, 하이퍼바이저를 이용하는 기존 방식보다 훨씬 가볍고 빠르며 디스크 용량 절감과 낮은 오버헤드라는 장점을 가져요.