Knative란?

Knative란?

Knative는 서버리스 워크로드가 Kubernetes 클러스터에서 실행되도록 합니다. Kubernetes를 사용하여 컨테이너를 더 빠르고 쉽게 구축하고 오케스트레이션할 수 있습니다.

Knative(발음: 케이-네이-티브)는 Kubernetes 컨테이너 오케스트레이션 플랫폼의 확장판입니다. 이는 Kubernetes 내에서 컨테이너화된 애플리케이션을 구축, 배포 및 관리하는 작업을 더 쉽고 Kubernetes에 자연스럽게 통합된 경험으로 만들어주는 툴과 유틸리티를 제공합니다(따라서 이름도 "Kubernetes(K)" + "native").

Kubernetes처럼 Knative도 오픈 소스 소프트웨어입니다. Google이 IBM®, Pivotal, Red Hat®, SAP 및 약 50여 개 기업과 협력하여 처음 개발했습니다. 현재 Knative 오픈 소스 프로젝트는 Cloud Native Computing Foundation(CNCF)에서 관리합니다.

고속도로 조감도

클라우드에 집중 


AI 시대의 멀티클라우드 설정을 최적화하는 방법에 대한 전문가의 안내가 담긴 주간 Think 뉴스레터를 받아보세요.

Kubernetes가 Knative를 필요로 하는 이유

Kubernetes는 소스 코드와 모든 운영 체제(OS) 라이브러리 및 종속 항목을 결합하여 어떤 환경에서도 코드를 실행할 수 있도록 만든 가벼운 실행 가능한 애플리케이션 구성 요소인 컨테이너의 배포, 관리 및 확장을 자동화하고 스케줄링합니다.

컨테이너는 가상 머신(VM)이 애플리케이션이 단일 물리적 컴퓨터의 리소스를 공유하도록 하는 것과 유사하게, 단일 OS 인스턴스의 리소스를 애플리케이션 구성 요소가 공유할 수 있도록 합니다. 컨테이너는 VM보다 더 작고 리소스 효율이 높으며 Agile 및 DevOps 개발 방법론의 점진적 릴리스 주기에 더 적합하여, 현대 클라우드 네이티브 애플리케이션의 사실상 표준 컴퓨팅 단위로 자리잡았습니다. 컨테이너를 사용하는 기업들은 애플리케이션 품질 향상, 혁신 수준 증가 등 다양한 이점을 보고하고 있습니다.

클라우드 네이티브 개발이 보편화되고 조직 내에서 컨테이너가 확산됨에 따라, Kubernetes의 스케줄링, 로드 밸런싱, 상태 모니터링 등의 컨테이너 오케스트레이션 기능은 이러한 확산을 보다 쉽게 관리할 수 있도록 돕습니다. 그러나 Kubernetes는 복잡한 툴로서, 개발자가 애플리케이션 소스 코드를 리포지토리에서 가져오고, 해당 코드를 기반으로 컨테이너 이미지를 빌드 및 프로비저닝하며, Kubernetes 외부에서 다양한 툴을 사용해 네트워크 연결을 구성하는 등 반복적인 작업을 수행하거나 템플릿화해야 합니다. Kubernetes에서 관리하는 컨테이너를 자동화된 지속적 통합/지속적 배포(CI/CD) 파이프라인에 통합하려면 특수한 툴과 커스텀 코딩이 필요합니다.

Knative는 Kubernetes 내에서 이러한 작업을 자동화하는 툴로 이러한 복잡성을 제거합니다. 개발자는 단일 YAML 매니페스트 파일에서 컨테이너의 내용 및 구성을 정의할 수 있으며, 나머지는 Knative가 처리하여 컨테이너를 생성하고, 라우트 설정, 인그레스 구성, 로드 밸런싱 등의 네트워크 프로그래밍을 수행합니다. Knative는 개발자가 YAML 파일을 편집하지 않고도 Knative 기능에 액세스할 수 있는 명령줄 인터페이스인 Knative CLI도 제공합니다.

AI 아카데미

하이브리드 클라우드로 AI 지원 실현하기

IBM 사고 리더들이 이끄는 이 커리큘럼은 비즈니스 리더들에게 성장을 촉진하는 AI 투자의 우선순위를 정하는 데 필요한 지식을 제공합니다.

컨테이너를 서버리스로 만들기

