2018.07.30

쿠버네티스, 스테이트풀 애플리케이션에서도 초강세…스토리지 지원에 오퍼레이터까지 가세

Niraj Tolia | InfoWorld
쿠버네티스가 MySQL, 몽고DB(MongoDB)와 같은 스테이트풀(stateful) 애플리케이션과 맞지 않는다는 오해는 생각보다 오래 지속됐다. 이 오해가 발생한 이유는 초기 커뮤니티 내부적으로 스테이트리스(stateless) 애플리케이션에 집중한 면도 있고, 지속성 스토리지에 대한 지원이 쿠버네티스에 비교적 늦게 추가됐기 때문이다.

또한 지속성 스토리지 지원이 추가된 이후에도 스테이트리스 애플리케이션의 사용 편의성과 유연성을 구현했던 고차원적 플랫폼 프리미티브가 스테이트풀 워크로드에서는 빠져 있었다. 그러나 이 부족한 부분은 이미 해결이 되었을 뿐만 아니라, 스테이트풀 클라우드 네이티브 애플리케이션을 위한 선호 플랫폼으로 쿠버네티스가 빠르게 자리잡는 중이다.

Image Credit : GettyImagesBank

지금은 모든 주요 퍼블릭 클라우드 서비스 업체체, 그리고 온프레미스 또는 하이브리드 환경을 위한 주요 스토리지 제품이 쿠버네티스 스토리지를 1차적으로 지원한다. 쿠버네티스 호환 스토리지의 등장도 큰 힘이 되었지만 더욱 중요한 점은 쿠버네티스의 컨테이너 스토리지 인터페이스(CSI) 사양 지원이다.

CSI 이니셔티브는 스토리지 솔루션 업체에 컨테이너 오케스트레이터에 대한 균일한 인터페이스를 제공할 뿐만 아니라 새로운 스토리지 시스템을 지원하고 혁신을 촉진하고 무엇보다 개발자와 운영자에게 더 많은 옵션을 제공하는 과정을 훨씬 더 쉽게 해준다.

쿠버네티스 스토리지 지원이 늘어나는 것은 반가운 추세지만 이것이 스테이트풀 클라우드 네이티브 애플리케이션 성공을 위한 충분 조건은 아니며 성공의 주된 이유도 아니다. 할 걸음 물러서서 보면 쿠버네티스와 같은 플랫폼의 성공을 이끄는 힘은 솔루션 업체나 인프라가 아니라 개발자와 애플리케이션에 중점을 두고 있기 때문이다. 그에 호응하여 쿠버네티스 개발 커뮤니티는 적극적으로 기여해서 디스크 및 볼륨과 같은 원시 인프라와 이 인프라를 사용하는 애플리케이션 사이의 간극을 잇는 적절한 추상화를 만들었다.

쿠버네티스 스테이트풀세트, 오퍼레이터, 헴 차트
먼저 스테이트풀 애플리케이션 빌드를 훨씬 더 간단히 하기 위한 오케스트레이션 지원이 스테이풀세트(StatefulSets)와 같은 빌딩 블록 형식으로 추가됐다. 스테이트풀세트는 스테이트풀 애플리케이션을 매끄럽게 확장 및 업그레이드하고 컨테이너 재시작 사이에 네트워크 ID를 보존하는 어려운 문제를 자동으로 해결한다. 스테이트풀세트는 데이터베이스와 같은 고가용성 애플리케이션을 구축, 자동화, 운영하기 위한 강력한 토대를 제공한다.

두 번째로 스테이트풀 애플리케이션을 대규모로, 사람의 개입 없이 쉽게 관리할 수 있도록 하기 위해 “오퍼레이터(Operator)” 개념이 도입됐다. 쿠버네티스 오퍼레이터는 복잡한 애플리케이션 운영에 사용되는 수작업 플레이북을 소프트웨어에 코드화한다.

이와 같은 오케스트레이션의 발전과 함께 쿠버네티스의 패키지 관리자에 해당하는 헬름(Helm)의 발전이 더해지면서 다양한 데이터베이스뿐만 아니라 여러 데이터 스토어를 이용하는 깃랩(GitLab)과 같은 고수준 애플리케이션도 간단히 배포할 수 있게 됐다. 헬름은 “차트”라는 패키징 형식을 사용해서 애플리케이션과 해당 쿠버네티스 리소스를 기술한다. 한 줄 명령으로 시작할 수 있으며, 대규모 애플리케이션에 헬름 차트를 손쉽게 내장해 스택을 위한 지속성을 제공할 수 있다. 또한 오픈소스 차트 형태로 여러 가지 참조 예제가 제공되므로 맞춤형 애플리케이션의 필요에 맞게 간편히 조정해서 사용할 수 있다.

