Stream Processing & Apache Flink - News and Best Practices

Stateful Functions for Stateful Serverless Applications

Written by Tzu-Li (Gordon) Tai | 21 April 2020

Stateful Functions, Flink’s newest API and runtime, attempts to solve the problem of building rapidly scalable and resilient distributed stateful applications. Users implement polyglot event-driven functions that can be operated on FaaS solutions, harnessing the serverless benefits for applications such as elasticity and zero-downtime upgrades, all the while efficiently maintaining consistency and fault-tolerance for application state. To find out how Stateful Functions works and what makes the approach unique to application developers, join my session Stateful Functions: Polyglot Event-Driven Functions for Distributed Stateful Applications at the Virtual Flink Forward, April 23, and immerse yourself in the project’s latest advancement towards the world of Stateful Serverless and event-driven applications!

Stateful Functions: Polyglot Event-Driven Functions for Distributed Stateful Applications

Modern frameworks like Kubernetes and FaaS solutions, such as AWS Lambda and GCP Cloud Functions, have solved most of the challenges of dealing with stateless applications by providing management and operational benefits of serverless deployments. But for stateful applications, we are still struggling with the same issues of data consistency and complex failure semantics since a decade ago. This is rooted in the fact that we are still clinging to the ancient wisdom that state shall be someone else’s problem: just put it in a database! For complex stateful applications, we are still far away from the hassle-free experience of stateless applications.

Stateful Functions 2.0, Apache Flink’s newest API and runtime, attempts to bridge that gap by supporting standalone deployments of functions on serverless solutions, external to the Flink cluster. In this setup, Flink takes the role of an “event-driven database” that handles dynamic and arbitrary messaging between functions and state consistency in a fault tolerant way, while the functions that build up the application logic exist as separate stateless (micro-)services invoked by Flink. These functions simply implement a well-defined request/reply invocation protocol using any language that can set up an HTTP server.

Topics covered

This talk aims at going through the following topics:

  • Developing a Stateful Functions application: We will do a thorough walkthrough on developing a distributed stateful application with Stateful Functions. This will include a look at the different language SDKs and how to deploy these applications.

  • Seeing stateful serverless in action: One of the most exciting features of the 2.0 release is how the new runtime works seamlessly with FaaS platforms to enable stateful serverless deployments. You’ll get to see this in action in this talk with a demo implemented using Stateful Functions and AWS Lambda!

  • Deep dive into the runtime internals: Join in on a technical deep dive into a look under the hood. What are the key design principles of the runtime? How does the runtime support running an infinite number of function instances? How are the strong consistency semantics and fault-tolerance achieved?

Key takeaways

  • Have a good grip on the core building blocks provided for developing Stateful Functions applications, so that you may start developing your own! This also applies to developers without knowledge of Apache Flink.

  • A good understanding of the runtime and how it runs on top of Apache Flink. With knowledge of the internals and design principles, you should have a better picture of the key benefits provided by Stateful Functions.

We look forward to sharing how the Stateful Functions runtime works and showcasing how you can build a Stateful Functions application using the newly-introduced framework to the Apache Flink project. If you want to get familiar with Stateful Functions and learn more about the ins-and-outs of the technology, make sure to register for the Virtual event on April 22-24.