728x90

1. 가상화의 이해

1-1 개요.

정의

  • 가상화(Virtualization)는 컴퓨터에서 컴퓨터 리소스의 추상화를 일컫는 관범위한 용어

하드웨어 가상화

  • 하드웨어 가상화 또는 플랫폼 가상화는 운영체제에서 실제 컴퓨터가 행동하는 것 같이 가상 머신을 생성하는 역할을 수행

  • 하드웨어 가상화에서 호스트 시스템은 가상화에 사용되는 메인 시스템이고 게스트 시스템은 가상 시스템으로 칭함

  • 전 가상화와 반 가상화

    전 가상화 :

    게스트운영체제 및 앱을 포함한 소프트웨어 환경이 수정되지 않은 상태로 실행

    반 가상화 :

    컴퓨팅에서 소프트웨어 인터페이스를 근본 하드웨어와 완전히 똑같지는 않지만 근본 하드웨어와 비슷한 가상 머신에 제공하는 가상화 기술

  • 기능

    스냅 샷 (Snapshots)

      특정 상태를 하드웨어에 적재하여 특정 시점에 있는 상태를 그대로 복원할 수 있도록 제공

    마이그레이션 (Migration)

      가상 머신이 일시정지, 중지, 이동 등의 행동이 다른 호스트에서 수행되는 것을 의미

    장애 조치 (Failover)

      여러 상황에 의해서 호스트 장애가 발생하더라도 VM은 영향을 주지 않도록 수행

    중첩 가상화 (Nested virtualization)

      가상 머신에서 가상화를 수행
  • 이슈 사항

    라이선스

      가상머신에서 구동되는 운영체제의 라이선스는 호스트 운영체제와는 별개로 독립적으로 관리

1-2 가상화의 발전.

클라우드

  • 클라우드 컴퓨팅이란 인터넷을 통해 가상화 된 컴퓨터의 시스템 리소스를 제공

  • 인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 클라우드(인터넷)에 연결된 다른 컴퓨터로 처리하는 기술을 의미

  • 전기망을 통해 전력망과 비슷한 일관성 및 규모의 경제를 달성하기 위해 자원 공유에 의존

  • 서비스 모델

    • IaaS

      가장 기본적인 클라우드 서비스 모델인 컴퓨팅 인프라 스트럭처

      가상 머신과 기타 자원들을 구독자에 대한 서비스로 제공하는 모델

      AWS에서 제공하는 EC2가 대표적인 예로 사용

      젠, 버추얼박스, KVM, VMware, Hyper-V등 게스트로 가상머신을 실행

    • PaaS

      응용 프로그램 개발자들에게 개발 환경을 제공

      일반적으로 운영체제, 프로그래밍 언어 실행 환경, 데이터 베이스, 웹 서버를 포함한 컴퓨팅 플랫폼을 제공

      최근 전문화된 서비스로 Baas(서비스로서의 블록체인)가 존재, MS의 Azure 같이 포함

    • Saas

      사용자에게 응용 소프트웨어와 데이터 베이스에 대한 접근 권한을 제공

      제공자는 인프라스트럭처와 플랫폼을 관리

      네이버 클라우드, 드롭박스, 구글 문서 등이 여기에 포함

  • 배치 모델

    • 프라이빗 클라우드

      오직 하나의 단체를 위해서만 운영되는 클라우드 인프라스트럭처의 하나로, 내부적으로나 서드파티에 의해 관리를 받거나 내외부적으로 호스팅

    • 퍼블릭 클라우드

      공개적 이용을 위해 열린 네트워크를 통해 렌더링되는 클라우드

    • 혼합형 클라우드 (또는, 하이브리드 클라우드)

      뚜렷한 실체는 유지하지만 함께 묶여 있는 둘이상의 클라우드의 조합

      여러 개의 배치 모델들의 이점을 제공

2. 하이퍼바이저 기술의 이해

2-1 개요.

정의

  • 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼
  • 가상화 머신 모니터 (Virtual Machine Monitor : VMM) 또는 가상 머신 매니저 (Virtual Machine Manager : VMM) 으로 불림
  • 물리적 기기에서 다수의 가상 머신들로 구성하여 한 장치에서 여러 종류의 운영체제 구동 가능
  • 하이퍼 바이저의 종류는 크게 타입1 과 타입 2 로 구분

2-2 종류.

  • 타입 1 (TYPE 1)

    하드웨어에서 직접 하이퍼바이저가 실행

    VMware의 ESXi, Xen, MS의 Hyper-V. 패러럴 서버 등 포함

  • 타입 2 (TTPE 2)

    호스트 운영체제에서 실행

    VMware Workstation/Player, MS의 비주얼 PC, 패러럴 데스크탑에서 사용

