2장. 검색

2.1. About OpenShift Serverless

OpenShift Serverless에서는 개발자가 OpenShift Container Platform에서 서버리스 이벤트 중심 애플리케이션을 생성하고 배포할 수 있는 Kubernetes 기본 구성 블록을 제공합니다. OpenShift Serverless는 엔터프라이즈급 서버리스 플랫폼을 활성화하여 하이브리드 및 다중 클라우드 환경에 이식성 및 일관성을 제공하는 오픈 소스 Knative 프로젝트를 기반으로 합니다.

참고

OpenShift Serverless는 OpenShift Container Platform과 다른 간격으로 릴리스되기 때문에 OpenShift Serverless 문서는 마이너 버전의 제품 버전에 대한 별도의 문서 세트를 유지 관리하지 않습니다. 현재 문서 세트는 특정 주제 또는 특정 기능에 대해 버전별 제한이 호출되지 않는 한 현재 지원되는 모든 OpenShift Serverless 버전에 적용됩니다.

OpenShift Serverless 라이프 사이클 및 지원되는 플랫폼에 대한 자세한 내용은 플랫폼 라이프 사이클 정책을 참조하십시오.

2.1.1. Knative Serving

Knative Serving은 클라우드 네이티브 애플리케이션 을 생성, 배포 및 관리하려는 개발자를 지원합니다. OpenShift Container Platform 클러스터에서 서버리스 워크로드의 동작을 정의 및 제어하는 Kubernetes CRD(사용자 정의 리소스 정의)로 오브젝트 세트를 제공합니다.

개발자는 이러한 CRD를 사용하여 복잡한 사용 사례를 다룰 때 구성 요소로 사용할 수 있는 CR(사용자 정의 리소스) 인스턴스를 생성합니다. 예를 들면 다음과 같습니다.

  • 신속한 서버리스 컨테이너 배포.
  • Pod 자동 스케일링.

2.1.1.1. Knative Serving 리소스

Service
service.serving.knative.dev CRD를 사용하면 워크로드의 라이프사이클을 자동으로 관리하여 네트워크를 통해 애플리케이션을 배포하고 연결할 수 있습니다. 이 CRD는 사용자 생성 서비스 또는 사용자 정의 리소스가 변경될 때마다 경로, 구성, 새 버전을 생성합니다. Knative의 개발자 상호 작용은 대부분 서비스 수정을 통해 수행됩니다.
버전
revision.serving.knative.dev CRD는 워크로드에 수행된 각 수정의 코드 및 구성에 대한 시점 스냅샷입니다. 버전은 변경할 수 없는 오브젝트이며 필요한 기간에 유지할 수 있습니다.
Route
route.serving.knative.dev CRD는 네트워크 끝점을 하나 이상의 버전에 매핑합니다. 부분 트래픽 및 이름이 지정된 경로를 포함하여 다양한 방법으로 트래픽을 관리할 수 있습니다.
설정
configuration.serving.knative.dev CRD는 배포에 필요한 상태를 유지 관리합니다. 코드와 구성을 명확하게 분리합니다. 구성을 수정하면 새 버전이 생성됩니다.

2.1.2. Knative Eventing

OpenShift Container Platform에서 Knative Eventing을 사용하면 개발자가 서버리스 애플리케이션에 이벤트 중심 아키텍처를 사용할 수 있습니다. 이벤트 중심 아키텍처는 이벤트 생산자와 이벤트 소비자 간의 분리된 관계 개념을 기반으로 합니다.

이벤트 생산자는 이벤트를 생성하고 이벤트 싱크 또는 소비자는 이벤트를 수신합니다. Knative Eventing은 표준 HTTP POST 요청을 사용하여 이벤트 프로듀서와 싱크 사이에서 이벤트를 전송하고 수신합니다. 이러한 이벤트는 이벤트를 모든 프로그래밍 언어로 생성, 구문 분석, 전송, 수신할 수 있도록 CloudEvents 사양을 준수합니다.

Knative Eventing에서는 다음 유스 케이스를 지원합니다.

소비자를 생성하지 않고 이벤트 게시
이벤트를 HTTP POST에 브로커로 보내고 바인딩을 사용하여 이벤트를 생성하는 애플리케이션에서 대상 구성을 분리할 수 있습니다.
게시자를 생성하지 않고 이벤트 사용
트리거를 사용하면 이벤트 특성을 기반으로 브로커의 이벤트를 사용할 수 있습니다. 애플리케이션은 이벤트를 HTTP POST로 수신합니다.

Knative Eventing에서는 다양한 싱크 유형으로 전달할 수 있도록 다음과 같이 여러 Kubernetes 리소스에서 구현할 수 있는 일반 인터페이스를 정의합니다.

주소 지정 가능 리소스
HTTP를 통해 전달되는 이벤트를 이벤트의 status.address.url 필드에 정의된 주소로 수신 및 승인할 수 있습니다. Kubernetes Service 리소스도 주소 지정 가능 인터페이스의 조건을 충족합니다.
호출 가능한 리소스
HTTP를 통해 전달되는 이벤트를 수신하고 변환하여 HTTP 응답 페이로드에서 0 또는 1개의 새 이벤트를 반환합니다. 반환된 이벤트는 외부 이벤트 소스의 이벤트를 처리하는 것과 동일한 방식으로 추가로 처리할 수 있습니다.

다음을 사용하여 이벤트 소스의 이벤트를 여러 이벤트에 전달할 수 있습니다.

2.1.3. 지원되는 구성

OpenShift Serverless에 지원되는 일련의 기능, 구성, 통합과 현재 버전 및 이전 버전은 지원되는 구성 페이지에서 확인할 수 있습니다.

2.1.4. 확장 및 성능

OpenShift Serverless는 3개의 기본 노드와 3개의 작업자 노드 구성으로 테스트되었으며 각각 64개의 CPU, 457GB의 메모리 및 394GB의 스토리지가 있습니다.

이 구성을 사용하여 생성할 수 있는 최대 Knative 서비스 수는 3000개입니다. 이는 Knative 1개 서비스에서 3개의 Kubernetes 서비스를 생성하기 때문에 OpenShift Container Platform Kubernetes 서비스 제한 10,000 에 해당합니다.

응답 시간이 최대 8초이고, 간단한 Quarkus 애플리케이션의 경우 99.9번째 백분위 시간이 4.5초인 평균 응답 시간이 평균 3.4초였습니다. 이러한 시간은 애플리케이션 및 애플리케이션 런타임에 따라 다를 수 있습니다.

2.1.5. 추가 리소스