클라우드 네이티브 컴퓨팅에 대한 내용을 요약하여 공유 합니다. 길이가 길어 총 3편으로 나누 었습니다

도움이 되었으면 합니다


클라우드 네이티브 컴퓨팅의 구성

앞서 살펴 보았듯이 컨테이너와 DevOps 환경의 자동화, 마이크로 서비스는 기본 클라우드 컴퓨팅 환경을 진화 시키고 있다.  이 진화된 컴퓨팅 환경을 클라우드 네이티브 컴퓨팅(Cloud Native Computing)이라 한다.

클라우드 네이티브 컴퓨팅은 인프라에서 어플리케이션 까지 필요한 구성 요소를 결합하여 구성 한다. 각각의 구성 요소를 살펴 보면 다음 과 같다.

1_PvQh6lzs-GKKai7ZFwrMdA

출처 : https://blog.devnetcreate.io/developing-cloud-native-applications-94179c53e486

인프라스트럭처, 프로비져닝(Infrastructure, Provisioing)

클라우드 네이티브 컴퓨팅의 대상 인프라는 컨테이너 이동성에 힘입어 거의 제약 없이 구성 할 수 있다는 장점이 있다. 다음은 클라우드 네이티브 컴퓨팅이 지원 하는 인프라 종류 이다.

  • BareMetal : 물리적인 인프라. 내부 또는 데이터 센터에 구성
  • 가상화 인프라(Private Cloud) : Openstack, Cloudstack, VMWare등 플랫폼 기반이 가상 인프라
  • 퍼블릭 클라우드(Public Cloud) : AWS, Google GCP, MS Azure 등 대부분의 퍼블릭 클라우드

클라우드 네이티브 컴퓨팅 인프라는 기존과 달리 클러스터로 구성 하여야 한다. 즉 하나 이상의 노드(물리, 가상화)를 네트워크로 구성하고 그 위에 오케스트레이션 플랫폼을 설치 하여 구성 한다. 이 클러스터 구성은 오케스트레이션 플랫폼에 따라 차이가 있어 구성 전 오케스트레이션 플랫폼의 요건을 확인 하여야 한다

프로비져닝은 가상화(프라이빗, 퍼블릭) 인프라에 해당한다. 인프라 프로비져닝은 가상화 플랫폼이 제공하는 API를 이용하여 클러스터 구성을 자동화 한 것으로, 초기 구성 뿐아니라 운영 중 자원 사용량에 다른 노드의 스케일링, 교체 등이 포함 된다. 인프라 프로비져닝의 자동화는 구성의 오류와 작업을 효율화 할 수 있는 장점을 제공한다

현재 컨테이너 오케스트레이션이 지원 되는 OS는 Linux와 Windows(2016 서버 버젼 이상)이다. 인프라 프로비져닝 시 해당 OS를 같이 설정하는 것이 필요하다

컨테이너 오케스트레이션, 런타임(Orchestration, Runtime)

컨테이너 오케스트레이션은 동적 관리를 위한 핵심 엔진이다. 앞서 구성된 클러스터 인프라에 설치 되며 이 후로는 오케스트레이션 엔진에서 인프라 정보와 상태에 따라 관리를 수행 한다.

컨테이너 런타임은 컨테이너를 생성, 실행, 관리한다. 오케스트레이션 엔진은 컨테이너 런타임을 통해 컨테이너의 실행을 관리 한다. 현재는 리눅스 재단에서 표준화한 Containerd라는 엔진을 사용하지만 이전에는 Docker의 런타임을 사용하였다. 시스템의 요구에 따라 적절한 런타임을 선택 적으로 사용 할 수 있다   

어플리케이션 개발(Application Development)

앞서 설명한 DevOps 파이프라인이 구현된 영역이다. 컨테이너의 빌드 부터 배포, 업데이트, 운영, 모니터링을 담당하며 직접 개발 또는 오픈소스, 상업용 제품등을 선택 할 수 있다.

마이크로 서비스 아키텍처를 적용 할 것이라면 통합 로깅, 메시징 등 마이크로 서비스 아키텍처에 필요한 요소를 추가로 구성하여야 한다.

구성 시 고려 사항

현재 클라우드 네이티브 컴퓨팅은 오픈소스가 주도 하고 있다.(이후에 살펴 볼 것이다) 제품화된 플랫폼들도 핵심 요소는 오픈소스를 기반으로 하고 있다.

