"클라우드 네이티브" 방식은 무엇을 의미합니까?
"클라우드 네이티브"라는 용어는 엔터프라이즈 조직이 비즈니스 민첩성, 확장성, 효율성 향상을 위해 대규모 디지털 혁신 프로젝트를 수행할 때 다양한 상황에서 널리 사용되고 있습니다.
이 용어는 무엇을 뜻할까요? 간단히 말해 "클라우드 네이티브" 방식은 애플리케이션이 구축, 배포, 관리되는 방식을 혁신하는 전용 기술, 툴, 프로세스와 더불와 새로운 수준의 소프트웨어 추상화를 수반합니다.
클라우드 네이티브 애플리케이션의 핵심 특징의 예는 다음과 같습니다.
- 코드가 컨테이너로 패키지화됨
- 마이크로서비스 집합으로 설계됨
- 긴밀하게 통합된 민첩한 방식으로 개발자와 IT 운영 팀이 협력함
- 탄력적인 클라우드 인프라 전반에서 배포 및 관리됨
- 인프라 리소스가 자동화된 정책 기반 방식으로 할당됨
클라우드 네이티브 방식이 엔터프라이즈에 주는 이점
클라우드 네이티브 여정을 시작하는 조직들은 방대한 클라우드 네이티브 생태계의 다양한 상용 오픈소스 기술과 더불어 컨테이너 및 Kubernetes를 도입하고 있습니다.
컨테이너 및 클라우드 네이티브 기술을 사용하면 조직은 애플리케이션 개발을 가속화하고, 운영 중단 없이 애플리케이션을 업그레이드하고, 효율적으로 애플리케이션을 확장하고, 다양한 환경 간에 쉽게 이식할 수 있습니다. 이러한 이점들은 궁극적으로 비즈니스 민첩성과 경쟁 우위를 향상합니다.
컨테이너 서비스는 엔터프라이즈가 직면한 몇 가지 주요 문제를 해결합니다. 어디서나 실행할 수 있고 개발자를 위한 강력한 소프트웨어 패키지를 제공하며 공급업체 중립적 패키지를 통해 서비스 업그레이드, 확장성, 가용성, 리소스 효율성을 지원합니다. Kubernetes는 엔터프라이즈에서 일반적으로 수행되는 수동적 관리 대신 프로그래밍 가능하고 반복 가능한 방식으로 규모에 맞게 IT가 작동하는 인프라 레이어를 제공합니다. 쿠버네티스(Kubernetes)는 온프레미스와 퍼블릭 클라우드에서 배포할 수 있으므로 여러 환경에서 공통 운영 모델을 제공합니다. 이러한 특징 때문에 Kubernetes는 이러한 두 가지 환경을 활용하는 기업에게 적합한 플랫폼이 됩니다.
클라우드 네이티브 아키텍처
클라우드 네이티브 아키텍처는 애플리케이션을 효율적으로 확장할 수 있고 운영 중단 없이 업그레이드 가능하며 다른 환경으로 원활하게 마이그레이션할 수 있는 구성 가능한 작은 단위로 구축하기 위해 컨테이너와 Kubernetes를 사용합니다. 이 기술은 보안을 향상하고 유연한 자동화를 지원하면서 비용 효율성을 달성합니다.
온프레미스 Kubernetes 스택
이제 쿠버네티스(Kubernetes)가 실행되는 인프라부터 Kubernetes 기반으로 실행되는 서비스까지 개발자가 애플리케이션 제공 속도를 향상하기 위해 활용할 수 있는 Kubernetes 온프레미스 스택의 다양한 레이어를 살펴보겠습니다. 일부 구성 요소는 스택의 여러 부분에 포함될 수 있다는 점에 유의하십시오. 예를 들면, 하나의 Kubernetes 배포판에는 Harbor 또는 Quay와 같은 컨테이너 레지스트리가 포함될 수 있습니다. 또는, 컨테이너 레지스트리는 어느 배포판에서든 사용할 수 있는 호스팅된 서비스 또는 관리형 서비스로 제공될 수 있습니다.
컴퓨팅 플랫폼
쿠버네티스(Kubernetes)는 배포할 수 있는 위치 측면에서 매우 유연하며, 기술 혁신 덕분에 Kubernetes를 운영하는 방식과 위치를 선택할 수 있는 폭도 넓어지고 있습니다. 일반적으로 Kubernetes에는 최소한 3개의 노드가 필요하며 이러한 노드와 연결된 스토리지 사이에 완전한 네트워크 연결성이 존재해야 합니다. 현재 Kubernetes는 VMware와 같은 가상 인프라 기반으로 가장 흔히 실행됩니다. 베어 메탈과 HCI 역시 흔히 선택되는 인프라 종류입니다.
추가 기능을 통해 Kubernetes 클러스터의 프로비저닝과 운영을 더욱 용이하게 할 수 있습니다. API(예: 클러스터 API, Terraform 등)를 통해 제어되는 인프라 덕분에 쉽게 새로운 노드를 프로비저닝하고 연결할 수 있습니다. 맞춤형 하이퍼바이저는 워크로드를 격리하여 컨테이너의 보안 허점을 메울 수 있습니다. Kubernetes 클러스터 밖에서 로드 밸런서를 사용하면 워크로드 가용성을 달성하고 동적으로 워크로드를 이동 및 확장할 수 있습니다. GPU 또는 TPU와 같은 맞춤형 하드웨어의 이점을 활용할 수 있는 워크로드도 있습니다. 그리고 여러 위치(예: 리테일 매장)에서 여러 클러스터를 운영해야 하는 경우, 기반 인프라를 위한 분산 관리 기능이 유용할 것입니다.
Kubernetes 배포판
2015년에 쿠버네티스(Kubernetes)의 첫 릴리스가 나온 이후 Kuerbetes는 폭발적으로 성장했습다. 그 결과 대규모 기술 기업과 스타트업이 제공하는 Kubernetes 배포판과 호스팅된 플랫폼이 100가지 이상 존재하게 되었습니다. 이러한 기업들은 Kubernetes의 핵심 코드를 네트워킹 스택, 클러스터 관리 툴, 로깅, 모니터링 등의 다른 프로젝트와 결합하여 배포판을 만듭니다.
컨테이너 서비스
쿠버네티스(Kubernetes) 환경을 유용하게 활용하려면 Kubernetes 이외의 추가 인프라 서비스가 필요합니다. 이러한 서비스들은 배포판으로 묶이거나 별도의 서비스로 추가되며, 컨테이너 레지스트리, 인그레스, 로드 밸런서, 시크릿 스토어, 인증서 관리자 등과 같은 기본 항목을 포함합니다.
Kubernetes에서 애플리케이션을 구축하고 배포하는 기업이 늘어나면서 이러한 기업들은 일반적으로 Kubernetes에서도 실행되는 많은 핵심 서비스에 의존하게 되었습니다. 그 예로는 데이터베이스(예: Redis, Postgres), Pub sub(Kafka), Indexing(ElasticSearch), CI/CD 서비스(Gitlab, Jenkins) 및 스토리지(Portworx, MayaData, Minio, Red Hat)가 있습니다.
많은 기업들은 고객이 선택한 Kubernetes 배포판에서 실행되는 애플리케이션을 관리 또는 지원할 수 있는 오퍼링을 개발했습니다. 가장 주목할 만한 제품은 고객의 환경에서 Porsgres 및 MS SQL을 관리형 서비스로 제공하는 Microsoft의 Azure Arc Data Services 이외에 Confluent for Kafka, Crunchy Data for Postgres, Redis Enterprise for Redis, Percona, Elasticsearch, Minio, Mayadata 등 다른 오퍼링도 많습니다.
컨테이너
컨테이너는 클라우드 네이티브 소프트웨어의 가장 작은 단위입니다. 컨테이너는 모든 디펜던시(예: 바이너리, 라이브러리)와 함께 통합된 코드 하나로 구성되며 별개의 프로세스로 실행됩니다. 이 덕분에 새로운 수준의 추상화가 가능합니다. 가상 머신(VM)이 기반 하드웨어에서 컴퓨팅 리소스를 추상화하듯이 컨테이너는 기반 운영 체제(OS)에서 애플리케이션을 추상화합니다.
컨테이너는 여러 가지 중요한 차이점 때문에 VM과 다릅니다. 컨테이너는 리소스 상면이 훨씬 더 작으며, 더 빨리 스핀업할 수 있고, 훨씬 더 쉽게 클라우드 환경 간에 이식할 수 있습니다. VM과 다르게 컨테이너는 수명이 짧습니다.
컨테이너는 마이크로서비스 소프트웨어 아키텍처의 길을 엽니다. 레거시 애플리케이션은 기본적으로 모놀리식이지만, 마이크로 서비스 기반 애플리케이션은 독립적으로 확장할 수 있고 운영 중단 없는 업그레이드를 지원하는 구성 가능한 작은 단위(서비스)의 집합으로 구축됩니다. 컨테이너 서비스는 공통된 기능을 수행하는 하나 이상의 컨테이너로 구성됩니다.
컨테이너화된/마이크로서비스 기반 애플리케이션은 개발자와 DevOps라는 IT 운영 팀 사이의 긴밀한 통합과 조율을 요구하는 효율화되고 가속화된 소프트웨어 개발 방법을 지원합니다.
그림 1: VM 및 컨테이너 비교
Kubernetes
컨테이너화된 애플리케이션은 분산 환경에 적합하고 레거시 애플리케이션과 다른 방식으로 컴퓨팅, 스토리지, 네트워크 리소스를 사용하므로 컨테이너화된 워크로드의 오케스트레이션을 전담하는 인프라 레이어가 필요합니다.
쿠버네티스(Kubernetes)는 지배적인 컨테이너 오케스트레이터로 부상했으며 클라우드의 운영 체제로 간주되는 경우가 많습니다. Kubernetes는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식 및 확장 가능한 오픈소스 플랫폼으로 선언적 구성과 자동화를 모두 촉진합니다.
구체적으로 Kubernetes는 다음과 같은 작업을 수행합니다.
컨테이너를 머신에 할당(스케줄링)
컨테이너 런타임을 통해 지정된 컨테이너 부팅
시스템 업그레이드, 롤백을 담당하고 끊임없는 변화에 대처
장애(예: 컨테이너 운영 중단 등)에 대응
서비스 검색, VM 간 네트워킹, 클러스트 수신/송신 등 클러스터 리소스 생성
Kubernetes는 확장성, 가용성, 보안, 이식성을 위해 설계되었습니다. Kubernetes는 가용 리소스 전반에 워크로드를 분산하여 인프라 비용을 최적화합니다. Kubernetes 클러스터의 각 구성 요소는 고가용성을 위해 구성할 수도 있습니다.
활발하게 활동 중인 글로벌 커뮤니티의 지속적인 기여 덕분에 Kubernetes 기능은 급속도로 진화하고 있으며, 현재 사용자가 사용할 수 있는 다양한 Kubernetes 배포판이 존재합니다. 사용자는 CNCF 인증 배포판을 가장 유용하게 사용할 수 있지만, 스토리지, 네트워킹, 보안, 모니터링 기능을 쉽게 통합하여 Kubernetes 라이프사이클 관리 기능을 통해 지능적 자동화를 달성하는 것이 프로덕션급 클라우드의 네이티브 환경에 필수적으로 필요합니다.
'클라우드 네이티브' 방식으로 전환할 경우 발생하는 문제
클라우드 네이티브 기술은 비즈니스 민첩성과 혁신의 새로운 물결을 대변하지만 이러한 기술의 구성, 배포, 관리는 어떤 유형의 엔터프라이즈에게든 어려운 일입니다. 첫째, 쿠버네티스(Kubernetes) 및 클라우드 네이티브 기술 생태계는 매우 심층적이며 빠르게 진화합니다. 또한, 레거시 인프라는 Kubernetes와 컨테이너가 IT 리소스를 사용하는 방식에 적합하게 설계되지 않았습니다. 이 점은 소프트웨어 개발자에게 상당한 장애물로 작용합니다. 이러한 소프트웨어 개발자는 클라우드 네이티브 애플리케이션에 사용하기 쉬운 서비스와 더불어 필요에 따라 리소스를 원하는 경우가 많습니다. 마지막으로, 모든 조직은 온프레미스 및 퍼블릭 클라우드를 모두 사용하는 Kubernetes 환경을 활용하게 됩니다. 그러나 멀티클라우드의 유연성을 유용하게 활용하려면 모든 환경을 효과적으로 관리하고 모니터링할 수 있어야 합니다.
모범적인 클라우드 네이티브 지침
데이터센터에 엔터프라이즈 쿠버네티스(Kubernetes) 스택을 구축하는 일은 IT 운영 팀의 주된 업무입니다. 이 작업은 회복력이 뛰어나고 동적인 분산 시스템에 맞게 확장되는 인프라에서 Kubernetes 및 컨테이너화된 애플리케이션을 실행하는 데 필수적입니다.
Nutanix 하이퍼컨버지드 인프라(HCI)는 규모에 맞게 Kuberbetes에서 실행되는 클라우드 네이티브 워크로드에 적합한 인프라 토대를 제공합니다.Nutanix는 Kubernetes 플랫폼 구성 요소와 애플리케이션 데이터에 더 나은 회복력을 구현하고 베어 메탈 인프라에 뛰어난 확장성을 제공합니다. Nutanix는 또한 인프라 스테이트풀 컨테이너를 위한 라이프사이클 관리 및영구 스토리지를 간소화하여 클라우드 네이티브 인프라를 배포하고 관리할 때 조직이 직면하는 가장 어려운 문제 중 일부를 해결합니다.