Knative 개요
1️⃣ Knative란? (컨테이너 기반 서버리스 플랫폼 개념)
Knative(네이티브)는 컨테이너 기반 서버리스(Serverless) 애플리케이션을 위한 Kubernetes 기반 오픈소스 플랫폼입니다.
기본적으로 애플리케이션을 배포하고 확장하는 복잡한 작업을 자동화하여 개발자가 비즈니스 로직에 집중할 수 있도록 도와줍니다.
Knative를 사용하면 다음과 같은 서버리스 기능을 Kubernetes에서 활용할 수 있습니다.
- 자동 확장(Auto-scaling): 트래픽이 없을 때 0까지 축소되고, 요청이 들어오면 자동 확장
- 이벤트 기반 아키텍처(Event-driven Architecture): 다양한 이벤트 소스로부터 트리거를 받아 실행
- 서비스 배포 단순화: 지속적인 배포(Continuous Deployment)를 지원하고, 새로운 버전을 롤아웃할 수 있는 기능 제공
2️⃣ Kubernetes와 Knative의 관계
Knative는 Kubernetes 위에서 동작하는 서버리스 컴퓨팅 프레임워크입니다.
즉, Knative는 Kubernetes의 강력한 컨테이너 관리 기능을 기반으로 서버리스 환경을 구축합니다.
1. Kubernetes vs Knative
기능 | Kubernetes | Knative |
---|---|---|
배포 방식 | 수동으로 배포 (YAML 정의 필요) | 자동화된 배포 및 관리 |
확장(Scaling) | HPA(Horizontal Pod Autoscaler) 사용 | 요청이 없을 때 Pod 수 0까지 감소 가능 |
트래픽 관리 | 기본 Ingress 사용 | 내부적으로 Istio/Kourier 활용 |
이벤트 기반 처리 | 기본적으로 미제공 | CloudEvents 기반 이벤트 관리 |
Kubernetes는 컨테이너 오케스트레이션을 담당하는 반면, Knative는 서버리스 환경을 구축하여 트래픽이 없을 때 리소스를 자동으로 축소하고, 이벤트 기반 실행을 지원하는 차이점이 있습니다.
2. Knative 아키텍처와 Kubernetes
Knative는 Kubernetes 위에서 동작하며, 핵심적으로 Serving(서빙), Eventing(이벤트), Functions(함수) 같은 기능을 제공합니다.
즉, Kubernetes의 강력한 인프라 관리 기능을 활용하면서 서버리스 컴퓨팅을 가능하게 합니다.
3️⃣ Knative의 주요 구성 요소와 기능
Knative는 크게 Serving, Eventing, Functions 세 가지 주요 컴포넌트로 구성됩니다.
1. Knative Serving (자동 확장 및 배포)
Knative Serving은 컨테이너 애플리케이션을 서버리스 방식으로 실행할 수 있도록 지원합니다.
주요 기능:
- 자동 확장(Autoscaling, Scale-to-zero)
- 버전 관리(Rollout, Traffic Splitting)
- 고급 트래픽 관리 (A/B 테스트, Canary 배포)
2. Knative Eventing (이벤트 기반 처리)
Knative Eventing은 이벤트 기반 아키텍처를 구축할 수 있도록 도와줍니다.
주요 기능:
- CloudEvents 표준을 지원
- 다양한 이벤트 소스와 연동 가능 (Kafka, Google Pub/Sub, AWS SQS 등)
- 동적 Event Subscription을 통해 메시지 라우팅 가능
3. Knative Functions (KFn) (FaaS 기반)
Knative Functions(KFn)은 Knative를 활용한 Functions-as-a-Service(FaaS) 방식의 애플리케이션 개발을 지원합니다.
- 단순한 함수 기반 코드 실행 가능
- 개발자가 코드에 집중할 수 있도록 환경 제공
- 서버리스 애플리케이션을 더 쉽게 배포 가능
4️⃣ Knative의 장점 및 사용 사례 (서버리스, 이벤트 기반 아키텍처)
1. Knative의 주요 장점
✅ 완전한 오픈소스: 특정 클라우드에 종속되지 않음
✅ 자동 확장: 요청이 없을 때 0까지 축소 가능
✅ 트래픽 관리: 여러 버전의 애플리케이션을 동시에 운영 가능
✅ 이벤트 기반 아키텍처 지원: 메시지 브로커와 쉽게 연동 가능
✅ 클라우드 네이티브 환경과 완벽한 통합: Kubernetes 및 Istio와 함께 사용 가능
2. Knative 사용 사례
💡 서버리스 웹 애플리케이션
- 요청이 있을 때만 애플리케이션이 실행되도록 구성하여 비용 절감
💡 이벤트 기반 데이터 처리
- 클라우드 이벤트(Pub/Sub, Kafka) 기반으로 애플리케이션을 자동 실행
💡 Microservices 아키텍처와 연동
- 기존 Kubernetes 애플리케이션과 결합하여 확장성 있는 마이크로서비스 구축
💡 CI/CD 파이프라인 자동화
- Knative를 활용한 지속적 배포(Continuous Deployment) 가능
5️⃣ Knative vs 다른 서버리스 플랫폼 (AWS Lambda, Google Cloud Functions 등)
1. 서버리스 플랫폼 비교
기능 | Knative | AWS Lambda | Google Cloud Functions | Azure Functions |
---|---|---|---|---|
운영 환경 | Kubernetes 기반 | AWS 관리형 | Google Cloud 관리형 | Azure 관리형 |
벤더 종속성 | 없음 (멀티 클라우드 가능) | AWS 종속 | GCP 종속 | Azure 종속 |
언어 지원 | 모든 컨테이너 지원 | Node.js, Python, Go 등 | Node.js, Python, Go 등 | C#, Python, Java 등 |
확장 방식 | Scale-to-zero 지원 | 자동 확장 | 자동 확장 | 자동 확장 |
이벤트 기반 처리 | CloudEvents 기반 | AWS 이벤트 소스 연동 | Google Pub/Sub 기반 | Azure Event Grid 기반 |
2. Knative vs AWS Lambda
AWS Lambda는 AWS에 종속되지만, Knative는 Kubernetes 위에서 동작하므로 멀티 클라우드 및 온프레미스에서 자유롭게 사용 가능합니다.
3. Knative의 차별점
- 특정 클라우드 플랫폼에 종속되지 않음
- 모든 프로그래밍 언어 및 컨테이너 이미지 지원
- 완전한 Kubernetes 기반이므로 기존 마이크로서비스와 통합이 용이