불변 인프라와 가상화 기술

혀어어언·2023년 4월 7일
0

Docker

목록 보기
1/11

불변 인프라(Immutable Infrastructure)

개념

서버, 네트워크, 애플리케이션 등 인프라스트럭처의 구성 요소들이 변경되지 않고 대신 새로운 인프라스트럭처를 배포(교체)하는 방식입니다. 이러한 방식은 인프라스트럭처를 더욱 안정적이고 확장성 있는 방식으로 관리할 수 있게 만들어줍니다.

주요 특징

  1. 변경 불가능한 구성

    • 한 번 생성된 인프라스트럭처를 수정하지 않고 대신 새로운 인프라스트럭처를 배포하는 방식이기 때문에 예측 가능한 인프라스트럭처를 유지할 수 있으며, 인프라스트럭처 변경에 따른 오류 가능성을 줄여줍니다.
  2. 자동화

    • 인프라스트럭처 배포 및 관리를 자동화하여 더욱 효율적인 인프라스트럭처 관리를 가능하게 하며, 높은 신뢰성과 안정성을 보장할 수 있습니다.
    • 이러한 자동화를 통해 배포 작업을 반복적으로 수행할 수 있으며, 개발자 및 운영팀의 생산성을 향상시킵니다.
  3. 스케일링이 쉬움

    • 인프라스트럭처를 변경하지 않고 대신 새로운 인프라스트럭처를 배포하는 방식으로, 서버 또는 애플리케이션 인스턴스의 수를 증가시킬 수 있습니다.
    • 이러한 방식은 빠른 확장 및 축소를 가능하게 하며, 비즈니스 요구 사항에 더욱 유연하게 대처할 수 있습니다.
  4. 보안

    • 변경 불가능한 구성으로 인프라스트럭처의 일관성을 유지하면서도, 보안 업데이트를 적용할 수 있습니다.

    • 또한, 변경 불가능한 인프라스트럭처는 공격자가 인프라스트럭처를 변조하거나 수정할 수 있는 가능성을 줄여줍니다.

가상화(Virtualization) 기술

가상화 기술이란?

  • 하나의 물리적인 컴퓨터 자원을 가상적으로 분할하여 여러 개의 가상 컴퓨터 환경을 만들어 내는 기술입니다.
  • 물리적인 컴퓨터 자원을 더욱 효율적으로 사용할 수 있습니다.
  • 서버나 앱 운영에 있어서 유연성과 안정성 을 제공합니다.

가상화 기술의 종류

deploy

가장 왼쪽은 물리 서버
가운데는 하이퍼바이저 기반 가상화 기술 적용
컨테이너 기반 가상화 기술 적용

이미지출처: [쿠버네티스 공식홈페이지] https://kubernetes.io/ko/docs/concepts/overview/

하이퍼바이저 기반 가상화

  • Hypervisor-based Virtualization

하이퍼바이저(Hypervisor)란?

하이퍼바이저는 호스트 OS에서 독립적인 운영 체제인 가상 머신(VM; Virtual Machine)을 생성하고 구동하는 가상화 소프트웨어입니다. 이를 통해 호스트 OS 위에서 다른 운영 체제들이 가상화된 형태로 실행될 수 있습니다.

하이퍼바이저 분류

  • Type 1 Hypervisor
    • 하이퍼바이저가 물리적인 서버에 직접 설치되며, 그 위에 여러 개의 가상 서버를 운영하는 방식입니다.
    • 대표적인 예로 VMWare ESXi, Microsoft Hyper-V 등이 있습니다.
  • Type 2 Hypervisor
    • 호스트 OS 위에 하이퍼바이저가 설치되며, 그 위에 여러 개의 가상 서버를 운영하는 방식입니다.
      • 즉, OS 없이 직접 리소스에 붙어서 게스트 OS에 자원을 할당
    • 대표적인 예로 Oracle VirtualBox, VMWare Workstation 등이 있습니다.

컨테이너 기반 가상화

  • Container-based Virtualization

컨테이너

컨테이너 기반 가상화는 앱과 그에 필요한 모든 의존성을 포함하는 실행 환경인 컨테이너를 사용하여 앱을 패키징하고 실행하는 기술입니다. 이를 통해 서버의 환경에 상관없이 애플리케이션을 일관성 있게 배포하고 실행할 수 있습니다.

가상화 기술 중 하나이지만, 전통적인 가상화 기술과는 다른 방식으로 작동합니다. 전통적인 가상화 기술은 하이퍼바이저를 사용하여 호스트 OS 위에 게스트 OS를 실행하고, 각각의 게스트 OS는 자신만의 파일 시스템과 라이브러리를 가지고 있습니다.

반면에, 컨테이너 기반 가상화는 호스트 OS에서 직접 실행되며, 각각의 컨테이너는 호스트 OS와 동일한 파일 시스템과 라이브러리를 공유합니다. 이러한 이유로 컨테이너는 더 가볍고 빠르며, 시스템 자원을 더 효율적으로 활용할 수 있습니다.

즉, 컨테이너는 고성능 서버를 조금 더 안정적이고 효율적으로 사용하기 위한 가상화 기술로 하이퍼바이저와 달리 guest OS를 별도로 설치할 필요 없이 컨테이너 엔진을 통해서 설치합니다.

  • 대표적인 예로 Docker, Kubernetes 등이 있습니다.
    • Docker는 애플리케이션과 의존성을 포함하는 이미지를 만들고, 이를 기반으로 컨테이너를 실행하는 기술입니다.
    • Kubernetes는 컨테이너를 관리하고 배포하는 컨테이너 오케스트레이션 시스템으로, 여러 개의 호스트에서 컨테이너를 관리하고, 컨테이너 간의 통신과 스케일링 등을 자동화합니다.
    • Docker Compose는 여러 개의 Docker 컨테이너를 정의하고 실행하는 기술로, 여러 개의 애플리케이션을 연결하여 실행하고, 개발 및 테스트 환경을 쉽게 구축할 수 있습니다.

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 등이 있습니다.

0개의 댓글