가상의 고객사 시스템 구축과 운영
SI
SM
기존의 가상화 방식은 VMware나 VirtualBox처럼 호스트 OS 위에 게스트 OS 전체를 가상화하여 사용하는 방식이었다. 이 방식은 여러가지 OS를 가상화할 수 있고(리눅스에서 윈도우 돌리기) 비교적 사용법이 간단하다. 하지만 무겁고 느려서 운영 환경에서 사용할 수 없다. MSA가 유행하면서 배포를 자주하게 되었고, VM의 단점을 개선하고자 프로세스를 격리하는 방식 등장했다.
컨테이너
격리된 공간에서 프로세스가 동작하는 기술이다. CPU나 메모리를 딱 프로세스가 필요한 만큼만 추가로 사용하기 때문에 성능적으로 손실이 거의 없다. 대표적인 컨테이너 기반의 오픈소스 가상화 플랫폼으로 도커가 있다.
컨테이너가 많아지면 이것들을 효율적으로 관리해야 한다. 예를 들어 구글은 일주일에 수십억 개의 컨테이너를 생성한다고 한다(!!). 컨테이너 오케스트레이션은 여러 개의 서버에 컨테이너를 배포하고 운영하면서 서비스 디스커버리 같은 기능으로 서비스 간 연결을 쉽게 해주는 것이다. 쿠버네티스는 구글이 내부 배포 시스템으로 사용하던 borg를 기반으로 시작한 컨테이너 오케스트레이션 프로젝트이다.
쿠버네티스
컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼이다. 다양한 배포 방식을 지원하고, 클라우드를 지원하는 등 많은 장점으로 현재 클라우드 컨테이너 시장을 평정하였다.
Pod
쿠버네티스에서 배포할 수 있는 가장 작은 단위이다. 한 개 이상의 컨테이너와 스토리지, 네트워크 속성을 가진다. Pod에 속한 컨테이너는 스토리지와 네트워크를 공유하고 서로 localhost로 접근할 수 있다. 컨테이너를 하나만 사용하는 경우도 반드시 Pod로 감싸서 관리한다.
Deployment
애플리케이션 배포의 기본 단위가 되는 리소스이다. 몇 개의 파드가 얼마만큼의 자원을 사용할지, 애플리케이션을 어떤 방식으로 배포할지 정의한다.
Service
네트워크 관련 오브젝트이다. Pod를 외부 네트워크와 연결해주고 여러 개의 Pod를 바라보는 내부 로드 밸런서를 생성할 때 사용한다.
Master-Node 구조
Kubectl
명령행 도구이다.
자체 호스팅
쿠버네티스를 자체적으로 구축한다. 아키텍쳐를 구축하고 지속적인 관리를 해주어야 한다. 쿠버네티스는 업데이트가 빠르므로 관리가 어렵다. 물론 설치도 어렵다.
관리형 쿠버네티스
기업에서 고가용성이 보장된 쿠버네티스 클러스터를 제공하는 것이다. AWS의 EKS, Google의 GKE, Azure의 AKS 등이 있다. 우리는 다음 그림과 같은 AWS의 EKS를 사용할 것이다.