캐니스터와 K10 플랫폼
카스텐(Kasten)은 개발자와 운영자가 상기한 모든 발전된 요소를 훨씬 더 쉽게 활용할 수 있게 해주는 캐니스터(Kanister)와 K10, 두 개의 프로젝트를 추진하고 있다. 폭넓은 고객 의견을 바탕으로 하는 이 두 프로젝트는 단순히 쿠버네티스에 기본적으로 존재하는 기술적 복잡함을 추상화하는 것 외에 대규모의 다양한 애플리케이션과 클라우드에 걸쳐 동질의 운영 환경을 제공한다.

오픈소스 프로젝트인 캐니스터의 주된 원동력은 여러 데이터 서비스를 지원하고 애플리케이션 수준에서 데이터 관리 작업을 수행하는 범용적인 애플리케이션 인식 데이터 관리 평면에 대한 강력한 수요에 있다. 오늘날의 개발자는 하나의 앱에서 여러 데이터 소스를 사용하고(다언어코드 지속성), 최종적 일관성을 제공하는 데이터 서비스를 소비하고(예를 들어 카산드라), 일관적인 데이터 캡처, 맞춤 데이터 마스킹, 애플리케이션 중심 백업 및 복구와 같은 복잡한 요구 사항을 가진 경우가 많다.

캐니스터는 이러한 과제를 해결하기 위해 백업, 복원, 마스킹 등의 데이터 관련 작업을 위한 균일한 제어 평면 API를 제공한다. 이와 동시에 캐니스터는 도메인 전문가가 애플리케이션별 데이터 관리 작업을 손쉽게 공유 및 확장할 수 있는 블루프린트 또는 레시피로 캡처할 수 있도록 한다. 캐니스터는 쿠버네티스 오퍼레이터 패턴과 쿠버네티스 커스텀리소스디피니션(CustomResourceDefinitions)을 기반으로 하지만, 세부 사항은 개발자 관점에서 숨겨지므로 개발자는 이러한 데이터 API에 대한 애플리케이션의 요구 사항에만 집중할 수 있다. 개발자는 쿠버네티스 컨트롤러를 쓰는 방법을 배울 필요 없이 배시(Bash) 스크립트부터 구글 고(Go)에 이르기까지 선호하는 언어로 데이터 서비스를 위한 작업을 작성하기만 하면 된다. 현재 몽고DB 백업부터 포스트그레SQL의 특정 시점 복구(Point-in-Time Recovery) 기능과의 심층적인 통합에 이르기까지 다양한 부분을 다루는 공개 예제가 나와 있다.

캐니스터는 애플리케이션 수준에서 데이터를 다루지만 클러스터와 클라우드, 개발 환경에 걸쳐 분산된 여러 애플리케이션과 마이크로서비스 내의 데이터 관리도 운영자에게는 매우 어려운 일이다. 카스텐은 기업에서 컨테이너화된 스테이트풀 애플리케이션을 대규모로 구축, 배포 및 관리하는 과정을 쉽게 해주는 K10 플랫폼을 출시했다. 애플리케이션 중심의 뷰를 갖춘 K10은 정책 기반 자동화를 사용해 클라우드 네이티브 애플리케이션을 위한 규정 준수, 데이터 모빌리티, 데이터 조작, 감사, 글로벌 가시성과 같은 기능을 제공한다. 스테이트풀 애플리케이션을 위해 K10은 백업 및 복구, 클러스터 간 및 다중 클러스터 애플리케이션 마이그레이션, 재해 복구를 포함한 다양한 사용 사례에서 복잡함을 제거해준다.

스테이트풀 쿠버네티스의 현주소
캐니스터, K10 플랫폼 등의 제품에 대한 수요를 견인하는 요소는 스테이트풀 컨테이너 기반 애플리케이션의 빠른 증가세다. 쿠버네티스 스페셜 인터레스트 그룹 온 애플리케이션(Kubernetes Special Interest Group on Applications)이 최근 실시한 설문에서는 사용자의 50% 이상이 쿠버네티스 클러스터에서 일종의 관계형 데이터베이스 또는 NoSQL 시스템을 실행 중인 것으로 나타났다. 이 수치는 계속 올라갈 것이다.

