This is the multi-page printable view of this section. Click here to print.
Announcing OpenFunction 0.6.0: FaaS observability, HTTP trigger, and more
OpenFunction is a cloud-native open source FaaS platform aiming to let you focus on your business logic. The OpenFunction community has been hard at work over the past several months preparing for the OpenFunction 0.6.0 release. Today, we proudly announce OpenFunction 0.6.0 is officially available. Thanks to the community for helping drive the new features, enhancements, and bug fixes.
OpenFunction 0.6.0 brings notable features including function plugin, distributed tracing for functions, control autoscaling behavior, HTTP trigger to async function, etc. Meanwhile, asynchronous runtime definition has also been refactored. The core API has been upgraded from v1alpha1 to v1beta1.
Distributed tracing for serverless functions
When trying to understand and diagnose the distributed systems and microservices, one of the most effective methods is the stack trace. Distributed tracing provides a holistic view of the way that messages flow and distributed transaction monitoring for Serverless functions. The OpenFunction team collaborates with the Apache SkyWalking community to add FaaS observability which allows you to visualize function dependencies and track function invocations on SkyWalking UI.
Going forward, OpenFunction will add more capabilities for serverless functions in logging, metrics, and tracing. You will be able to use Apache SkyWalking and OpenFunction to set up a full-stack APM for your serverless workloads out-of-the-box. Moreover, OpenFunction will support OpenTelemetry that allows you to leverage Jaeger or Zipkin as an alternative.
Support Dapr pub/sub and bindings
Dapr bindings allows you to trigger your applications or services with events coming in from external systems, or interface with external systems. OpenFunction 0.6.0 adds Dapr output bindings to its synchronous functions which enables HTTP triggers for asynchronous functions. For example, synchronous functions backed by the Knative runtime can now interact with middlewares defined by Dapr output binding or pub/sub, and an asynchronous function will be triggered by the events sent from the synchronous function. See this guide for the quickstart sample.
Asynchronous function introduces Dapr pub/sub to provide a platform-agnostic API to send and receive messages. A typical use case is that you can leverage synchronous functions to receive an event in plain JSON or Cloud Events format, and then send the received event to a Dapr output binding or pub/sub component, most likely a message queue (e.g. Kafka, NATS Streaming, GCP PubSub). Finally, the asynchronous function could be triggered from the message queue. See this guide for the quickstart sample.
Control autoscaling behavior for functions
OpenFunction 0.6.0 integrates KEDA ScaledObject spec which is used to define how KEDA should scale your application and what the triggers are. You just need to define the lower and upper bound in the function CRD without changing your code.
Meanwhile, the OpenFunction community is also developing the ability to control the concurrency and the number of simultaneous requests, which inherits the definition from Dapr and Knative. A typical use case in distributed computing is to only allow for a given number of requests to execute concurrently. You will be able to control how many requests and events will invoke your application simultaneously. This feature will be totally supported in the next release, stay tune! If you are interested in this feature, check out the active discussion for detailed context.
Learn by doing
Benjamin Huo, the founder of OpenFunction, has presented two typical use cases of OpenFunction 0.6.0 in Dapr community meeting:
- HTTP trigger for asynchronous functions with OpenFunction and Kafka
- Elastic Kubernetes log alerts with OpenFunction and Kafka
Watch this video and follow with the hands-on guides to practice.
@wanjunlei wanjunlei released this on 2021.10.19
- Update dependent Dapr version to v1.3.1. #123
- Update dependent Tekton pipeline version to 0.28.1. #131
- Update dependent Knative serving version to 0.26.0. #131
- Update dependent Shipwright build version to 0.6.0. #131
- Update go version to 1.16. #131
- Now Function supports environment variables with commas. #131
- Fix bug rerun serving failed. #132
- Use installation script to deploy OpenFunction and deprecate the installation guide. #122
- Add OpenFunction Website. #1
- Add OpenFunction CLI. #11
- Upgrade the functions-framework-go from v0.0.0-20210628081257-4137e46a99a6 to v0.0.0-20210922063920-81a7b2951b8a. #17
- Add Ruby builder. #11
- Supports multiple input sources && Replace int return with ctx.Return. #13
- Support OpenFunction type function. #7
- Add handler functions. #7
Thanks to these contributors who contributed to v0.4.0!
@wanjunlei wanjunlei released this on 2021.8.27
- Delete the old serving CR only after the new serving CR is running. #107
@tpiperatgod tpiperatgod released this on 2021.8.19
- Add OpenFunction Events: OpenFunction’s own event management framework. #78 #83 #89 #90 #99 #100 @tpiperatgod
- Support using Shipwright as Builder backend to build functions or apps. #82 #95 @wanjunlei
- Build and serving can be launched separately now. #82 #95 @wanjunlei
- Support running an application (container image) as a serverless workload directly. #82 #95 @wanjunlei
@benjaminhuo benjaminhuo released this on 2021.5.17
- Support OpenFunctionAsync serving runtime（backed by Dapr + KEDA + Deployment/Job)
- Functions framework supports async function now
- Customized go function framework & builders for both Knative and OpenFunctionAsync serving runtime
@benjaminhuo benjaminhuo released this on 2021.5.17
- Add Function, Builder, and Serving CRDs and corresponding controllers
- Support using existing function framework & buildpacks such as Google Cloud Functions to build functions
- Support Tekton and Cloud Native Buildpacks as Builder backend
- Support Knative as Serving backend
- Optimize and localize existing function framework & buildpacks