클라우드 컴퓨팅과 서버 가상화 기술 3가지

클라우드 컴퓨팅의 핵심인 서버 가상화에 대해 알아보겠습니다.

목차

  1. 서버 가상화란 무엇인가요?
    • 서버 가상화의 개념과 원리
    • 물리적 서버와 가상 서버의 차이점
  2. 서버 가상화의 장점과 단점
    • 효율적인 리소스 활용
    • 유연성과 확장성
    • 보안과 성능 문제
  3. 가상화 기술의 종류
    • 하이퍼바이저 기반 가상화
    • 컨테이너 기반 가상화
    • 다른 가상화 기술들
  4. 클라우드 컴퓨팅과 서버 가상화의 관계
    • 클라우드 환경에서의 가상화
    • 클라우드 서비스 제공 업체의 가상화 기술
  5. 서버 가상화의 미래 전망
    • 컨테이너 오케스트레이션과 관련 동향
    • 하이브리드 클라우드 환경에서의 역할

서버 가상화란 무엇인가요?

서버 가상화는 물리적 서버 호스트에서 여러 개의 서버 운영 체제를 게스트로 실행할 수 있는 소프트웨어 아키텍처입니다. 이 기술은 하나의 물리적 서버에서 실행되는 자체 운영 체제와 애플리케이션을 사용하여 여러 가상 서버를 만드는 프로세스를 의미합니다. 각 가상 서버는 다른 가상 서버로부터 분리되며 호환성 문제 없이 완전히 독립적으로 실행됩니다.

물리적으로 존재하는 CPU, 메모리, 스토리지등 거의 모든 하드웨어 리소스를 가상화 할 수 있음.이때 물리적으로 존재하는 하드웨어를 물리장치라고 하고 그것을 논리적으로 분할, 통합해서 새로운 장치로 만들어 낸 것을 가상화 장치라고 하며 가상화 기술로 구성한 논리 서버에 OS를 설치해서 쓸 수 있습니다.

컨테이너란 호스트 OS상에 논리적인 (컨테이너)를 만들고, 애플리케이션을 작동시키기 위해 필요한 라이브러리나 애플리케이션등을 하나로 모아, 마치 별도의 서버처럼 사용할 수 있게 만든 것입니다.

서버 가상화의 장점과 단점

장점:

  • 효율적인 리소스 활용: 물리적 서버를 가상 서버로 분할하여 리소스를 효율적으로 활용할 수 있습니다. 가상 서버는 필요한 만큼만 리소스를 할당받아 사용하므로 낭비를 최소화합니다.
  • 유연성과 확장성: 가상 서버는 물리적 서버와 독립적으로 운영되기 때문에 필요에 따라 가상 서버를 추가하거나 제거하여 유연하게 확장할 수 있습니다. 이는 서버 확장이나 축소 시 물리적 서버를 교체할 필요 없이 가능합니다.

단점:

  • 보안과 성능 문제: 가상 서버 간의 보안 및 성능 문제가 발생할 수 있습니다. 가상 서버는 같은 물리적 자원을 공유하므로 다른 가상 서버의 영향을 받을 수 있습니다. 또한 하나의 물리적 서버에 여러 개의 가상 서버가 실행되면 성능 저하가 발생할 수 있습니다.

가상화 기술의 종류

하이퍼바이저 기반 가상화

  • 하이퍼바이저를 사용하여 가상 서버를 생성하는 방식입니다. 하이퍼바이저는 물리적 서버 위에서 실행되며 가상 서버를 관리하고 격리시킵니다. 대표적인 하이퍼바이저로는 VMware, Microsoft Hyper-V, KVM 등이 있습니다.

컨테이너 기반 가상화

  • 컨테이너를 사용하여 애플리케이션을 격리된 환경에서 실행하는 방식입니다. 컨테이너는 가상 서버보다 가볍고 빠르게 실행되며, Docker와 Kubernetes를 통해 관리됩니다.

컨테이너

클라우드 컨테이너는 클라우드에서 애플리케이션을 실행하는 데 필요한 모든 구성 요소를 패키지하고 보관하는 이동식 디지털 컴파트먼트입니다. 다른 기술적 컨테이너와 동일하며 유일한 차이는 구축 위치입니다1. 이를 통해 애플리케이션을 어디서나 실행하고 이식성을 높일 수 있습니다. 컨테이너는 가볍고 빠르며 이동이 가능하며, 리소스 사용을 최적화하여 효율적인 자원 활용을 가능하게 합니다.

컨테이너는 리눅스에서 주로 발전하고 있고 리눅스 컨테이너는 호스트 운영체제에서 부팅과정 없이 바로 시작합니다. 단, 호스트 운영체제인 리눅스 외의 다른 OS에서는 동작하지 않습니다.

