반응형
Create your first CNCF Serverless Workflow Project with Kogito and Knative
선요약
- Kogito: Redhat에서 진행중인 knative serving / eventing 컴포넌트의 조합을 묶어 workflow를 구성해 주는 프로덕트
- 사용자에게서 json / yaml 형태의 선언형으로 input을 받고, 주어진 값을 토대로 quarkus을 활용해서 knative object를 만들어준다
- 추후에는 low code 형태로도 개발해서 소스코드를 입력하지 않고도, 비개발자도 사용할 수 있는 방향을 구상하고 있다고 함.
CNCF Serverless Workflow project - Kogito
- CNCF Sandbox incubating project로, DSL to Describe workflows.
- Based on Standard. -> OPENAPI / GRPC 등등..
- CloudEvent로 workflow를 trigger하거나, workflow 결과로 cloudevent를 생성하거나 전부 가능함.
- 외부와 연동하기 위한 OpenAPI spec. async api / grpc / graphql 등등.
- 여러 형태의 Workflow Pattern을 지원함.
- Control Flow for Execution Order
- Error Handling
- Data Management / Filtering / Transformation 등등.
- jq / jsonpath도 지원함. workflow runtime에서 데이터를 변경해야 한다면 jq / jsonpath를 사용할 수 있음.
fundamental structure, based on the serverless workflow
- functions 항목은 'how to call the functions / how that functions should look like' 를 입력하는 영역. argument / input / authentication 등등.
- events : workflow에서 어떤 이벤트를 produce / consume할지 결정.
- states : workflow의 상태를 정의하는 항목.
json / yaml 활용해서 정의할 수 있다.
- implementation : json / yaml로 정의한 fundamental structure를 실행하는 영역. Redhat에서는 kogito를 개발 중이며, 상용 프로덕트는 아니고 community.
- building blocks : quarkus (java framework for cloud Native Application.)
- infrastructure: k8s + knative 기반 프로덕트. serverless를 위한 프레임워크 개념으로 knative를 도입
Demo
뉴스레터 구독 서비스의 workflow.
- subscription 요청
- email verification
- subscribe
- wait for verification
- Broadcast new Subscription
- https://github.com/kiegroup/kogito-examples/tree/stable/kogito-quarkus-examples/serverless-workflow-newsletter-subscription
- Subscription Flow에서 Service로 통신할 때 - Open API 사용.
- 런타임 때 engine이 functions에 정의된 open api spec을 따라 코드를 생성한다고 함.
- 예시 코드의 flow는 아래와 같음
- Hands-on 진행. first iteration이므로 지금은 개발자를 목표로 하고 있지만, 추후에는 java를 모르는 사람도 쉽게 작업할 수 있도록 하는 것이 목표라고 함
- drag / drop + describe and architecturing functions 등등을 구상하고 있음.
- 현재는 cli로 시연 및 테스트 가능하도록.
quarkus create app -x=kogito-quarkus-serverless-workflow -x=quarkus-container-image-jib -x=quarkus-resteasy-jackson -x=quarkus-smallrye-openapi -x=kubernetes org.acme:my-first-ksw:1.0
- yaml파일을 정의하면 다이어그램도 같이 그려줌
- kogito의 역할: workflow + description 받아서 new rest application을 생성해준다.
Tight Integration with Knative.
- workflow에서 eventing 관련 connection이 필요한 경우 -> knative eventing에 필요한 object를 전부 생성함. source / sink / bindings / triggers / brokers ...
반응형