1. 하이퍼바이저(Hypervisor)
1.1. 정의
- 호스트 컴퓨터에서 다수의 게스트 OS를 동시에 실행하기 위한 논리적 플랫폼
- 가상머신을 생성하고 구동하는 소프트웨어로 물리적 서버를 여러 가상 서버로 나눔.
- Virtual Machine을 모니터링하는 중간 관리 VMM(Virtual Machine Monitor) 라고도 부름
1.2. 특징
주로 IaaS(Infrastructure as a Service) 모델에서 퍼블릭 클라우드 환경에서 사용
1.3. 종류
- Type1 하이퍼바이저 : 베어메탈(Bare-metal) 기반
- 하드웨어 바로 위에서 설치되어 실행되는 방식
- 하드웨어를 제어하는 운영체제 역할과 가상머신들을 관리하는 역할을 담당
- gkemdnp
- Type2 하이퍼바이저 : 호스트(Hosted) 기반
- 일반적으로 사용하는 가상화 방식
- 호스트 OS 위에 설치되어 실행되는 방식
2. 가상화 vs 클라우드 컴퓨팅
2.1. 가상화(Virtualization)
- 정의 : 기술
- 목적 : 한 대의 물리적 시스템 하드웨어(CPU, Disk, Network 등)를 논리적으로 분할하여 다수의 실행환경(테넌트)이 공유하여 자원을 효율적으로 사용할 수 있게 해주는 기술
- 용도 : 특정 용도의 패키징된 리소스를 특정 사용자에게 제공
- 설정 : 이미지 기반
- 비용 : CAPEX(자본 지출) ↑, OPEX(운영 비용) ↓
- 평균 수명 : 연 단위
- 확장성 : Scale Up 방식으로 확장
- 워크로드 : 스테이트풀(Stateful)
- 테넌시 : 싱글 테넌트(하나의 사용자만 소프트웨어 인스턴스나 서비스 사용 가능)
2.2. 클라우드 컴퓨팅(Cloud Computing)
- 정의 : 방식
- 목적 : 온디맨드 사용을 위한 가상 리소스 풀링과 자동화
- 용도 : 다양한 용도의 리소스를 사용자 그룹에게 제공
- 설정 : 템플릿 기반
- 비용 :
- 프라이빗 클라우드 : 높은 CAPEX(자본 지출), 낮은 OPEX(운영 비용)
- 퍼블릭 클라우드 : 낮은 CAPEX(자본 지출), 높은 OPEX(운영 비용)
- 평균 수명 : 시간/월 단위
- 확장성 : Scale Out 방식으로 확장
- 워크로드 : 스테이트리스(Stateless)
- 테넌시 : 멀티 테넌트(여러 사용자가 동일한 소프트웨어 인스턴스나 서비스를 공유)
💡 워크로드란? 컴퓨팅 리소스와 시간의 양. 클라우드 리소스에서 실행되는 애플리케이션, 서비스, 컴퓨팅 또는 기능을 의미. 워크로드는 애플리케이션 및 애플리케이션과의 상호작용을 지원하는 프로세스와 리소스로 구성.
💡 워크로드 상태 Stateless와 Stateful
- Stateless
- 클라이언트 요청을 처리하는 동안 어떠한 상태 정보도 저장 X
- 각각의 요청은 독립적으로 처리됨
- 서버는 클라이언트의 과거 상태를 추적 X
- 독립적이기 때문에 부하 분산 가능
- Stateful
- 클라이언트의 상태 정보를 유지하고 저장
- 각각의 요청은 이전 요청과의 상태 의존성을 가짐
- 서버는 클라이언트의 상태를 지속적으로 추적
- 상태 공유, 세션 유지 등의 기능을 지원
3. 인스턴스
3.1. 정의
컴퓨팅 리소스에 대한 가상 엑세스를 인스턴스(Instance)라는 형태로 제공
3.2. 특징
- 확장성 :
- CPU, 메모리, 스토리지 및 네트워크 리소스를 특정 인스턴스로 늘려 클라우드 리소스를 수평적으로 조정할 수 있음
- 내결합성 :
- 백업을 위해 여러 중복 인스턴스를 사용하여 중복성을 만듦
- 데이터 처리와 같은 메모리 집약적인 워크로드를 관리하는데 유용
3.3. 종류
- 범용 목적 인스턴스(General Purpose)
- 컴퓨팅 최적화 인스턴스(Compute Optimized)
- 데이터 분석, 빠른 처리를 원하는 애플리케이션에 사용
- 메모리 최적화 인스턴스(Memory Optimized)
- 가속화된 컴퓨팅 인스턴스(Accelerated Computing)
- 스토리지 최적화 인스턴스(Storage Optimized)
- IOPS(Input/Output Operations Per Second) 속도를 위해 사용
4. 가상머신 vs 컨테이너
4.1. 가상머신(Virtual Machine)
- 정의 :
- 물리적 시스템 하드웨어(CPU, Disk, Network 등)와 동일한 기능을 제공하는 소프트웨어 컴퓨터로
- 장점 :
- 가상머신은 가상 하드웨어를 직접 제어할 수 있기 때문에 높은 수준의 자원 격리와 쿼터 제한을 수행할 수 있음
- 단점 :
- 대량의 메모리 必
- CPU 자원 경쟁에 따른 성능 저하
- 특징 :
4.2. 컨테이너(Container)
- 정의 :
- 애플리케이션 코드와 이 애플리케이션을 실행하기 위한 라이브러리, 환경 설정 등을 하나로 묶어 패키징한 소프트웨어 실행 단위 ⇒ 애플리케이션보다 크거나 실행하는 데 필수적인 모든 파일이 컨테이너에 패키징되는 것은 아니고, 특정 작업을 수행하는 단일 기능(마이크로서비스)이 컨테이너에 패키징됨
- 장점 :
- 단점 :
- 특징 :
- 각각의 독립적인 실행환경(테넌트)를 가지고 있지만 호스트 운영체제의 리소스와 기능을 공유
- 하이퍼바이저 대신 컨테이너 엔진(ex. Docker) 有
💡 구성 레이어가 적을수록 부팅 시작이 빠르다.
5. 도커(docker)
5.1. 정의
- 항만에서 일하는 '부두 노동자'를 의미하는 말로 항만에서 규격화되어 있는 컨테이너를 옮기고, 관리하는 직업을 도커라고 함. 컴퓨팅에서 도커도 동일한 일을 함.
- 컨테이너 기반의 오픈소스 가상화 플랫폼
5.2. 구성요소
5.3. 도커의 이미지
- 컨테이너를 생성하기 위한 설계도나 템플릿
- 이미지는 애플리케이션을 실행하는데 필요한 모든 것을 포함(운영체제, 애플리케이션 코드, 라이브러리, 환경변수 등)
- 한 번 생성된 이미지는 변경되지 않는 불변성을 갖고 있음
- 이미지를 바탕으로 여러 개 컨테이너 생성 가능
💡 프로비저닝이란? 컨테이너의 생성과 관리를 자동화하는 과정을 의미
6. 쿠버네티스(Kubernetes)
6.1. 정의
- 배의 조타수라는 그리스 단어에서 유래
- 2014년 구글에서 사용하던 컨테이너 오케스트레이션 시스템 보그를 오픈 소스 소프트웨어로 공개한 것
- Kubernetes → K와 S 사이 8글자가 있어서 k8s 라고도 함
💡 AWS에서 쿠버네티스 관리형 서비스인 EKS 출시
6.2. 특징
- 선언적 API :
- 컨테이너가 어떤 상태이길 워하는지만 쿠버네티스에 설정하면 지속해서 컨테이너 상태를 체크한다. 그리고 컨테이너가 설정한 상태가 아니라면 그것에 맞춘다는 개념
- 사용 컴포넌트 구현 단순
- 워크로드 분리
- 어디서나 실행 가능
- 활성화된 커뮤니티
6.3. 클러스터 기본구성
- 클러스터 (Cluster) : 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합
- 마스터 노드 (Master Node) : 클러스터를 관리
- kube-apiserver : 클러스터의 API를 사용할 수 있도록 하고, 클러스터에 들어온 요청을 가장 먼저 접수해 해당 요청이 유효한지 검증하는 역할을 하는 컴포넌트
- kube-contorller-manager : 클러스터의 전반적인 상태 관리 및 필요 조치를 취하는 컴포넌트
- kube-scheduler : 자원 할당이 가능한 노드에 포드를 배치하는 결정을 하는 역할로 이 결정은 kube-apiserver에 전달(바인딩)
- kube-proxy : 쿠버네티스는 클러스터 안에 별도의 가상 네트워크를 설정하고 관리하는데 이 가상 네트워크의 동작(네트워크 프록시, 네트워크 설정, 서비스 모니터링)을 관리하는 컴포넌트
- etcd : 모든 클러스터의 데이터를 키-값 형태로 저장하는 저장소로 일종의 데이터베이스
- 워커 노드 (Worker Node) : 실제 컨테이너를 실행시키는 노드
- kubelet : 워커 노드의 kubelet은 마스터의 kube-apiserver와 통신하면서 포드의 생성, 관리, 삭제를 담당
- Pod : 하나 이상의 컨테이너 그룹
- container runtime : 컨테이너를 실행시키는 엔진
- kube-proxy : 포드 간의 통신이 가능하게 해주는 컴포넌트
7. 컨테이너 보안이슈
- 컨테이너 애플리케이션 접근
- 컨테이너 이미지 보안
- 루트 권한으로 이용하는 컨테이너 동작
- 사용자 권한
- 포드 통신 구간 암호화
- 중요 데이터 보안
- etcd 보안
- 컨테이너 데이터, 이미지 백업 및 복구
- 컨테이너 보안정책 구성
- 컨테이너 재해 복구 계획