최신 개발기술 트렌드 - 클라우드 네이티브 Cloud Native Architecture

클라우드 네이티브

최신 애플리케이션 개발 트렌드

최근 애플리케이션 개발 트렌드 관련 용어 중 Cloud Native, Microservices, Container 등에 대해서 많이 들어봤을 겁니다. 이 용어들은 서로 밀접한 관련이 있는 듯 보이지만 정작 어떤 관계인지를 설명하기란 쉽지 않습니다.

용어들 간의 관련성을 간단히 정리하자면,
① 애플리케이션의 구조를 한 가지 업무에 특화된 독립적인 단위로 개발 (Microservices) 하고,
② ①을 경량화된 가상화 환경에서 구동을 할 수 있는 단위 (Container)로 생성하고,
③ ②와 같은 여러 개의 컨테이너들을 관리를 할 수 있는 환경 (Cloud Native).
이와 관련된 기술 주제라고 요약할 수 있겠네요.

개념적으로는 간단히 정리할 수 있지만 실제로는 이런 내용을 잘 알고 있는 사람도 적고, 적용 사례도 부족하기 때문에 체계적인 접근 전략이 없을 경우, 상당한 시행착오가 발생할 수 있습니다. 그럼에도 관련 기술들은 여전히 급속도로 변화하고 있어서 이러한 기술을 도입하려는 기업 또는 개인을 망설이게 합니다. 관련 기술 기반의 서비스를 준비하는 회사 입장에서도 해당 기반 기술의 표준이 없을 경우, 해당 기술을 선택한 당위성에 대한 설명과 새롭게 등장하는 기술 호환성 확보에 대한 노력을 추가로 요구받게 됩니다. 이러한 문제들은 당연히 관련 기술의 성장에도 영향을 미치죠.

이러한 문제에 대응하기 위해 현재 OCI (Open Container Initiative)와 CNCF (Cloud Native Computing Foundation)와 같은 관련 기술 영역을 주도하려는 표준화 단체들이 생겨나고 있으며, 이들은 다양한 Cloud Native 관련 기술들 간의 호환성과 표준화를 주도함으로써 관련 기술들에 대한 정착을 돕고 있습니다.
오늘은 이러한 표준화 단체의 탄생 배경과 해당 단체에서 제공하는 ‘Cloud Native 기술 표준화 영역’에 대해 간단히 살펴보겠습니다.

Cloud Native 기술 배경

그동안 클라우드 서비스를 위한 인프라 환경은 가상화 기술을 기반으로 물리적인 서버의 효율성을 제공해왔습니다. 즉, VMware와 같은 서버 가상화 기술(Hypervisor)을 기반으로, 기업에서 운영하던 기존 시스템을 애플리케이션 수정 없이 옮길 수 있는 전환 방안(Lift & Shift)을 제공해온 겁니다. 반면에 Google은 자체적인 신규 서비스(gmail 등)를 대규모로 확장하기 위한 방안으로 컨테이너 기술을 자체적으로 활용해왔습니다. 그 과정에서 구글은 컨테이너 기술을 손쉽게 사용할 수 있도록 Docker를 통해 오픈소스화했고 그 결과, 일반 개발자들의 접근성이 매우 높아졌습니다.

가상머신VM 과 Container - VMware와 같은 서버 가상화 기술(Hypervisor)을 기반으로, 기업에서 운영하던 기존 시스템을 애플리케이션 수정 없이 옮길 수 있는 전환 방안(Lift & Shift)을 제공해온 겁니다. 반면에 Google은 자체적인 신규 서비스(gmail 등)를 대규모로 확장하기 위한 방안으로 컨테이너 기술을 자체적으로 활용해왔습니다. 그 과정에서 구글은 컨테이너 기술을 손쉽게 사용할 수 있도록 Docker를 통해 오픈소스화했고 그 결과, 일반 개발자들의 접근성이 매우 높아졌습니다.

기존 VM과 비교했을 때, 컨테이너 기술은 Hypervisor 엔진과 Guest OS를 제거하여 자원효율화를 제공합니다. 아직까지는 컨테이너 기술이 Linux기반 환경에 주로 활용되고 있으나, MS Windows Container도 Windows Server2016부터 지원되므로 앞으로는 이러한 활용 사례들이 더 늘어날 것으로 기대됩니다.

