서버, 네트워크, 애플리케이션 등 인프라스트럭처의 구성 요소들이 변경되지 않고 대신 새로운 인프라스트럭처를 배포(교체)하는 방식입니다. 이러한 방식은 인프라스트럭처를 더욱 안정적이고 확장성 있는 방식으로 관리할 수 있게 만들어줍니다.
변경 불가능한 구성
자동화
스케일링이 쉬움
보안
변경 불가능한 구성으로 인프라스트럭처의 일관성을 유지하면서도, 보안 업데이트를 적용할 수 있습니다.
또한, 변경 불가능한 인프라스트럭처는 공격자가 인프라스트럭처를 변조하거나 수정할 수 있는 가능성을 줄여줍니다.
Virtualization
) 기술가장 왼쪽은 물리 서버
가운데는 하이퍼바이저 기반 가상화 기술 적용
컨테이너 기반 가상화 기술 적용
이미지출처: [쿠버네티스 공식홈페이지] https://kubernetes.io/ko/docs/concepts/overview/
Hypervisor-based Virtualization
Hypervisor
)란?하이퍼바이저는 호스트 OS에서 독립적인 운영 체제인 가상 머신(VM; Virtual Machine
)을 생성하고 구동하는 가상화 소프트웨어입니다. 이를 통해 호스트 OS 위에서 다른 운영 체제들이 가상화된 형태로 실행될 수 있습니다.
Container-based Virtualization
컨테이너 기반 가상화는 앱과 그에 필요한 모든 의존성을 포함하는 실행 환경인 컨테이너를 사용하여 앱을 패키징하고 실행하는 기술입니다. 이를 통해 서버의 환경에 상관없이 애플리케이션을 일관성 있게 배포하고 실행할 수 있습니다.
가상화 기술 중 하나이지만, 전통적인 가상화 기술과는 다른 방식으로 작동합니다. 전통적인 가상화 기술은 하이퍼바이저를 사용하여 호스트 OS 위에 게스트 OS를 실행하고, 각각의 게스트 OS는 자신만의 파일 시스템과 라이브러리를 가지고 있습니다.
반면에, 컨테이너 기반 가상화는 호스트 OS에서 직접 실행되며, 각각의 컨테이너는 호스트 OS와 동일한 파일 시스템과 라이브러리를 공유합니다. 이러한 이유로 컨테이너는 더 가볍고 빠르며, 시스템 자원을 더 효율적으로 활용할 수 있습니다.
즉, 컨테이너는 고성능 서버를 조금 더 안정적이고 효율적으로 사용하기 위한 가상화 기술로 하이퍼바이저와 달리 guest OS를 별도로 설치할 필요 없이 컨테이너 엔진을 통해서 설치합니다.
OS-level Virtualization
OS 가상화는 호스트 OS 위에서 여러 개의 격리된 환경을 만들어 서버를 운영하는 기술입니다. 가상 서버마다 독립된 파일 시스템, 네트워크 인터페이스 등을 가질 수 있으며, 여러 개의 OS를 실행하는 것이 가능해집니다.
대표적인 예로 LXC, OpenVZ 등이 있습니다.
Application Virtualization
애플리케이션 가상화는 앱을 호스트 OS와 독립된 환경에서 실행하는 기술입니다. 앱과 그에 필요한 의존성을 패키징하여 배포하는 것이 가능해집니다.
대표적인 예로 Java Virtual Machine, .NET Framework 등이 있습니다.
Network Virtualization
네트워크 가상화는 하나의 물리적인 네트워크에서 여러 개의 가상 네트워크를 생성하는 기술입니다. 가상 네트워크 간의 통신은 가상 스위치와 같은 가상 네트워크 장비를 통해 이루어집니다.
대표적인 예로 VMware NSX, Cisco ACI 등이 있습니다.
Storage Virtualization
스토리지 가상화는 여러 개의 스토리지 장치를 하나의 가상 스토리지로 관리하는 기술입니다. 물리적인 스토리지 장치와 논리적인 스토리지를 분리함으로써 스토리지의 확장성과 가용성을 높일 수 있습니다.
대표적인 예로 EMC VPLEX, NetApp ONTAP 등이 있습니다.