Docker

Docker

도커(Docker)는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. 이를 통해 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줍니다. 도커는 다음과 같은 주요 개념과 기능을 가지고 있습니다:

  1. 도커 이미지 (Docker Image):
    • 이미지는 도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드, 라이브러리, 컴파일된 실행 파일을 묶는 형태입니다.
    • 의존성 파일을 컴파일하거나 다른 설치가 필요 없이 바로 사용 가능합니다.
    • 이미지들은 Docker Hub를 통해 버전 관리 및 배포가 가능합니다.
  2. 도커 컨테이너 (Docker Container):
    • 이미지를 실행한 상태로, 응용 프로그램의 실행을 위한 모든 파일과 설정값을 가지고 있는 것입니다.
    • 컨테이너는 이미지에서 받은 설정에 따라 프로그램을 실행하며, 독립적으로 실행됩니다.
    • 여러 개의 컨테이너를 하나의 서버에서 독립적으로 실행할 수 있습니다.
  3. 도커 작동 원리:
    • 리눅스의 namespace와 cgroup을 사용하여 가상화를 진행합니다.
    • 컨테이너는 이미지 레이어에 읽기/쓰기 레이어를 추가하여 생성됩니다.
    • 컨테이너는 커널 공간과 호스트 OS 자원을 공유합니다.

도커는 개발자와 IT 운영팀이 효율적으로 업무를 수행할 수 있도록 도와주는 강력한 도구입니다.

쿠버네티스 (Kubernetes)

쿠버네티스 (Kubernetes, k8s)**는 컨테이너 운영 자동화와 컨테이너 오케스트레이션을 수행하는 도구입니다. 이식성이 있고 확장 가능한 오픈소스 플랫폼으로, 컨테이너화된 워크로드와 서비스를 관리합니다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해주며, 크고 빠르게 성장하는 생태계를 가지고 있습니다.

여러개의 호스트를 하나로 묶어 도커를 이용하기 위한 오케스트레이션 툴로 분산환경에서 마치 한대의 컴퓨터처럼 투과적으로 컨테이너에 액세스 할 수 있음

쿠버네티스를 사용하는 이유

  1. 빠른 애플리케이션 생성 및 배포:
    • 가상 머신 이미지에 비해 간편하고 효과적으로 컨테이너 이미지를 생성할 수 있습니다.
  2. 지속적인 개발, 통합, 배포:
    • 이미지 불변성을 통해 안정적이고 주기적인 컨테이너 이미지 구축 및 배포와 효과적인 롤백이 가능합니다.
  3. 자원 활용 최적화:
    • 쿠버네티스를 사용하면 컨테이너를 효율적으로 실행하고 자원 상황에 따라 애플리케이션을 적재 적소에 배포할 수 있습니다.

쿠버네티스는 컨테이너화된 애플리케이션 환경을 탄력적으로 실행할 수 있게 해주는 강력한 도구입니다.

주요기능

  • 여러 서버들에서의 컨테이너 관리
  • 컨테이너 간 네트워크 관리
  • 컨테이너의 부하 분산
  • 컨테이너의 감시
  • 무정지로 업데이트

다른 가상화 기술들

  • 하이퍼바이저와 컨테이너 외에도 다양한 가상화 기술이 존재합니다. 예를 들면 OS 가상화, 네트워크 가상화, 스토리지 가상화 등이 있습니다.

클라우드 컴퓨팅과 서버 가상화의 관계

  • 클라우드 환경에서의 가상화: 클라우드 컴퓨팅에서는 가상화 기술을 활용하여 리소스를 효율적으로 관리합니다.
  • 클라우드 서비스 제공 업체의 가상화 기술: 다양한 클라우드 서비스 제공 업체가 서버 가상화를 지원합니다.

서버 가상화의 미래 전망

  • 컨테이너 오케스트레이션과 관련 동향: 컨테이너 관리 툴인 Kubernetes와 같은 기술이 더욱 발전할 것으로 예상됩니다.
  • 하이브리드 클라우드 환경에서의 역할: 하이브리드 클라우드 환경에서 서버 가상화는 중요한 역할을 할 것으로 기대됩니다.

컨테이너 오케스트레이션은 컨테이너화된 애플리케이션의 프로비저닝, 배포, 관리를 자동화하고 간소화하는 기술입니다. 이를 통해 복잡한 컨테이너 환경을 효과적으로 관리할 수 있습니다. 주요 컨테이너 오케스트레이션 플랫폼으로는 Kubernetes, Docker Swarm, Apache Mesos 등이 있습니다. 이러한 툴들은 컨테이너의 시작 및 중단 시점 제어, 클러스터로 그룹화, 애플리케이션을 구성하는 모든 프로세스 조정을 수행할 수 있습니다.