Covenant



0. 시작


  • SK C&C의 이정민, 차일환 수석님이 강의하시고 KAIST에서 운영한 강좌인 MOOC 오픈소스를 활용한 DevOps 환경 이해 강좌를 바탕으로 작성하였습니다.


온 프레미스 vs 오프 프레미스



온 프레미스 (On-Premises)


기존에는 온 프레미스(On-Premises) 방식으로

  • 일반적이고 전통적인 시스템 운영 방식입니다.
  • 자체적으로 데이터 센터를 보유, 직접 구축/운영 수행을 하였습니다.

온 프레미스의 단점으로

  • (1) 물리적 하드웨어를 구입하고 구축해야 하기 때문에 초기 투자비용이 높으며 운영 및 유지가 어렵습니다.
  • (2) 고정된 방식으로 컴퓨팅 자원을 활용하기 때문에 운영 탄력성이 떨어져서 자원 활용에 비효율적인 측면이 있습니다.


오프 프레미스 (Off-Premises)


  1. 클라우드 컴퓨팅을 활용하는 방식입니다.
  2. 하드웨어를 직접 구입 및 유지를 하지 않아도 되는 사용요금을 내고 컴퓨팅 자원을 빌려쓰는 방식입니다.
  3. 초기 구축 기간 및 비용이 낮고, 컴퓨팅 자원의 효율적인 이용이 가능합니다.
  4. 미션 크리티컬, 보안성이 높은 시스템을 제외하고 대부분 클라우드 컴퓨팅 환경으로 전환 중입니다.


클라우드 컴퓨팅: 가상화란?


클라우드 컴퓨팅의 핵심 기술은 가상화 입니다.

  • 물리적인 하드웨어를 논리적으로 추상화하는 것입니다.
  • 하나의 물리적 하드웨어를 여러개인 것처럼 동작하거나 여러개의 물리적 하드웨어를 하나인 것처럼 동작합니다.

보통 서버를 운영하면 피크 다음에 집중적으로 많은 자원을 사용하고 그외의 경우에는 실제 용량의 보통 20% 이하만 사용합니다. 사용하지 않은 80%의 유휴자원은 낭비됩니다. 가상화를 통해서 유휴 자원의 사용 효율정을 증대시킬 수 있습니다. CPU, 메모리, 스토리지, 네트워크 등 가상화하여 사용가능합니다.


클라우드 컴푸팅이란?

  • 기존의 서버, 스토리지, 네트워크 등의 하드웨어 위에서 동작하는 가상화 환경을 제공하는 것입니다.
  • 하드웨어의 구매 / 운영유지를 효괒거으로 관리하여 비용을 절감할 수 있습니다.
  • 동적으로 급변하는 변경 수요에 효과적으로 대응할 수 있습니다,

가상화의 예

가상화는 대상 및 사용 유형에 따라 다양하게 분류됩니다.


  • 하드웨어 리소스 별 가상화
    • CPU 가상화: 물리적인 CPU의 코어에 가상의 CPU를 할당하여 사용하는 것
    • 메모리 가상화: 물리적 메모리의 특정 영역에 가상 메모리를 할당하여 사용하는 것
    • 스토리지 가상화: 물리적인 스토리지에 특정 영역을 가상 스토리지로 할당하여 사용하는 것
    • 네트워크 가상화:
      • 가상의 네트워크 인터페이스를 할당하는 것
      • 가상 네트워크를 구성하는 것

  • 사용 유형별 가상화
    • 서버 가상화: 하나의 물리 서버를 기반으로 여러 개의 OS를 설치하고 구동하여 여러 대의 서버를 가상화
    • 데스크톱 가상화(VDI): 원격지의 데이터센터 서버에서 가상의 PC 데스크톱 환경을 제공하여 로컬의 PC를 사용하는 것처럼 가상화
    • 애플리케이션 가상화


가상화 구현 방식



가상화 구현 방식은 크게 두 가지로 나눌 수 있습니다.

  • [1] 가상 머신 기반 가상화
  • [2] 컨테이너 기반 가상화

