“개발 장벽 높아”…밀려드는 외산 PaaS에 국산 벤더 대응 전략 고심

[아이티데일리] 클라우드가 점차 IT시스템의 기반으로 자리잡고 있다. 소프트웨어(SW)를 개발하고, 운영하는데 필요한 플랫폼 역시 클라우드 형태로 바뀌고 있다. 클라우드 플랫폼(PaaS)은 다양한 SW 개발 환경을 갖추어야 하며 빠른 개발과 배포를 위해 컨테이너를 위한 기술이 탑재돼야 한다. 

이와 같이 PaaS의 핵심으로 부상한 컨테이너 환경과 이를 관리할 수 있는 플랫폼인 쿠버네티스가 무엇인지 알아봤다.

① 핵심은 컨테이너와 쿠버네티스…가용성, 민첩성 등 중요
② “쿠버네티스의 많은 기능이 개발 장벽으로”
③ 국내 시장에 외산 PaaS가 밀려온다
④ 외산 PaaS와 경쟁하는 국산 PaaS 기업 전략


PaaS, 핵심은 컨테이너와 쿠버네티스…가용성, 민첩성 등 중요

플랫폼의 목적은 효율적으로 애플리케이션을 개발하고 운영하는 데 있다. 클라우드가 IT 시스템의 기반으로 자리잡으면서 플랫폼 역시 클라우드와 결합하고 있는데 이것이 바로 PaaS(Platform as a Service)다.

PaaS의 핵심은 단연 컨테이너와 이를 관리할 수 있도록 하는 쿠버네티스다. 컨테이너는 2000년대 중반에 처음 소개된 개념으로 기업들의 SW 개발환경을 유연하고 민첩하게 만들어준다는 장점이 있다.

컨테이너가 PaaS의 핵심인 이유는 개발환경과 운영환경의 간극을 좁혀주기 때문이다. 컨테이너라는 그릇에 SW와 개발환경을 이미지화 시킨 후, 이미지화 된 SW를 ‘라이브러리(lib)’, ‘바이너리(bin)’ 폴더에 옮겨 넣기만 하면 쉽게 이용할 수 있게 된다.

소수영 나무기술 차장은 “일반적으로 SW는 개발자가 개발한 환경에서 원활하게 구동된다. 하지만 개발 환경에서 아무 문제없이 운영되던 SW일지라도 환경이 바뀌면 문제가 생길 수 있다”며, “개발자는 우분투 OS 환경에서 SW를 개발했는데, 운영을 해야 하는 고객사에서 다른 OS를 사용하게 되면 개발환경에서 보여줬던 기능과 성능에 문제가 나타날 수 있다”고 말했다.

▲ 컨테이너 시장의 트렌드 (출처: 나무기술)

컨테이너를 활용할 경우 이러한 문제를 해결할 수 있다. 그리고 쿠버네티스는 이러한 컨테이너를 관리한다. 그리고 컨테이너를 관리하는 쿠버네티스의 핵심은 바로 ‘오케스트레이션(Orchestration)’ 기능에 있다. 이 오케스트레이션 기능을 이용할 경우 방대한 양의 컨테이너를 관리할 수 있다.

구글은 자사의 G메일, 구글 드라이브 등 애플리케이션의 CI/CD(지속적 통합/지속적 배포) 기능을 위해 쿠버네티스를 활용하고 있는데, 쿠버네티스를 통해 운영 중인 컨테이너가 약 30억 개인 것으로 알려졌다.

오케스트레이션 기능을 사용하기 위해서는 오케스트레이션 엔진이 필요하다. 이 엔진을 통해 컨테이너의 생성과 소멸, 시작 및 중단 시점 제어, 스케줄링, 로드 밸런싱, 클러스터링 등 컨테이너로 애플리케이션을 구성하는 모든 과정을 관리할 수 있다. 컨테이너 오케스트레이션 엔진은 일반적으로 클러스터 관리를 위한 ‘API 서비스’, 컨테이너에서 구동되는 애플리케이션 관리를 위한 ‘서비스 디스커버리’, 모니터링 서비스 등을 담당하는 ‘콘트롤 플레인’, 실제 컨테이너가 구동되는 ‘서버 클러스터(그룹화)’로 구성돼 있다.

▲ 오케스트레이션의 기능

쿠버네티스의 기술적 구성은 클러스터 형태다. 쿠버네티스는 클러스터 전체를 관리하는 ‘마스터 쿠버네티스(Master Kubernetes)’와 컨테이너가 배포되는 가상 또는 물리 머신인 ‘워커노드(Worker Node)’로 나뉜다.

▲ 베어메탈, VM과 컨테이너 구조도 (출처: 나무기술)


가용성, 민첩성, 개방성, 자동화가 중요