또한 클라우드 네이티브 환경에서 전통적인 데이터베이스 시스템이 사용되는 데 그치지 않고 진정한 클라우드 네이티브 방식으로 탄력성과 관리 편의성, 관측성에 중점을 두고 구축된 데이터베이스 시스템도 증가하고 있다. 비테스(Vitess), 유가바이트(YugaByte), 코크로치DB(CockroachDB)와 같은 차세대 시스템이 성숙해지면서 이 영역에서 앞으로 더 많은 혁신이 일어날 것이다.

스테이트풀 클라우드 네이티브 애플리케이션 발전의 첫 장을 넘기고 맞이할 미래에는 기회와 과제가 공존한다. 쿠버네티스와 같은 클라우드 네이티브 플랫폼이 제공하는 진정한 클라우드 이식성을 고려하면 다중 클러스터, 다중 클라우드, 나아가 전 세계적 규모의 환경에서 애플리케이션 데이터를 이동하기 위해서는 새로운 종류의 분산 시스템을 개발해야 할 것이다.

데이터 중력은 극복해야 할 가장 큰 과제다. 빛의 속도로 작업하기 위한 새로운, 효율적인 분산 및 전송 알고리즘이 필요하게 될 것이다. 엔터프라이즈 플랫폼 운영자가 새로운 클라우드 네이티브 플랫폼에 의해 실현되는 전례 없는 규모에서 작업할 수 있도록 하려면 이러한 환경에서 데이터가 관리되는 방식에 대한 근본적인 애플리케이션 중심의 새로운 사고가 필요하다. 카스텐은 K10 엔터프라이즈 플랫폼과 캐니스터에서 해당 문제에 대처할 뿐만 아니라 진정한 클라우드 기반 데이터 관리의 기반을 마련하고 있다.

* Niraj Tolia는 카스텐(Kasten)의 공동 설립자이자 CEO이다.  editor@itworld.co.kr

2018.07.30

쿠버네티스, 스테이트풀 애플리케이션에서도 초강세…스토리지 지원에 오퍼레이터까지 가세

Niraj Tolia | InfoWorld
쿠버네티스가 MySQL, 몽고DB(MongoDB)와 같은 스테이트풀(stateful) 애플리케이션과 맞지 않는다는 오해는 생각보다 오래 지속됐다. 이 오해가 발생한 이유는 초기 커뮤니티 내부적으로 스테이트리스(stateless) 애플리케이션에 집중한 면도 있고, 지속성 스토리지에 대한 지원이 쿠버네티스에 비교적 늦게 추가됐기 때문이다.

또한 지속성 스토리지 지원이 추가된 이후에도 스테이트리스 애플리케이션의 사용 편의성과 유연성을 구현했던 고차원적 플랫폼 프리미티브가 스테이트풀 워크로드에서는 빠져 있었다. 그러나 이 부족한 부분은 이미 해결이 되었을 뿐만 아니라, 스테이트풀 클라우드 네이티브 애플리케이션을 위한 선호 플랫폼으로 쿠버네티스가 빠르게 자리잡는 중이다.

Image Credit : GettyImagesBank

지금은 모든 주요 퍼블릭 클라우드 서비스 업체체, 그리고 온프레미스 또는 하이브리드 환경을 위한 주요 스토리지 제품이 쿠버네티스 스토리지를 1차적으로 지원한다. 쿠버네티스 호환 스토리지의 등장도 큰 힘이 되었지만 더욱 중요한 점은 쿠버네티스의 컨테이너 스토리지 인터페이스(CSI) 사양 지원이다.

CSI 이니셔티브는 스토리지 솔루션 업체에 컨테이너 오케스트레이터에 대한 균일한 인터페이스를 제공할 뿐만 아니라 새로운 스토리지 시스템을 지원하고 혁신을 촉진하고 무엇보다 개발자와 운영자에게 더 많은 옵션을 제공하는 과정을 훨씬 더 쉽게 해준다.

