IT

클라우드 네이티브, 컨테이너, 쿠버네티스 알아보기

정보큐레이션 2024. 2. 20. 16:00

23년 가장 클라우드 관련 널리 사용되는 주제가 클라우드 네이티브 입니다. 그리고  22년에서 23년 사이에 175% 성장했습니다. 클라우드 네이티브는 클라우드 컴퓨팅 환경에서 애플리케이션을 구축, 배포 및 관리할 때의 소프트웨어 접근 방식을 의미합니다

 

1. 클라우드 네이티브의 특징

1) 코드가 컨테이너로 패키지화됩니다. 컨테이너는 클라우드 네이티브 애플리케이션에서 가장 작은 컴퓨팅 유닛입니다.
2) 마이크로서비스 집합으로 설계됩니다. 마이크로서비스는 전체적으로 하나의 완전한 클라우드 네이티브 소프트웨어로 작동하는 소규모의 독립적인 소프트웨어 구성 요소입니다.
3) 긴밀하게 통합된 민첩한 방식으로 개발자와 IT 운영 팀이 협력합니다. 클라우드 네이티브 개발은 DevOps 및 지속적 배포(CD)과 같은 애자일 방식을 지원합니다.
4) 탄력적인 클라우드 인프라 전반에서 배포 및 관리됩니다. 클라우드 네이티브 애플리케이션은 마이크로서비스라는 여러 개의 상호 의존적인 소규모 서비스로 구성된 소프트웨어 프로그램입니다.
5) 인프라 리소스가 자동화된 정책 기반 방식으로 할당됩니다. 클라우드 네이티브 접근 방식을 도입하면, 비용이 많이 드는 물리적 인프라를 조달하고 유지 관리하는 데 투자할 필요가 없습니다.

클라우드 네이티브 기술을 통해 조직은 퍼블릭, 프라이빗 및 하이브리드 클라우드와 같은 최신 동적 환경에서 스케일링 가능한 애플리케이션을 빌드하고 실행할 수 있습니다. 이러한 이점들은 궁극적으로 비즈니스 민첩성과 경쟁 우위를 향상합니다,

2. 클라우드 네이티브 아키텍처

클라우드 네이티브 아키텍처는 애플리케이션을 효율적으로 확장할 수 있고 운영 중단 없이 업그레이드 가능하며 다른 환경으로 원활하게 마이그레이션할 수 있는 구성 가능한 작은 단위로 구축하기 위해 Container 와 Kubernetes를 사용합니다. 이 기술은 보안을 향상하고 유연한 자동화를 지원하면서 비용 효율성을 달성합니다.

1) 컨테이너(Container)

컨테이너는 클라우드 네이티브 소프트웨어의 가장 작은 단위입니다. 컨테이너는 모든 디펜던시(예: 바이너리, 라이브러리)와 함께 통합된 코드 하나로 구성되며 별개의 프로세스로 실행됩니다. 이 덕분에 새로운 수준의 추상화가 가능합니다. 가상 머신(VM)이 기반 하드웨어에서 컴퓨팅 리소스를 추상화하듯이 컨테이너는 기반 운영 체제(OS)에서 애플리케이션을 추상화합니다.

컨테이너는 여러 가지 중요한 차이점 때문에 VM과 다릅니다. 컨테이너는 리소스 크기가 훨씬 더 작으며, 더 빨리 스핀업할 수 있고, 훨씬 더 쉽게 클라우드 환경 간에 이식할 수 있습니다. VM과 다르게 컨테이너는 수명이 짧습니다.

컨테이너는 마이크로서비스 소프트웨어 아키텍처의 길을 엽니다. 레거시 애플리케이션은 기본적으로 모놀리식이지만, 마이크로 서비스 기반 애플리케이션은 독립적으로 확장할 수 있고 운영 중단 없는 업그레이드를 지원하는 구성 가능한 작은 단위(서비스)의 집합으로  분산아키텍처로 구성이 됩니다.  컨테이너 서비스는 공통된 기능을 수행하는 하나 이상의 컨테이너로 구성됩니다.

컨테이너화된/마이크로서비스 기반 애플리케이션은 개발자와 DevOps라는 IT 운영 팀 사이의 긴밀한 통합과 조율을 요구하는 효율화되고 가속화된 소프트웨어 개발 방법을 지원합니다.

VM 및 컨테이너 비교(출처 : NUTANIX)

2) 쿠버네티스(Kubernetes)

컨테이너화된 애플리케이션은 분산 환경에 적합하고 레거시 애플리케이션과 다른 방식으로 컴퓨팅, 스토리지, 네트워크 리소스를 사용하므로 컨테이너화된 워크로드의 오케스트레이션을 전담하는 인프라 레이어가 필요합니다.

쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 배포, 관리, 확장할 때 수반되는 다수의 수동 프로세스를 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼입니다.

Kubernetes 의 주요기능

  • 컨테이너를 머신에 할당(스케줄링)
  • 컨테이너 런타임을 통해 지정된 컨테이너 부팅
  • 스토리지 오케스트레이션 : 로컬 스토리지, AWS 나 GCP 와 같은 퍼블릭 클라우드 공급자 또는 NFS, iSCSI와 같은 네트워크 스토리지 시스템에서 원하는 스토리지 시스템을 자동으로 마운트합니다.
  • 시스템 업그레이드, 롤백을 담당하고 끊임없는 변화에 대처
  • 장애에 대한 자가 치유 : 실패한 컨테이너를 재시작하고, 노드가 죽는 경우 컨테이너들을 교체하기 위해 다시 스케줄링을 하며, 사용자가 정의한 상태 체크에 응답하지 않는 컨테이너들을 종료시키며, 서비스를 제공할 준비가 완료될 때까지 해당 컨테이너를 클라이언트에 알리지 않습니다.
  • 서비스 검색, VM 간 네트워킹, 클러스트 수신/송신 등 클러스터 리소스 생성

Kubernetes는 확장성, 가용성, 보안, 이식성을 위해 설계되었습니다. Kubernetes는 가용 리소스 전반에 워크로드를 분산하여 인프라 비용을 최적화합니다. Kubernetes 클러스터의 각 구성 요소는 고가용성을 위해 구성할 수도 있습니다.

Kubernetes 기능은 급속도로 진화하고 있으며, 현재 사용자가 사용할 수 있는 다양한 Kubernetes 배포판이 존재합니다. 사용자는 CNCF(Cloud Native Computing Foundation) 인증 배포판을 가장 유용하게 사용할 수 있지만, 스토리지, 네트워킹, 보안, 모니터링 기능을 쉽게 통합하여 Kubernetes 라이프사이클 관리 기능을 통해 지능적 자동화를 달성하는 것이 프로덕션급 클라우드의 네이티브 환경에 필수적으로 필요합니다.

 

출처 : NUTANIX