기존 가상머신에서 컨테이너로 기술이 전환이 이뤄지면서 생겨난 변화는 다음과 같습니다.

    - 독립적인 구동 단위의 패키징
     : Monolithic한 통합시스템의 가상화에서 분산된 여러 개로 분산된 시스템의 컨테이너 구조로 변화
    - 서비스 모델 기반 관리
     : 시스템을 개별 단위로 관리하는 방식에서 동일한 기능을 제공하는 복수의 컨테이너 관리로 변화
     (CERN의 Pets vs. Cattle 모델 : https://www.slideshare.net/gmccance/cern-data-centre-evolution )
이러한 변화는 Cloud Native Architecture의 주요한 특징으로 등장하게 됩니다.

OCI (Open Container Initiative)

OCI는 2015년 6월에 생겨났으며 이 단체의 주요 미션은 다음과 같습니다.
‘컨테이너 기술에 관련된 공통적이고 최소화한 공개표준과 명세를 개발/확산하는 역할을 수행한다. (이를 보장하기 위한 검증 프로그램 운영)’
또, OCI에서 관리하는 표준과 명세는 다음과 같습니다.

    - Runtime spec: 컨테이너 실행을 관리하기 위한 명세
    - Runtime tools: 컨테이너 실행을 검증하는 테스트 도구
    - Runc: 컨테이너 실행을 위한 구현체
    - Image spec: 컨테이너 이미지의 저장 방식에 대한 명세
    - Image tools: OCI 이미지 명세를 구현한 컨테이너 이미지를 검증하는 테스트 도구

현재 OCI는 주요 컨테이너 관련 업계의 선두 프로젝트(Docker, CoreOS, CloudFoundry, Kubernetes등)들이 준수하고 있는 만큼, OCI 표준을 준수하는 컨테이너 이미지의 구동을 보장합니다. 다만 컨테이너 이미지를 만들 때 업체별로 특화 기능을 포함하는 경우가 있으므로 업체 간의 컨테이너 이미지의 호환성 여부는 별도의 확인이 필요합니다.

Cloud Native Computing Foundation

CNCF는 컨테이너 생태계를 확산하기 위해 2015년 만들어진 리눅스 파운데이션(Linux Foundation)의 산하단체입니다. 이들은 구글에서 시작한 오픈소스 프로젝트인 Kubernetes을 필두로 컨테이너 환경에서 많이 쓰이는 프로젝트들을 관리하고 있습니다.

CNCF에서 정의하는 Cloud Native system은 다음과 같은 특성을 갖습니다.
(a) Container 단위로 관리: 구동되는 애플리케이션은 독립적인 배포 단위인 동시에 독립적인 자원관리 단위임. 또한 Cloud Native application은 코드와 컴포넌트 재사용 가능
(b) 동적 관리: 중앙관리 방식의 스케줄과 관리로 서버 자원의 효율성을 높이고 자원관리와 운영비용을 절감시킴.
(c) Microservices 중심 관리: 의존관계가 명확하고, 결합이 느슨한 모듈은 애플리케이션 전반에 민첩성과 관리 용이성을 제공함.

또, CNCF는 아래와 같은 Cloud Native 참조 아키텍처를 제시하고 있습니다.
CNCF의 Cloud Native 참조 아키텍처- Application definition/development, Orchestration & Management, Runtime, Provisioning, Infrastructure CNCF의 Cloud Native 참조 아키텍처 (Source: Open Container Technologies and OpenStack - Sorting Through Kubernetes, the OCI & the CNCF, Danel Krook)

1) Application definition/development: Container native 애플리케이션을 구현하는데 필요한 meta data, 설정, 도구, 컨테이너 이미지 관리 도구 등
2) Orchestration & Management: 컨테이너 오케스트레이션 (Kubernetes, SWARM 등) 도구를 활용한 컨테이너 배포, Logging & Monitoring, Service discovery 등
3) Runtime: 컨테이너 실행 표준(OCI), 컨테이너 네트워킹 (Container Networking Interface project), Storage (Volume driver) 등
4) Provisioning: Container환경을 고려한 DevOps deployment 도구와 provisioning 등
5) Infrastructure: CNCF의 프로젝트 영역은 아니지만 Bare metal, Public cloud 구동 호환성을 유지

CNCF는 상기 reference아키텍처 영역에 해당하는 다양한 오픈소스 프로젝트를 이끌고 있습니다. 특히 Google이 오픈소스화한 Kubernetes가 대표적인 프로젝트입니다.

CNCF에서 지원하는 프로젝트 예시: https://www.cncf.io/- Kubernetes가 대표적인 프로젝트 CNCF에서 지원하는 프로젝트 예시 : https://www.cncf.io/

CNCF는 Cloud Native 참조 아키텍처 영역별로 전체적인 구성요소들을 정리한 Landscape를 제공하여 Cloud Native 기술 전체 호환성을 확보하는 방안을 제시합니다.
https://github.com/cncf/landscape

마지막으로, 삼성 SDS의 Cloud Native 관련 활동을 소개합니다.
삼성SDS는 2016년부터 CNCF의 Platinum member로 활동하고 있습니다.
현재 SDS 연구소의 클라우드 아키텍처 연구팀은 Cloud Native관련 기술과 Software Defined Data Center 기술을 확보하기 위한 R&D 업무를 수행하고 있습니다.



▶   해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에게 저작권이 있습니다.
▶   해당 콘텐츠는 사전 동의없이 2차 가공 및 영리적인 이용을 금하고 있습니다.

이 글이 좋으셨다면 구독&좋아요

여러분의 “구독”과 “좋아요”는
저자에게 큰 힘이 됩니다.

subscribe