쿠버네티스 스토리지 지원이 늘어나는 것은 반가운 추세지만 이것이 스테이트풀 클라우드 네이티브 애플리케이션 성공을 위한 충분 조건은 아니며 성공의 주된 이유도 아니다. 할 걸음 물러서서 보면 쿠버네티스와 같은 플랫폼의 성공을 이끄는 힘은 솔루션 업체나 인프라가 아니라 개발자와 애플리케이션에 중점을 두고 있기 때문이다. 그에 호응하여 쿠버네티스 개발 커뮤니티는 적극적으로 기여해서 디스크 및 볼륨과 같은 원시 인프라와 이 인프라를 사용하는 애플리케이션 사이의 간극을 잇는 적절한 추상화를 만들었다.

쿠버네티스 스테이트풀세트, 오퍼레이터, 헴 차트
먼저 스테이트풀 애플리케이션 빌드를 훨씬 더 간단히 하기 위한 오케스트레이션 지원이 스테이풀세트(StatefulSets)와 같은 빌딩 블록 형식으로 추가됐다. 스테이트풀세트는 스테이트풀 애플리케이션을 매끄럽게 확장 및 업그레이드하고 컨테이너 재시작 사이에 네트워크 ID를 보존하는 어려운 문제를 자동으로 해결한다. 스테이트풀세트는 데이터베이스와 같은 고가용성 애플리케이션을 구축, 자동화, 운영하기 위한 강력한 토대를 제공한다.

두 번째로 스테이트풀 애플리케이션을 대규모로, 사람의 개입 없이 쉽게 관리할 수 있도록 하기 위해 “오퍼레이터(Operator)” 개념이 도입됐다. 쿠버네티스 오퍼레이터는 복잡한 애플리케이션 운영에 사용되는 수작업 플레이북을 소프트웨어에 코드화한다.

이와 같은 오케스트레이션의 발전과 함께 쿠버네티스의 패키지 관리자에 해당하는 헬름(Helm)의 발전이 더해지면서 다양한 데이터베이스뿐만 아니라 여러 데이터 스토어를 이용하는 깃랩(GitLab)과 같은 고수준 애플리케이션도 간단히 배포할 수 있게 됐다. 헬름은 “차트”라는 패키징 형식을 사용해서 애플리케이션과 해당 쿠버네티스 리소스를 기술한다. 한 줄 명령으로 시작할 수 있으며, 대규모 애플리케이션에 헬름 차트를 손쉽게 내장해 스택을 위한 지속성을 제공할 수 있다. 또한 오픈소스 차트 형태로 여러 가지 참조 예제가 제공되므로 맞춤형 애플리케이션의 필요에 맞게 간편히 조정해서 사용할 수 있다.

캐니스터와 K10 플랫폼
카스텐(Kasten)은 개발자와 운영자가 상기한 모든 발전된 요소를 훨씬 더 쉽게 활용할 수 있게 해주는 캐니스터(Kanister)와 K10, 두 개의 프로젝트를 추진하고 있다. 폭넓은 고객 의견을 바탕으로 하는 이 두 프로젝트는 단순히 쿠버네티스에 기본적으로 존재하는 기술적 복잡함을 추상화하는 것 외에 대규모의 다양한 애플리케이션과 클라우드에 걸쳐 동질의 운영 환경을 제공한다.

오픈소스 프로젝트인 캐니스터의 주된 원동력은 여러 데이터 서비스를 지원하고 애플리케이션 수준에서 데이터 관리 작업을 수행하는 범용적인 애플리케이션 인식 데이터 관리 평면에 대한 강력한 수요에 있다. 오늘날의 개발자는 하나의 앱에서 여러 데이터 소스를 사용하고(다언어코드 지속성), 최종적 일관성을 제공하는 데이터 서비스를 소비하고(예를 들어 카산드라), 일관적인 데이터 캡처, 맞춤 데이터 마스킹, 애플리케이션 중심 백업 및 복구와 같은 복잡한 요구 사항을 가진 경우가 많다.

