컨테이너 기반의 클라우드 네이티브 컴퓨팅 시대 도래(1/3)

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

도움이 되었으면 합니다


최근 클라우드 컴퓨팅에 컨테이너 기술을 접목한 새로운 컴퓨팅 환경이 주목을 받고 있다. 클라우드 네이티브 컴퓨팅(Cloud Native Computing)이 그 것이다.

클라우드 네이티브 컴퓨팅은 어플리케이션 또는 서비스 시스템 관리를 컨테이너 기반 기술로 자동화 한 환경으로, 기존 환경에 비해 시스템 안정성을 높이고 운영/관리 업무의 효율화와 비즈니스 요구에 대한 빠른 응대, 시스템 확장이 용이한 특징을 가진다.

이러한 장점으로 최근 IT 기술 중심 기업을 시작으로 점차 도입이 확산 되고 있다. 미국 소재의 산업 분석 전문 블로그 미디어인  RedMonk가 조사한 바에 따르면 2017년을 기준으로 포츈 100대 기업 중 클라우드 네이티브 기술을 도입한 기업이 70%를 넘어 섰으며, IT 기업 뿐아니라 금융, 리테일 등 다양한 산업 군으로 확장 되는 추세이다.

cloudnative-f100-percent

출처 : Cloud Native Technologies in the Fortune 100 – Charting Stacks (http://redmonk.com/fryan/2017/09/10/cloud-native-technologies-in-the-fortune-100/)

또한 리눅스 재단 산하의 Cloud Native Computing Foundation(CNCF)의 2017년 커뮤니티 맴버에 대한 설문에 따르면 응답자 550개 기업 중 250개 이상의 컨테이너를 배포하고 운영 중인 기업이 49%에 달한다.  CNCF의 커뮤니티가 IT를 대표 하는 글로벌 기업인 점과 미국 뿐아니라 유럽의 기업들이 다수 포함되어 있다는 점을 고려하면 의미 있는 결과라 할 수 있다.

chart5

출처 : 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/)

기존 클라우드 공급자들와 IT기업들도 앞다투어 컨테이너 관련 솔루션 또는 서비스를 출시 하고 있다

  • Google : 컨테이너 오케스트레이션 엔진인 Kubernetes 개발, 오픈소스 화. 구글 클라우드 플랫폼에서 Google Kubernetes Engine(GKE) 컨테이너 서비스 제공
  • Microsoft Azure : 컨테이너 서비스 Azure Container Service (ACS) 제공
  • AWS : 두 형태의 컨테이너 서비스 제공. Elastic Container Service(ECS), Elastic Kubernetes Service(EKS)
  • IBM : Bluemix 컨테이너 관리 플랫폼과 Cloud Private 클라우드 플랫폼 재공
  • RedHat : Openshift 컨테이너 관리 플랫폼과 컨테이너 운영체계 등 핵심 기술 보유 기업인 CoreOS 인수
  • 시스코 : CISCO Container Platform 출시

글로벌 IT기업의 대표 주자 격인 이들 기업 모두 컨테이너를 기반으로 하는 클라우드 컴퓨팅 또는 서비스 제품을 출시하고 지속적인 투자를 하고 있다.  이와 같은 추세를 볼 때 클라우드 네이티브 컴퓨팅이 미래 컴퓨팅 환경으로 자리잡을 것은 명백한 듯 하다

그럼 왜 컨테이너 기반의 클라우드 컴퓨팅 환경에 주목을 하는 것일까 ? 여러가지 이유가 있지만 시스템 관리측면의 변화를 살펴 보면 그 해답을 얻을 수 있다.

시스템 관리 방법의 변화 : 정적 인프라 -> 동적 인프라 -> 컨테이너

이 곳에서 말하는 시스템은 어플리케이션 또는 서비스를 구성하는 서버(Server)를 대상으로 함을 먼저 말해 둔다. 원래 시스템은 서버 뿐아니라 네트워크, 스토리지 등과 같은 인프라, 보안 등의 요소들이 더 있지만 컨테이너는 서버 관리에 대한 기술로써 많이 활용 됨으로 이 부분을 이해하는 것이 적합 하다고 생각한다.