따라서 클라우드 네이티브 컴퓨팅 환경을 구축 하려면 해당 오픈소스에 대한 지식 습득과 통합, 최적화를 수행 하여야 한다. 대부분의 기업은 이를 위한 별도 조직과 전문가를 통해 환경 구축 및 관리/운영을 하고 있다. 기존 클라우드 컴퓨팅과 달리 변화된 환경을 구축 하여야 함으로 조직의 변화 관리도 중요한 포인트 이다.

퍼블릭 클라우드, 클라우드 솔루션 기업을 중심으로 클라우드 네이티브 컴퓨팅 환경을 쉽게 구축하고 운영 및 관리 할 수 있는 서비스 또는 플랫폼을 제공한다. 자체 조직이나 관리가 어려울 경우 해당 솔루션을 사용하는 것을 권장한다. 클라우드 네이티브 컴퓨팅 자체 보다는 어플리케이션의 운영이 기업에 있어서는 저 중요하고 가치 있는 일임으로 비용 대시 성과를 볼 때 적절 한 솔루션을 활용하는 것이 효과적이다

오픈소스가 주도하는 클라우드 네이티브 생태계

앞서 언급 하였듯이 클라우드 네이티브 컴퓨팅은 시작 부터 오픈 소스가 주도 해 오고 있다. 초기에 비해 신규 및 기존 오픈소스의 업데이트가 이루어져 거대한 생태계를 형성 하고 있다.

다음은 클라우드 네이티브 컴퓨팅의 오픈 소스 생태계를 정리한 것이다.

CloudNativeLandscape_latest

출처 : https://github.com/cncf/landscape

이 중 핵심 적인 오픈 소스는 컨테이너 런타임과 오케스트레이션이라 할 수 있다

컨테이너 런타임은 Docker가 주도 하고 있다. 리눅스 재단에서 컨테이너 표준화를 진행 하면서 Docker는 자사 런타임을 제공 하였고 현재는 표준화 돤 Containerd 엔진을 기반으로 Docker 뿐아니라 타 런타임도 기능을 확장한 버젼을 내놓고 있다. 예를 들면 rkt(로켓이라 읽는다)의 경우 보안을 강화한 컨테이너 런타임이다.

컨테이너 오케스트레이션 엔진의 경우 대표적으로 구글의 Kubernetes, Docker의 Swarm, MESOS등이 있다. 각각 기능과 목적의 차이가 있으나 현재는 Kubernetes를 가장 많이 사용하고 있고 증가 하는 추세이다.

Kubernetes는 구글이 내부적으로 사용하던 Borg를 기반으로 오픈소스화 한 엔진으로 기업 규모의 어플리케이션과 마이크로서비스 관리를 위한 방대한 기능을 제공한다. 그 규모 만큼 이해와 사용에 있어 어려움이 있긴 하지만 다수의 글로벌 기업이 채택하고 있어 앞으로 계속 성장할 것으로 전망한다.

다음은 클라우드 네이티브 컴퓨팅 재단이 조사한 오케스트레이션 엔진에 대한 결과 이다. 2017년 기준으로 Kubernetes가 77%의 사용율을 보이고 있다

chart1

출처 : Cloud Native Technologies Are Scaling Production Applications – Cloud Native Computing Foundation(https://www.cncf.io/blog/2017/12/06/cloud-native-technologies-scaling-production-applications/)

런타임과 오케스트레이션 외에도 인프라, 프로비져닝, 어플리케이션 개발 등의 영역에 상당 수의 오픈소스가 있으며, 지속적으로 확장 중에 있다.

마치며…

총 3편의 글에 걸쳐 클라우드 네이티브 컴퓨팅에 대해 정리하여 보았다. 컴퓨팅 환경은 클라우드의 도입으로 부터 컨테이너까지 빠르게 변화하고 있다. 그 배경에는 디지털로 비즈니스 기반을 전환하려는 기업들의 요구가 있다.

클라우드 컴퓨팅은 기업이 디지털 환경으로 전환 할 때 필요한 기반을 제공하며, 관련 기술의 발전으로 비즈니스 요구에 민첩한 대응과 높은 효율화를 제공하고 있다.

이제 클라우드 컴퓨팅은 선택이아니라 필수가 되어가고 있는 것이다.


이전 글 : DevOps 컨테이너로 날개를 달다

Advertisements