TYPE1 (타입 1)

  • 하이퍼 바이저가 직접 해당 하드웨어에서 직접 실행
  • 게스트 운영체제는 하드웨어 위 2수준에서 실행
  • Native 또는 bare-metal형으로 표현
  • IBM이 개발한 CP/CMS에서 시작
  • 보통 전기상화 방식 (Native Virtualization)인 구성을 가짐
  • 물리 컴퓨터 리소스 관리가 유연
  • 자체적으로 관리 기능을 가지고 있지 않아 관리 콘솔이 별도로 필요
  • Ring 의 개념을 통해 하드웨어 접근을 제어할 수 있는 가상화 명령 제공
  • 인텔 VT-x, AMD-V 기능이 존재해야 가상 자원 할당이 가능하며 Ring-1을 생성
    • 게스트 운영체제가 링 0 동작을 호스트 운영체제나 다른 게스트 운영체제에 영향을 미치지 않고 독립적으로 수행 가능하도록 역할 수행

보호 링 (Protection ring)

  • 컴퓨터 과학 분야에서 계층적 보호 도메인이라고 불림
  • 데이터와 기능의 결함과 비이상적 행동으로 부터 보호하기 위한 매커니즘
  • OS는 리소스 접근을 단계별로 구분
  • 대부분의 OS의 경우 링 0 에서 CPU, 메모리와 같은 물리적 하드웨어 장비를 직접 상호작용
  • 숫자가 높을 수록 낮은 수준의 권한을 가짐

TYPE 2 (타입2)

  • 다른 프로그램 실행과 유사한 방식으로 일반 적인 운영체제에서 구동
  • 호스트형 가상화라고 불림
  • 가상의 하드웨어를 에뮬레이팅 (Emulating)하기 때문에 오버헤드 발생률 높음
  • 호스트 운영체제의 제약사항이 타입2에 비해 적음
  • 기존 운영체제를 사용하는 시스템에 존쉽게 가상 머신을 접근 및 구축가능
  • 하이퍼바이저에 링 0 을 할당
  • 게스트 운영체제는 호스트 OS 위 3수준에서 실행
  • 물리 컴퓨터 리소스 관리가 유연
  • 별도 소프트웨어를 통해 가상 머신을 관리

3. 컨테이너 기술의 이해

3-1 개요.

정의

  • 운영체제의 커널이 하나의 사용자 공간 인스턴스가 아닌 여러 격리된 사용자 공간 인스턴스를 갖출 수 있게 하는 서버 가상화 방식
  • 운영체제 수준 가상화, 소프트웨어 컨테이너, 가상화 엔진 등으로 불림
    • 인스턴스 : 소프트웨어 세계에 구현된 실체

특징

  • 애플리케이션을 실제 구동 환경으로부터 추상화 할 수 있는 논리 패키징 매커니즘을 제공
  • 어플리케이션을 관련 라이브러리 및 종속 항목과 함께 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리 환경 제공
  • 하드웨어 스택을 가상화
  • 다수의 컨테이너를 OS 커널에서 직접 구동
  • 운영체제 수준 가상화로 운영체제의 커널이 하나의 사용자 공간 인스턴스가 아닌여러 개의 격리된 사용자 공간 인스턴스를 갖출 수 있도록 하는 서버 가상화 방식
  • 컨테이너, SW컨테이너, 가상화 엔진 (VE) 등으로 불림
  • 상호 신뢰하지 않는 많은 사용자들 간에 한정된 하드웨어 자원을 안전하게 할당하는데 유용
  • 하이퍼바이저 운영 방식과 달리 I/O 인터럽트 등을 독립적으로 수행하지 않아 각 객체 별 리소스 할당량이 상대적으로 적음
  • 대표적인 예로 리눅스의 응용 프로그램들을 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트가 존재

도커

  • 리눅스에서 운영체제 수준 가상화의 추상화 및 자동화 계층을 추가적으로 제공
  • 도커는 cgroups와 커널 이름공간과 같은 리눅스 커널, 또 aufs와 같은 유니언 가능 파일 시스템의 리소스 격리 기능을 사용
  • 가상 머신을 시작하여 유지보수 부담을 덜하게 만듦
  • 도커는 Host에 배포하는 방식으로 보통 Socket파일로 이루어짐
  • 확장 요구 사항, 장애 조치, 배포 패턴 등을 처리하기 위해 처리하기 위해 쿠버네티스를 사용할 수 있음
  • 리눅스 응용 프로그램들은 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈소스 프로젝트
  • 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 포함
  • 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 모든 것
  • 실행 중인 환경에 관계 없이 언제나 동일하게 싱행될 것을 보증

