Knative란?
Knative를 사용하면 Kubernetes 클러스터에서 서버리스 워크로드를 실행하여 더 빠르고 쉽게 Kubernetes에서 컨테이너를 구축하고 오케스트레이션할 수 있습니다.
검은색과 파란색 배경
Knative란?

Knative(케이-네이-티브로 발음)는 Kubernetes 컨테이너 오케스트레이션 플랫폼의 확장으로, 서버리스 워크로드를 Kubernetes 클러스터에서 실행할 수 있도록 지원하며, Kubernetes 내에서 컨테이너화된 애플리케이션을 구축, 배포, 관리하는 툴과 유틸리티를 제공하여 더 단순하고 'Kubernetes 네이티브'적인 경험을 제공합니다(즉, Knative는 'Kubernetes'의 K와 native를 결합한 것임).

Kubernetes처럼, Knative는 오픈 소스 소프트웨어입니다.  Knative는 원래 Google에서 IBM, Pivotal, Red Hat, SAP 및 약 50개의 다른 기업과 협력하여 개발되었습니다. 현재 Knative 오픈 소스 프로젝트는 CNCF(Cloud Native Computing Foundation)에서 주관하고 있습니다. 

Kubernetes에 Knative가 필요한 이유

Kubernetes는 컨테이너의 배포, 관리, 확장을 자동화하고 일정을 관리합니다. 컨테이너는 환경에서 코드를 실행하는 데 필요한 운영 체제(OS) 라이브러리 및 종속성 항목과 소스 코드를 결합하는 실행 가능한 경량 애플리케이션 컴포넌트입니다. 

가상 머신(VM)을 통해 애플리케이션이 하나의 물리적 컴퓨터 리소스를 공유하는 것과 거의 동일한 방식으로, 컨테이너를 통해 애플리케이션 컴포넌트가 OS의 단일 인스턴스 리소스를 공유할 수 있습니다. 컨테이너는 VM보다 더 작고 리소스 효율이 높으며, 애자일 및 DevOps 개발 방법론에 더 적합하므로, 사실상 최신 클라우드 네이티브 애플리케이션의 컴퓨팅 유닛이 되었습니다. 컨테이너를 사용하는 기업들은 앱 품질 향상, 혁신 수준 향상 등 또 다른 이점도 보고했습니다.

보고서 전체 다운로드: 엔터프라이즈의 컨테이너 (PDF, 1.4MB)

클라우드 네이티브 개발의 인기가 높아지고 조직에서 컨테이너가 확산되는 가운데 Kubernetes의 컨테이너 오케스트레이션 기능(예: 일정 관리, 로드 밸런싱, 상태 모니터링 등)으로 훨씬 더 쉽게 이러한 확산을 관리할 수 있게 되었습니다. 그러나, Kubernetes는 개발자가 Kubernetes 외부에서 여러 가지 툴을 사용하여 많은 반복적인 작업(저장소에서 애플리케이션 소스 코드 가져오기, 코드 주위에 컨테이너 이미지 구축 및 프로비저닝, 네트워크 연결 구성)을 수행하거나 템플리트화하는 데 필요한 복잡한 툴입니다. 그리고 Kubernetes 관리형 컨테이너를 지속적 통합/지속적 딜리버리 (CI/DC) 파이프라인에 통합하려면 특수한 툴과 맞춤형 코딩 작업이 필요합니다.

Knative는 Kubernetes 내에서 이러한 작업을 자동화하는 툴을 사용하여 복잡성을 해소합니다. 개발자가 단일 YAML 매니페스트 파일에서 컨테이너의 컨텐츠와 구성을 정의하면, Knative에서 나머지 작업을 수행하여 컨테이너를 만들고 네트워크 프로그래밍을 수행합니다. 그리고 이를 통해 루트, 인그레스, 로드 밸런싱 등을 설정합니다. (Knative는 또한 Knative CLI라는 명령행 인터페이스를 제공합니다. 개발자는 이 CLI로 YAML 파일을 편집하지 않고도 Knative 기능에 액세스할 수 있습니다.)