캐니스터는 이러한 과제를 해결하기 위해 백업, 복원, 마스킹 등의 데이터 관련 작업을 위한 균일한 제어 평면 API를 제공한다. 이와 동시에 캐니스터는 도메인 전문가가 애플리케이션별 데이터 관리 작업을 손쉽게 공유 및 확장할 수 있는 블루프린트 또는 레시피로 캡처할 수 있도록 한다. 캐니스터는 쿠버네티스 오퍼레이터 패턴과 쿠버네티스 커스텀리소스디피니션(CustomResourceDefinitions)을 기반으로 하지만, 세부 사항은 개발자 관점에서 숨겨지므로 개발자는 이러한 데이터 API에 대한 애플리케이션의 요구 사항에만 집중할 수 있다. 개발자는 쿠버네티스 컨트롤러를 쓰는 방법을 배울 필요 없이 배시(Bash) 스크립트부터 구글 고(Go)에 이르기까지 선호하는 언어로 데이터 서비스를 위한 작업을 작성하기만 하면 된다. 현재 몽고DB 백업부터 포스트그레SQL의 특정 시점 복구(Point-in-Time Recovery) 기능과의 심층적인 통합에 이르기까지 다양한 부분을 다루는 공개 예제가 나와 있다.

캐니스터는 애플리케이션 수준에서 데이터를 다루지만 클러스터와 클라우드, 개발 환경에 걸쳐 분산된 여러 애플리케이션과 마이크로서비스 내의 데이터 관리도 운영자에게는 매우 어려운 일이다. 카스텐은 기업에서 컨테이너화된 스테이트풀 애플리케이션을 대규모로 구축, 배포 및 관리하는 과정을 쉽게 해주는 K10 플랫폼을 출시했다. 애플리케이션 중심의 뷰를 갖춘 K10은 정책 기반 자동화를 사용해 클라우드 네이티브 애플리케이션을 위한 규정 준수, 데이터 모빌리티, 데이터 조작, 감사, 글로벌 가시성과 같은 기능을 제공한다. 스테이트풀 애플리케이션을 위해 K10은 백업 및 복구, 클러스터 간 및 다중 클러스터 애플리케이션 마이그레이션, 재해 복구를 포함한 다양한 사용 사례에서 복잡함을 제거해준다.

스테이트풀 쿠버네티스의 현주소
캐니스터, K10 플랫폼 등의 제품에 대한 수요를 견인하는 요소는 스테이트풀 컨테이너 기반 애플리케이션의 빠른 증가세다. 쿠버네티스 스페셜 인터레스트 그룹 온 애플리케이션(Kubernetes Special Interest Group on Applications)이 최근 실시한 설문에서는 사용자의 50% 이상이 쿠버네티스 클러스터에서 일종의 관계형 데이터베이스 또는 NoSQL 시스템을 실행 중인 것으로 나타났다. 이 수치는 계속 올라갈 것이다.

또한 클라우드 네이티브 환경에서 전통적인 데이터베이스 시스템이 사용되는 데 그치지 않고 진정한 클라우드 네이티브 방식으로 탄력성과 관리 편의성, 관측성에 중점을 두고 구축된 데이터베이스 시스템도 증가하고 있다. 비테스(Vitess), 유가바이트(YugaByte), 코크로치DB(CockroachDB)와 같은 차세대 시스템이 성숙해지면서 이 영역에서 앞으로 더 많은 혁신이 일어날 것이다.

스테이트풀 클라우드 네이티브 애플리케이션 발전의 첫 장을 넘기고 맞이할 미래에는 기회와 과제가 공존한다. 쿠버네티스와 같은 클라우드 네이티브 플랫폼이 제공하는 진정한 클라우드 이식성을 고려하면 다중 클러스터, 다중 클라우드, 나아가 전 세계적 규모의 환경에서 애플리케이션 데이터를 이동하기 위해서는 새로운 종류의 분산 시스템을 개발해야 할 것이다.

데이터 중력은 극복해야 할 가장 큰 과제다. 빛의 속도로 작업하기 위한 새로운, 효율적인 분산 및 전송 알고리즘이 필요하게 될 것이다. 엔터프라이즈 플랫폼 운영자가 새로운 클라우드 네이티브 플랫폼에 의해 실현되는 전례 없는 규모에서 작업할 수 있도록 하려면 이러한 환경에서 데이터가 관리되는 방식에 대한 근본적인 애플리케이션 중심의 새로운 사고가 필요하다. 카스텐은 K10 엔터프라이즈 플랫폼과 캐니스터에서 해당 문제에 대처할 뿐만 아니라 진정한 클라우드 기반 데이터 관리의 기반을 마련하고 있다.

* Niraj Tolia는 카스텐(Kasten)의 공동 설립자이자 CEO이다.  editor@itworld.co.kr

X