서버는 특정 기능과 데이터를 제공하는 시스템의 구성 요소 이다. 흔희 이야기하는 웹서버는 웹상에서 문자와 이미지, 동영상을 제공하는 역할을 담당한다. 이외에도 비즈니스 로직이나 데이터, 캐시, 스트리밍 등 다양한 역할의 서버가 있다.

정적 인프라

클라우드 이전, 정확히 말하면 가상화(Virtualization)이전의 서버는 하드웨어(Hardware)와 한 몸으로 관리 되었다. 하드웨어 상에 운영체계(OS)를 설치 하고 서버 구성에 필요한 라이브러리, 미들웨어, 코드등 소프트웨어를 설치 하여 구성하였다. 한번 서버가 구성(생성) 되면 변경은 서버에 로그인 후 명령어나 스크립트를 통해 수행하였고 이 때 서비스에 영향이 없도록 세심한 주의와 노력이 필요 하다.

서버의 하드웨어 준비와 구성에 시간이 들고 변경 시 영향도를 고려 할 때 자유 스럽지 못한 점등으로 이를 “정적 인프라”라 부른다. (이와 반대 되는 개념을 이후 설명 할 “동적 인프라”라 부른다) 즉 서버의 구성 뿐 아니라 관리 방식을 고려한 명칭이다.

  

정적 인프라를 좋다 나쁘다를 기준으로 이야기 할 수 없다. 시스템 마다 다른 특성과 구성을 가지고 있으므로 정적 인프라 방식이 적합한 시스템도 있다.

하지만 클라우드가 등장 한 후 정적 인프라는 관리 효율화 면에서 개선의 대상이 되었고 근래에 들어서는 점차 줄어 들고 있는 추세이다

동적 인프라

서버 등 하드웨어 가상화 기술을 기반으로 하는 클라우드가 확산 됨에 따라 서버에서 하드웨어가 분리되기 시작 했다. 즉, 가상화 서버(가상 머신)은 하드웨어와 하이퍼바이져(Hypervisor)상에 실행되는 개념으로 서버를 준비(Provisioning)하는 과정이 운영체계 이미지를 대상 하드웨어 상에서 실행하는 방식으로 바뀐 것이다.

한 발 더 나아가 가상 머신을 운영체계 뿐 아니라 서버에 필요한 소프트웨어 까지 구성하여 이미지 화 한 후 이것을 인프라 위에서 실행 함으로써 준비와 배포에 드는 시간과 노력을 획기적으로 줄일 수 있게 되었다. 이렇게 이미지화 하는 데는 별도 관리 소프트웨어나 코드를 통해 가능하다.

이렇듯 소프트웨어 또는 코드를 통해 서버를 구성하고 배포하는 방식의 인프라를 “동적 인프라”라고 한다

서버를 예로 들었지만 사실 가상화 된 인프라에서는 모든 것을 코드화 하여 동적으로 구성, 변경하고 관리 할 수 있다. 이를 “코드로서의 인프라”(Infrastructure as Code) 관리 방식이라 한다.(Kief Morris의 동 제목 저서 참고, O’REILLY)

동적 인프라는 코드로서 관리 된다.  즉 사람의 개입을 최소화 하고 운영/관리를 자동화 할 수 있으며 특히 변경에 대한 버젼 관리, 추적등 일원화 할 수 있다는 점에서 기존 정적 인프라 보다는 높은 효율화를 얻을 수 있다. 서버의 경우 표준 구성을 코드화하고 이미지를 통해 교체 하는 방식으로 배포, 변경 함으로써 서비스에 대한 영향도가 적고 구성과 변경에 대한 오류를 최소화 할 수 있다는 장점이 있다.(Kief Morris의 저서에서는 이를 불변 서버(Immutable Server)라 부른다) 무엇보다 모든 과정을 자동화 한다는 것이 가장 큰 매력이 될 수 있다

따라서 클라우드 기반 컴퓨팅 환경하에서는 인프라 운영/관리 효율성을 높일 수 가 있다. 하지만 한가지 고려해야 할 점이 있다. 가상화 인프라 환경을 도입한 기업들 중에서도 관리 방식을 기존 “정적 인프라” 방식으로 운영 하는 경우를 흔히 볼 수 있다. 즉 가상머신의 준비(프로비져닝)만을 자동화 하고 서버 구성과 변경은 기존 로그인 후 처리 방식으로 하는 경우인데, 이 경우에는 동적 인프라의 장점을 반쪽 만 얻을 수 밖에 없다.