서버리스 컴퓨팅은 애플리케이션 개발을 더 쉽고 비용 효율적으로 만들어주는 클라우드 네이티브 실행 모델입니다. 서버리스 컴퓨팅 모델은

  • 온디맨드 방식으로 컴퓨팅 리소스를 프로비저닝하고, 요청에 따라 투명하게 확장하며, 요청이 더 이상 이루어지지 않을 때는 0으로 축소됩니다.

  • 이는 확장, 스케줄링, 패치, 프로비저닝 등 모든 인프라 관리 작업을 클라우드 제공업체에 맡겨 개발자가 개발과 혁신에 더 많은 시간과 노력을 집중할 수 있도록 합니다.

  • 또한 클라우드 고객은 사용한 리소스에 대해서만 비용을 지불하며, 유휴 용량에 대한 비용은 발생하지 않습니다.

Kubernetes 단독으로는 특정 클라우드 제공업체의 서버리스 플랫폼과 통합하는 특수 소프트웨어 없이는 서버리스 애플리케이션을 실행할 수 없습니다. Knative는 서버리스 함수 또는 기타 애플리케이션 코드(예: 마이크로서비스) 기반 컨테이너라도 코드와 네트워크 라우팅, 이벤트 트리거, 오토스케일링 처리를 추상화하여 모든 Kubernetes 클러스터에서 서버리스 워크로드로 실행할 수 있도록 합니다.

Knative 작동 방식: Knative 구성 요소

Knative는 Kubernetes 위에 구축되며 Build, Serving, Eventing이라는 세 가지 주요 구성 요소를 추가합니다.

Build

Knative Build 구성 요소는 소스 코드를 컨테이너로 자동 변환합니다. 이 프로세스는 일반적으로 다음과 같은 여러 단계를 포함합니다.

  • GitHub 등의 코드 리포지토리에서 소스 코드를 가져오기
  • 코드 실행에 필요한 환경 변수 및 소프트웨어 라이브러리 등의 종속 항목 설치
  • 컨테이너 이미지 빌드
  • Kubernetes 및 다른 개발자가 찾을 수 있도록 컨테이너 이미지를 레지스트리에 등록

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

Serving

Serving 구성 요소는 컨테이너를 확장 가능한 Knative 서비스로 배포하고 실행합니다. Serving은 다음과 같은 주요 기능을 제공합니다.

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

  • 지능형 서비스 라우팅은 개발자가 트래픽을 서비스의 다른 버전으로 라우팅할 수 있도록 합니다. 새로운 서비스 버전을 만들었지만 모든 사용자에게 배포하기 전에 일부 사용자에게 먼저 배포하고자 한다고 가정해 보겠습니다. 지능형 서비스 라우팅을 통해 일부 사용자 요청을 새 서비스로 라우팅하고 나머지는 이전 버전으로 라우팅할 수 있습니다. 새 서비스에 대한 확신이 높아질수록 점진적으로 더 많은 트래픽을 새 서비스로 전환할 수 있습니다.

  • 자동 확장. Knative는 서비스를 수천 개 인스턴스로 확장할 수 있으며, 0까지 축소(즉, 컨테이너 인스턴스가 전혀 없는 상태로)할 수도 있어 서버리스 애플리케이션 지원에 필수적입니다.

Knative Serving은 Kubernetes 에코시스템 내 또 다른 애플리케이션인 Istio에서 지능형 서비스 라우팅 기능을 차용합니다. Istio는 Kubernetes용 오픈 소스 서비스 메시로, 서비스 요청에 대한 인증, 서비스 간 보안 통신을 위한 트래픽 자동 암호화, 마이크로서비스 및 서버리스 기능 운영에 대한 상세 메트릭, 인프라 최적화를 위한 다양한 툴을 제공합니다.

Eventing

Knative의 Eventing 구성 요소는 다양한 이벤트가 컨테이너 기반 서비스 및 기능을 트리거할 수 있도록 합니다. Knative는 해당 이벤트를 적절한 컨테이너로 큐잉하고 전달하므로 기능을 위한 스크립트 작성이나 미들웨어 구현이 필요하지 않습니다.Knative는 개발자가 선택할 수 있는 이벤트 큐인 채널과 이벤트를 컨테이너에 전달하는 메시징 플랫폼인 버스도 처리합니다. 또한 이벤트를 컨테이너가 수행할 작업과 연결하는 피드 설정할 수 있도록 지원합니다

