[CI/CD] Virtualization vs Containerization
가상화와 컨테이너화는 컴퓨터 시스템에서 Application을 호스팅하는 가장 보편적인 방법이다.
AWS를 이용하는 방법은 Virtualization방식 이고, Docker를 이용하는 방법은 Containerization방식이다.
1. Virtualization
가상화 방식의 가장 큰 특징은 단일 컴퓨터 리소스 혹은 서버에서 VM으로 리소스를 분할하고 각 VM에 필요한 OS를 다르게 설정할 수 있다는 점이다. 각 VM은 독립적으로 격리되어 있어 높은 보안성을 제공한다. 그러나, 이 보안을 유지하기 위해서는 각 VM 간의 접근에 대한 강화된 보안조치가 필요로 한다. VM은 각자의 운영 체제와 커널을 포함하기 때문에 리소스 소모가 더 크다.
2. Containerization
컨테이너화 방식의 가장 큰 특징은 각자 별도의 OS를 사용하지 않고 호스트OS를 이용하는 일종의 소프트웨어 패키지 형식으로 동작하기 때문에 어디서나 동일하게 실행할 수 있어 이식성이 높다. OS를 공유하기 때문에 필요한 라이브러리와 바이너리만 포함하여 매우 경량화되어 있다. 또한 VM보다 시작과 종료가 빠르며, 효율적인 리소스 사용이 가능하다. 컨테이너는 기본적으로 호스트 OS의 리소스를 공유하므로, 리소스 격리 프로세스를 통해 다른 컨테이너와의 접근을 최소화한다. 그러나 보안 측면에서 VM보다 약할 수 있으므로 추가적인 보안 조치가 필요할 수 있다.
3. 요약
위의 정보를 요약하면 가상화는 다양한 운영 체제와 복잡한 격리 요구 사항이 있는 환경에서 유용하고, 컨테이너화는 빠른 배포와 효율적인 리소스 사용이 중요한 환경에서 유리하다.
두가지 방식은 어떤것이 더 좋다 라고 하기 보다는 서버를 구성함에 있어서 프로젝트에 더 필요한 방식을 선택하여 구현하는 것이 좋다.