동적 인프라 방식을 잘 적용한 사례 중 하나가 최대의 온라인 VOD 서비스인 넷플릭스(Netfilx)이다.글로벌 클라우드 선두 주자인 AWS 인프라를 통해 모든 과정을 자동화 하여 빠르게 변화하고 확장 하는 시스템의 요구를 동적 인프라를 통해 유연하게 대응 한 예 이다. 그 결과 물은  Netflix OSS(Netflix Open Source Software Center, https://netflix.github.io/) 에 오픈소프로 공개 되어 있다.

컨테이너

앞서 이야기 한 동적 인프라가 주는 잇점은 매우 크다. 하지만 컨테이너의 등장으로  동적 인프라는 새로운 전환을 맞이하게 된다.

컨테이너는 운영체계 상에서 소프트웨어를 독립적으로 실행 할 수 있는 일종의 OS 가상화 기술이다. 앞서 가상머신이 하드웨어를 분리 하였다면 컨테이너는 OS와 어플리케이션 또는 서버 소프트웨어를 분리 하여 관리 할 수 가 있다.(이 때문에 컨테이너를 Micro-VM이라 하기도 한다)

서버 측면에서 컨테이너와 가상 머신과 비교하면 운영/관리 상 다음과 같은 주요 특징이 있다

  • 가상 머신의 기동, 재기동에 시간이 소요 된다.(오토 스케일링과 같은 빠른 확장이 필요 할 경우 약점이 된다). 컨테이너의 경우 OS상에서 기동되는 프로세스를 가상화 함으로써 기동/재기동 속도가 빠르다
  • 서로 다른 하이퍼바이져에서는 가상 머신의 이미지가 호환 되지 않아 이동성이 떨어 진다. 컨테이너는 인프라와 무관하게 어디든 배포/실행 할 수 있다.(컨테이너는 리눅스 재단을 통해 표준화 되어 있다)
  • 가상 머신과 같이 컨테이너도 독립 실행된다. 따라서 서버의 구성, 운영/관리에 적합 하다

다음은 가상 머신과 컨테이너의 가상화 형태 비교를 도식화 한 것이다

ContainerVsVM

출처 : Container Technology Chapter 1 | Docker, VM, LXC & Container Basics (https://www.twistlock.com/resources/all-about-container-technology/)

컨테이너가 세상에 알려 진 데는 오픈 소스인 도커(Docker)가 큰 역할을 하였다. 도커는 리눅스 기술이 었던 컨테이너를 활용 하는데 필요한 도구와 함께 제공 함으로써 개발자를 중심으로 로컬 개발 환경을 구성하고 관리하는데 널라은 경험을 제공하였다. 이 후 서버에 적용 되는데는 구글의 오픈 소스인 Kubernetes(K8s)가 한 몫 하였다. K8s는 다수의 서버 인프라(노드)를 클러스터로 구성하고 컨테이너를 배포 관리 하는 환경을 제공하여 앞서 보았듯이 다수의 기업들이 자사의 어플리케이션 및 서비스에 핵심 플랫폼으로 사용하고 있다.

동적 인프라를 가볍고 이동성이 뛰어난 컨테이너로 관리하고 자동화 하는 환경도 지속적으로 발전하여 현재는 클라우드 네이티브 컴퓨팅(Cloud Native Computing)이라 부르고 클라우드 네이티브 컴퓨팅 재단(Cloud Native Computing Foundation, CNCF.io)에서 구글, AWS, MS등 주요 IT기업들의 참여 속에 관리 되고 있다.

Members_-_Cloud_Native_Computing_Foundation

출처 : Cloud Native Computing Foundation Platinum Members,(https://www.cncf.io/about/members/)

컨테이너는 기존 클라우드 컴퓨팅을 획기적으로 효율화 하였고, 현재도 계속해서 확산되고 있는 추세이다. 동적 인프라가 가지는 장점에 가볍고 이동성이 뛰어나다는 것이 더 얹어져 앞으로도 당분간은 서버외에도 다양한 분야에서 널리 활용 될 것으로 예상 된다.


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

댓글 남기기

WordPress.com 제공.

위로 ↑