Knative Event 소스는 개발자가 타사 이벤트 프로듀서와 연결을 쉽게 생성할 수 있도록 합니다. Knative Eventing은 이벤트 프로듀서와의 연결을 자동으로 생성하고, 생성된 이벤트를 라우팅합니다. 프로그래밍 방식으로 이를 구현할 필요가 없으며, Knative가 모든 작업을 처리합니다.

Knative 사용 사례

요약하면, Knative는 컨테이너화된 앱 개발을 단순화하거나 컨테이너 사용을 한 단계 끌어올리고자 하는 Kubernetes 사용자에게 다양한 활용 사례를 지원합니다.

Kubernetes 간소화. 반복적인 빌드 및 구성 작업을 제거함으로써 Knative는 Kubernetes에서 작업하는 개발자의 생산성을 높입니다. 점점 증가하는 Kubernetes 클러스터 수를 관리하는 데 어려움을 겪는 개발팀이라면 Knative 활용에 적합합니다.

서버리스 전환 가속화. 서버리스 환경은 수동으로 구축하고 관리하기가 어려울 수 있습니다. Knative는 조직이 서버리스 워크로드를 신속하게 구축할 수 있도록 지원합니다. 개발자의 입장에서는 단순히 컨테이너를 빌드하는 것뿐이며, 실제로 이를 서버리스 함수로 실행하는 것은 Knative입니다.

애자일 및 DevOps 라이프사이클 지원. 개발자가 새로운 컨테이너 및 컨테이너 버전을 더 빠르게 생성할 수 있도록 지원함으로써, Knative는 Agile 또는 DevOps 워크플로우의 일환으로 소규모, 빠른 반복 단계로 컨테이너화된 애플리케이션을 배포하기 쉽게 만듭니다. Knative 서비스는 특수 소프트웨어나 커스텀 프로그래밍 없이도 자동화된 CI/CD 파이프라인에 쉽게 통합됩니다.

신규 기능 출시 지원. 고객에게 새로운 릴리스를 출시할 때 비즈니스 프로세스에 영향을 줄 수 있는 소프트웨어 문제가 발생할 수 있습니다. Knative의 구성 및 라우팅 기능을 통해 개발자는 새로운 컨테이너 리비전을 일부 사용자에게만 노출할 수 있습니다. 그런 다음 문제를 해결하거나 필요 시 이전 버전으로 빠르게 롤백하면서 점진적으로 대상 사용자 범위를 확대할 수 있습니다.

개발자가 코딩과 혁신에 집중하도록 지원. DevOps는 개발자가 자신의 환경을 직접 관리할 수 있도록 지원합니다. 그러나 궁극적으로 개발자는 이벤트 트리거링용 메시지 버스 큐 구성이나 컨테이너 확장성 관리를 하기보다는 버그 없는 소프트웨어와 혁신적인 신규 기능 개발에 집중하고자 합니다. Knative는 개발자가 자신이 가장 잘하는 일에 더 많은 시간을 쏟을 수 있도록 지원합니다.

관련 솔루션
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud는 풀 매니지드 OpenShift 컨테이너 플랫폼(OCP)입니다.

Red Hat OpenShift 살펴보기
컨테이너 솔루션

컨테이너 솔루션은 보안, 오픈 소스 혁신, 신속한 배포를 통해 컨테이너화된 워크로드를 실행하고 확장합니다.

컨테이너 살펴보기
클라우드 컨설팅 서비스 

IBM Cloud 컨설팅 서비스를 통해 새로운 역량을 개발하고 비즈니스 민첩성을 향상하세요. 하이브리드 클라우드 전략 및 전문가 파트너십을 통해 솔루션을 공동으로 개발하고, 디지털 혁신을 가속화하고, 성능을 최적화하는 방법을 알아보세요.

클라우드 서비스
다음 단계 안내

IBM의 컨테이너 솔루션으로 인프라를 현대화하세요. IBM의 포괄적인 컨테이너 플랫폼을 사용하여 유연성, 보안 및 효율성을 갖춘 환경 전반에서 컨테이너화된 워크로드를 실행, 확장 및 관리할 수 있습니다.

컨테이너 솔루션 살펴보기 무료 IBM Cloud 계정 만들기