서버리스 방식을 지원하는 컨테이너

서버리스 컴퓨팅은 애플리케이션 개발을 용이하게 하고 애플리케이션 실행 시 비용 효율성을 높이는 클라우드 네이티브 실행 모델입니다. 서버리스 컴퓨팅 모델은

  • 필요에 따라 컴퓨팅 리소스를 프로비저닝합니다. 요청에 따라 투명하게 확장하고, 더 이상 요청이 없으면 0으로 축소합니다.

  • 또한 모든 인프라 관리 작업(확장, 일정 관리, 패치 적용, 프로비저닝 등)을 클라우드 제공자가 처리하므로 개발자는 시간과 노력을 개발 및 혁신에 투자할 수 있습니다.

  • 그리고 서버리스 컴퓨팅 모델은 클라우드 고객이 사용 중인 리소스에 대해서만 비용을 지불하도록 합니다. 고객은 유휴 용량에 대해서는 비용을 지불하지 않습니다.

Kubernetes는 그 자체로 서버리스 애플리케이션을 실행할 수 없습니다. 이를 위해서는 Kubernetes를 특정 클라우드 제공자의 서버리스 플랫폼과 통합하는 전문화된 소프트웨어가 필요합니다. Knative는 코드를 추상화하고 네트워크 라우팅, 이벤트 트리거 및 자동 스케일링을 처리하여 어느 Kubernetes 클러스터에서든(컨테이너가 서버리스 기능에 따라 구축되었거나, 다른 애플리케이션 코드(예: 마이크로서비스)를 기반으로 하든 상관없이) 컨테이너가 서버리스 워크로드로 실행되도록 지원합니다.

Knative의 작동 방식: Knative 컴포넌트

Knative는 Kubernetes 위에 있으며, 빌드(build), 서빙(serving), 이벤팅(eventing)이라는 세 가지 주요 컴포넌트, 즉 프리미티브를 추가합니다. 

빌드


 Knative의 빌드 컴포넌트는 소스 코드를 컨테이너로 바꾸는 프로세스를 자동화합니다. 이 프로세스에는 일반적으로 다음과 같은 여러 단계가 포함됩니다.

  • GitHub와 같은 코드 저장소에서 소스 코드 가져오기
  • 코드가 실행해야 하는 기본 종속성 항목(예: 환경 변수 및 소프트웨어 라이브러리) 설치하기
  • 컨테이너 이미지 빌드하기
  • 컨테이너 이미지를 Kubernetes(및 다른 개발자)가 찾을 수 있는 레지스트리에 배치하기

Knative는 빌드 프로세스에 Kubernetes API 및 기타 툴을 사용합니다. 개발자는 모든 변수(소스 코드의 위치, 필요한 종속성 항목 등)를 지정하는 단일 매니페스트(일반적으로 YAML 파일임)를 만들 수 있으며, Knative는 이 매니페스트를 사용하여 컨테이너 빌드를 자동화합니다.      

서빙


서빙 컴포넌트는 확장 가능한 Knative 서비스로서 컨테이너를 배포하고 실행합니다. 서빙은 다음과 같은 중요한 기능을 제공합니다.

  • 구성은 서비스의 상태를 정의하고 관리합니다. 또한 버전 관리도 제공합니다. 구성을 변경할 때마다 새 버전의 서비스가 생성되고 이전 버전은 저장됩니다.

  • 지능형 서비스 라우팅을 통해 개발자는 트래픽을 서비스의 다양한 버전으로 라우팅할 수 있습니다. 서비스의 새 버전을 만들었고 모든 사용자를 마이그레이션하기 전에 일부 사용자에게 이 버전을 배포하려고 한다고 가정해 보세요. 지능형 서비스 라우팅으로 일부 사용자의 요청을 새 서비스로 라우팅하고 나머지 요청은 이전 버전으로 라우팅할 수 있습니다. 새 서비스에 대한 신뢰가 더 강화되면 더 많은 트래픽을 신규 서비스로 라우팅할 수 있습니다.

  • 자동 스케일링. Knative는 수 천 개의 인스턴스로 서비스를 확장하거나 서비스를 0으로 축소할 수 있습니다. 0일 경우 컨테이너의 인스턴스가 전혀 없는 상태입니다. 이러한 기능은 서버리스 애플리케이션을 지원하는 데 매우 중요합니다.