쿠버네티스

  • 컨테이너화된 애플리케이션의 자동 디플로이, 스케일링 등을 제공하는 관리 시스템

  • 도커와 달리 서버가 많아지는 경우 각 컨테이너를 효과적으로 관리하는데 사용

  • 오픈소스로 구성

  • 리눅스 재단에 의해 관리 중

  • 기능

    서비스 디스커버리와 로드 밸런싱

    • DNS이름을 사용하거나 자체 IP주소를 사용하여 컨테이너를 노출

    • 네트워크 트래픽을 로드 밸런싱하고 배포하여 배포가 안정적으로 이루어질 수 있도록 수행

      스토리지 오크스트레이션

    • 로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동 탑제

      자동화된 빈 패킹

    • 컨테이너화된 작업을 실행하는데 사용할 수 있는 쿠버네티스 클러스터 노드 제공

    • 컨테이너를 노드에 맞추어 CPU, 메모리 등의 리소스를 잘 사용할 수 있도록 배분

      자동화된 롤아웃과 롤백

    • 배포된 컨테이너의 원하는 상태를 서술할 수 있으며 현재 상태를 원하는 상태로 설정한 속도에 따라 변경 가능

      자동화된 복구

    • 실패한 컨테이너를 다시 시작하고 교체하며, '사용자 정의 상태 검사' 에 응답하지 않는 컨테이너를 죽이고 서비스를 끝날 때까지 과정을 클라이언트에게 보여주지 않음

      시크릿 구성과 관리

    • 암호 , Oauth 토큰 및 SHH 키와 같은 중요한 정보를 저장하고 관리

4. 클라우드의 이해

4-1 개요

정의

  • 클라우드(인터넷)를 통해 가상화된 컴퓨터의 시스템 리소스를 요구하는 즉시 제공 (On-demand Availability)하는 것
  • 인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술을 의미
  • IT인프라 및 어플리케이션을 네트워크를 통해 전달

4-2 클라우드 컴퓨팅 구성

NIST (NIST 800-145)의 클라우드 모델

  • 4개의 클라우드 배포 모델
  • 3개의 (On-Premise 제외) 서비스 모델
  • 제공 서비스의 정의

4-3 필수 특성 (Essential Characteristics)

  • On - Demand Self-Service

    서비스 이용자는 필요한 리소스에 따라 일방적으로 프로비저닝 할 수 있음

    프로비저닝 :

    사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것

  • Broad network access

    네트워크를 통해 사용할 수 있으며 여러 플랫폼 (휴대폰, 태블릿, 랩톱 등) 에서 표준 매커니즘을 통해 접근 가능

  • Resource Pooling

    서비스 제공자 컴퓨터 자원은 소비자 요구에 따라 물리적 및 가상의 자원을 동적으로 할당

    리소스의 예로 스토리지, 프로세싱, 메모리, 네트워크 대력폭이 해당

  • Rapid elasticity

    특정 요량을 탄력적으로 빠르게 내, 외부로 확장 가능

    기능이 무제한적인 것으로 보이며 언제든지 수량에 관계없이 가능

  • Measured Service

    클라우드 시스템은 서비스 유형에 적합한 특정 수준의 측정 기능을 활용하여 리소스 사용을 자동으로 제어하고 최적화

    리소스 사용을 모니터링, 제어하고 서비스 제공자에게 투명성을 제공

4-4 서비스 모델

종류

  • On-premise

    기존의 서버 구축 방식으로 모든 기능을 서비스 이용자가 제어 및 통제

  • IaaS (Infrastructure as a Service)

    프로세싱과 스토리지, 네트워크, 다른 기본 컴퓨터 리소스를 서비스 이용자가 사용

    서비스 이용자는 기본 클라우드 인프라를 관리하거나 제어하지 않으면 운영체제 스토리지 및 배포 된 엎르케이션, 네트워크 구성의 제한적 제어가 가능

  • PaaS

    서비스 이용자는 이용자가 만들거나 구성한 어플리케이션을 클라우드 인프라 위에 사용

    서비스 이용자는 네트워크, 서버 운영체제, 스토리지를 포함한 클라우드 인프라 제어가 불가

  • SaaS

    클라우드 인프라에서 구동되는 어플리케이션만 이용

클라우드 배포 모델

  • 프라이빗 클라우드 (Private Cloud)

    여러 이용자로 구성된 단일 조직에게 독점적으로 사용하도록 프로비저닝

    제 3자 또는 특성 대상에 의해 소유, 관리, 운영 될수 있으며, On-premise 또는 Off-premise 에 존재 가능

  • 커뮤니티 클라우드 (Community Cloud)

    이해 관계가 존재하는 특정 조직의 서비스 이용자가 커뮤니티 사용자들에게 제공

    특정 커뮤니티 안의 하나 이상의 조직이 관리하거나 운영, 소유 가능

  • 퍼블릭 클라우드 (Public Cloud)

    공공의 목적으로 사용을 위한 클라우드 인프라 프로비저닝 제공

    비즈니스, 연구, 정부 등의 조직에서 관리, 운영, 소유가 가능

  • 하이브리드 클라우드 (Hybrid Cloud)

    둘 이상의 구성이 포함된 클라우드 서비스 (프라이빗 또는 커뮤니티, 퍼블릭)

    고유한 클라우드의 특성은 유지하되 데이터와 어플리케이션이 이식이 가능하도록 구성

'System > basics' 카테고리의 다른 글

운영체제 해킹  (0) 2021.08.12
컴퓨터 구조  (0) 2021.07.20
시스템의 기초  (0) 2021.07.08

+ Recent posts