PaaS를 사용하는 가장 큰 이유는 마이크로서비스 아키텍처(MSA, MicroService Architecture)를 구현하기 위해서다. MSA는 기존의 하나의 덩어리 형태인 모놀리식(Monolithic) 아키텍처를 잘게 썰어놓은 형태로 재편성한 후, 각각의 작은 아키텍처에 SW를 하나씩 올린다. 이렇게 되면, 별도의 SW 개발과 운영이 가능해진다. 이러한 MSA 구현에 가장 적합한 개념이 바로 컨테이너다. 하나의 SW만 올라가는 컨테이너 구동방식이 아키텍처를 잘게 나눠야하는 MSA와 부합한 것이다.

이런 이유로 컨테이너 기반 PaaS는 MSA에 필수적인 ▲가용성 ▲민첩성 ▲개방성 ▲자동화 등 4가지 사항을 충족시킬 수 있는 세부적인 기능을 갖고 있어야 한다.

먼저 가용성 측면에서 과도한 접속으로 인한 장애나 재해가 발생해도 무중단 서비스가 가능해야 한다. 이를 위해 멀티 클라우드 상에서 ‘액티브-액티브(Active-Active)’ 환경으로 서비스의 분산 배치와 운영은 필수적이다.

‘액티브-액티브’란 멀티 클라우드에서 주로 이뤄지는 환경으로, 어느 한 퍼블릭 클라우드를 구동할 때 다른 퍼블릭 클라우드를 대기 상태로 두지 않고 운영 상태로 두는 것이다. 이렇게 되면 어느 한 퍼블릭 클라우드가 중단되더라도, 다른 퍼블릭 클라우드는 운영되기 때문에 가용성이 높아지게 된다.

다음은 민첩성이다. 민첩성을 높이기 위해서는 다양한 개발환경과 운영환경이 섞인 상황에서 서비스 요구사항에 따른 즉시 배포, 자원의 분산 배치와 확장이 가능해야 한다. 고객들이 요구하는 서비스 사항들이 점차 복잡해지고 세부적으로 변화하고 있으며, 이러한 고객들의 요구에 더 빠르게 대처해야 하기 때문이다. 이를 위한 것이 바로 즉시 배포, 빠른 자원의 분산 배치와 확장 기능을 갖춰야 한다.

개방성 역시 PaaS의 필수 요소다. 특정 하드웨어(HW)와 SW 벤더에 종속되지 않아야 한다. 운영체제(OS), 미들웨어, SW가 종속되면 클라우드 트렌드로 자리 잡은 하이브리드·멀티 클라우드를 사용하기 힘들어진다.

가령, 멀티 클라우드를 사용하기 위해서는 SW 마이그레이션이 자유로워야 한다. HW, OS, VM(가상머신) 등이 종속되면 SW 마이그레이션에 제약이 생긴다. 이를 해결하기 위해 개방성을 갖춘 PaaS가 필요하다. 이는 PaaS가 컨테이너를 지원해야 하는 이유와도 연관이 있다. 애플리케이션을 다른 클라우드로 옮길 경우 클라우드 서비스 프로바이더(CSP) 마다 사용하는 VM이 달라 문제가 발생할 수 있다.

이를 컨테이너가 해결할 수 있다. 컨테이너는 VM 위에 SW 개발 환경까지 함께 올라가기 때문에 CSP마다 사용하는 VM이 달라도 문제가 발생하지 않는다. 아마존웹서비스(AWS)에서 SW를 개발한 후 이를 마이크로소프트(MS)의 ‘애저(Azure)’로 옮긴다면, AWS에서 개발할 당시 사용된 환경이 무엇이든지 그 SW 구동 환경 전체를 컨테이너로 담아 옮기기 때문에 MS 애저로 아무런 문젱 없이 옮길 수 있다.

이진현 맨텍 OM사업본부장은 “컨테이너는 하부 OS, 물리머신, 하부 자원에 대한 종속없이 컨테이너 그 자체로 가동될 환경을 갖고 있어 어디든 옮길 수 있다. 컨테이너가 클라우드 환경에서 급부상 하는 이유이다”며, “만일 내가 만든 애플리케이션이 컨테이너 기반이라면 NBP의 NCP, KT의 G-클라우드 등 어디든 이식이 가능하다. AI, 블록체인 등이 최근 컨테이너 구조로 나오는 이유도 바로 클라우드 때문”이라고 설명했다.

마지막으로 PaaS가 갖춰야할 필수적인 요소는 자동화다. 컨테이너의 라이프 싸이클 관리와 인프라 운영이 하나의 과정으로 묶여야하며, 자동화돼야 한다는 것이다. 이 같은 자동화가 선행되지 않으면 민첩성과 가용성 충족도 사실상 불가능하다.

가령, 컨테이너 기반의 PaaS가 있지만 컨테이너를 자동으로 배포하고 확장하는 기능을 지원하지 않는다면, 수백~수십만 개의 컨테이너를 일일이 수작업으로 관리해야 한다. 컨테이너에 애플리케이션을 담는 것은 물론, 애플리케이션의 생성부터 폐기까지 전 과정을 직접 사람이 해야 한다는 것이다. 그렇기에 컨테이너 기반 PaaS에서는 자동화 기능이 필수적이다.

저작권자 © 아이티데일리 무단전재 및 재배포 금지