가상 머신 기반 가상화


  • 컴퓨팅 환경(하드웨어)를 소프트웨어로 모방하여 구현한 것입니다.
  • 운영체제 및 애플리케이션을 설치 및 운영이 가능합니다.
  • 하나의 하드웨어에서 다수의 가상 머신을 구동하여 독립적인 역할 수행합니다.

가상 머신 간에는 하드웨어를 공유하면서도 각각 서로 다른 환경을 갖출수 있으며 독립성이 보장됩니다. 즉 하나의 가상머신에서 오류가 발생하거나 중간되더라도 문제가 전체로 확산되지 않습니다.


하이퍼바이저


  • 하드웨어 위에서 가상 머신을 구동하게 해주는 것으로 소프트웨어 또는 임베디드로 구현됩니다.
  • 하드웨어와 가상 머신 사이에서 중간자 역할을 합니다. 가상 머신의 컴퓨팅 자원 할당 및 분리해 주는 역할을 합니다.

하드웨어를 직접적으로 사용하는 것보다 하이퍼바이저를 통해서 가상 머신을 활용하면 한정된 하드웨어 자원을 더욱 다양하고 효과적으로 사용할 수 있습니다.



하이퍼바이저의 유형


하이퍼바이저의 두 가지 유형

  • Native hypervisor

    • 하이퍼바이저가 하드웨어에서 직접 작동되는 방식으로 하드웨어를 제어하며 가상머신을 직접 관리합니다.
    • 이 방식은 가상 머신의 운영체제 게스트 OS가 하드웨어 위에서 작동됩니다.
    • ex. MS의 Hyper-V
  • Hosted Hypervisor

    • 호스트 하이퍼바이저는 일반적으로 애플리케이션처럼 OS 위에서 작동됩니다.
    • 설치 및 구성이 쉽지만 네이티브 방식에 비해 성능은 상대적으로 떨어집니다.
    • ex. Oracle의 Virtualbox


컨테이너 가상화


Source. https://www.pexels.com/

가상머신 기반 가상화는 하이퍼바이저 위에 게스트 OS를 여러 개 구동시키기 때문에 자원 소모가 많고 성능도 저하되는 문제가 있습니다. 단점을 하기 위해 컨테이너 가상화가 있습니다.


일반적 의미의 컨테이너는 보통 화물 컨테이너를 말하는데 철판으로 만들어진 재사용이 가능한 규격화된 통을 말합니다. 짐을 포장하기에 간편하고 운반 및 보관이 쉽기 때문에 많이 사용됩니다. 클라우드 컴퓨팅에서도 모듈화되고 격리된 공간을 의미하는 측면 에서 컨테이너라는 용어를 동일한 개념으로 사용합니다.


컨테이너 개념이 등장한 배경은 애플리케이션이 실행될 때 환경에 따라서 예상하지 못한 각종 문제가 발생하여 관리에 매우 큰 어려움이 있었습니다.


컴퓨팅 환경이 바뀌거나 다른 환경으로 이동하더라도 안정적으로 실행되는 것을 보장하기 위한 방법으로 컨테이너 방식을 사용하게 되었습니다.

애플리케이션을 실행하는 데 필요한 모든 라이브러리 및 구성 파일을 컨테이너 안에 패키지로 포장하면 어느 환경이든 쉽게 배포하고 실행할 수 있습니다.


가상 머신도 완전히 격리된 공간에서 작동하기 때문에 컨테이너로 볼 수 있지만, 이 경우에는 게스트 OS가 추가로 설치되어 동작하기 때문에 성능이 느리고 자원을 많이 사용합니다.


반면 컨테이너 기반 가상화는 동일한 운영체제 커널을 공유하고 애플리케이션 프로세스를 격리하여 프로그램 패키지로서 동작합니다. 그렇기 때문에 별도의 게스트 OS 설치하고 운영할 필요가 없습니다. 따라서 가상 머신을 사용하는 것에 비해 컨테이너 방식은 가볍고 빠릅니다.



참고 및 참고 이미지