Knative 서빙은 Kubernetes 생태계의 또 다른 애플리케이션인 Istio로부터 지능형 서비스 라우팅을 가져옵니다. Kubernetes를 위한 오픈 소스 서비스 메시. Istio는 또한 서비스 요청에 대한 인증, 서비스 간의 안전한 통신을 위한 자동 트래픽 암호화 그리고 개발자와 관리자가 인프라 최적화를 위해 사용할 수 있는 마이크로서비스 및 서버리스 기능 운영에 대한 상세한 메트릭을 제공합니다. (Knative가 Istio를 사용하는 방식을 자세히 알아보려면 “Istio 및 Knative: 새로운 개발자 경험을 위해 Kubernetes 확장"을 읽어 보세요.)

이벤트 제공


Knative의 이벤팅 컴포넌트를 사용하면 다양한 이벤트에서 컨테이너 기반 서비스 및 기능을 트리거할 수 있습니다.Knative는 이벤트의 줄을 세우고 이러한 이벤트를 적절한 컨테이너에 제공합니다. 따라서 이 기능을 위한 스크립트를 작성하거나 미들웨어를  실행하지 않아도 됩니다. Knative는 개발자가 선택할 수 있는 이벤트의 큐인 채널과 이벤트를 컨테이너에 제공하는 메시징 플랫폼인 버스도 처리합니다. 또한 Knative는 개발자가 피드를 설정하도록 지원합니다. 피드는 이벤트를 컨테이너가 수행할 작업에 연결합니다.

Knative 이벤트 소스로 개발자는 더 쉽게 써드파티 이벤트 생성자와 연결할 수 있습니다. Knative 이벤팅은 자동으로 이벤트 생성자에 대한 연결을 작성하고 생성된 이벤트를 라우팅합니다. 이러한 작업을 수행하기 위해 어떻게 프로그래밍해야 하는지 몰라도 괜챦습니다. Knative가 다 해주기 때문입니다.

Knative 사용 사례

요약하면, Knative는 컨테이너화된 앱 개발을 간소화하거나 컨테이너 사용 방식을 한 차원 더 향상시키려는 Kubernetes 사용자를 위해 여러 가지 사용 사례를 지원합니다.

Kubernetes 간소화.Knative는 반복적인 빌드 및 구성 작업을 제거하여 Kubernetes로 작업하는 개발자의 생산성을 높여 줍니다. 늘어나는 Kubernetes 클러스터를 관리하느라 애를 먹고 있는 개발 팀이라면 누구나 Knative를 사용할 수 있습니다.

서버리스로의 전환 여정 가속화. 서버리스 환경을 수동으로 설정하고 관리하는 일은 부담스러울 수 있습니다. Knative를 사용하면 조직에서 서버리스 워크로드를 신속하게 설정할 수 있습니다. 개발자의 입장에서 보면, 개발자는 컨테이너만 빌드합니다. 보이지 않게 서버리스 기능으로 컨테이너를 실행하는 것은 Knative입니다.

애자일 및 DevOps 라이프사이클 지원. Knative는 개발자가 새 컨테이너와 컨테이너 버전을 더 빨리 작성할 수 있도록 지원하므로 애자일 또는 DevOps 워크플로우의 일부인 소규모의 빠르고 반복적인 단계에서 컨테이너화된 애플리케이션을 더 쉽게 배포할 수 있습니다. 그리고 Knative 서비스는 특별한 소프트웨어나 맞춤형 프로그래밍 없이도 자동화된 CI/CD 파이프라인으로 쉽게 통합됩니다.

원활하게 새 기능을 배포하도록 지원. 고객에게 새 릴리스를 배포하면 비즈니스 프로세스에 영향을 줄 수 있는 소프트웨어 문제가 노출될 수 있습니다. Knative의 구성 및 라우팅 기능을 통해 개발자는 새 컨테이너 개정판을 사용자 층의 일부에게만 노출한 다음 문제를 해결하면서 시간이 흐름에 따라 대상을 점진적으로 확대할 수 있습니다. 또는 필요한 경우 이전 버전으로 빨리 돌아갈 수 있습니다.

개발자가 코딩과 혁신에 집중하도록 지원. DevOps는 개발자가 자신의 환경을 관리할 수 있도록 힘을 실어 줄 수 있습니다. 그러나 결국 개발자가 원하는 건 이벤트 트리거 또는 컨테이너 확장을 위한 메시지 버스 대기열을 구성하는 것이 아니라 버그 없는 소프트웨어와 혁신적인 새 기능을 구축하는 데 집중하는 것입니다. Knative는 개발자가 가장 잘 하는 일에 더 많은 시간을 쓸 수 있도록 지원합니다.

관련 솔루션
Red Hat OpenShift on IBM Cloud

Red Hat OpenShift on IBM Cloud를 사용하는 OpenShift 개발자는 Kubernetes 클러스터에서 엔터프라이즈 워크로드를 컨테이너화 및 배치할 수 있는 빠르고 안전한 방법을 보유합니다.

Red Hat OpenShift 살펴보기
IBM Cloud Satellite

툴체인, 데이터베이스, AI가 포함된 공통 클라우드 서비스 세트를 사용하여 모든 클라우드 벤더의 온프레미스, 엣지 컴퓨팅, 퍼블릭 클라우드 환경에서 일관되게 앱을 배포 및 실행합니다.

IBM Cloud Satellite 살펴보기
IBM Cloud Code Engine

완전 관리형 서버리스 플랫폼인 IBM Cloud Code Engine을 사용하면 완전 관리형 컨테이너 런타임에서 컨테이너, 애플리케이션 코드 또는 배치 작업을 실행할 수 있습니다.

IBM Cloud Code Engine 살펴보기
리소스 엔터프라이즈의 컨테이너

신규 IBM 연구 보고서에서는 컨테이너와 Kubernetes 채택의 급증하는 모멘텀을 설명합니다.

서버리스란 무엇인가요?

서버리스는 클라우드 응용 애플리케이션 개발 및 실행 모델입니다. 여기에서 개발자는 서버를 관리하거나 유휴 클라우드 인프라 비용을 지불하지 않고 코드를 설계, 실행할 수 있습니다.

하이브리드 클라우드를 위한 유연하고 탄력적이며 안전한 IT

하이브리드 클라우드 전략의 일부인 컨테이너를 활용하여 어디서든 워크로드를 빌드하고 관리할 수 있습니다.

다음 단계

Red Hat OpenShift on IBM Cloud를 통해 OpenShift 개발자는 Kubernetes 클러스터에서 엔터프라이즈 워크로드를 컨테이너화 및 배포하는 빠르고 안전한 방법을 활용할 수 있습니다. 클릭 한 번으로 컨테이너화된 애플리케이션을 위해 가용성이 뛰어난 완전 관리형 Kubernetes 클러스터를 배포하세요.IBM에서 OCP(OpenShift Container Platform)을 관리하므로, 사용자는 중요 업무에 더 많은 시간을 투자할 수 있습니다.

Red Hat OpenShift on IBM Cloud 살펴보기