The cloud promised to make computing accessible by making compute resources easily available and by simplifying computing challenges. While the former has definitely been achieved, there is room for improvement to simplify (distributed) computing challenges. Deployment, scalability and state management are not straightforward to achieve using most cloud offerings. Especially modern microservice architectures face many challenges that distract developers from providing business value. Serverless computing models (like Function-as-a-Service) can greatly simplify deployment and scalability challenges, however the problem of state management remains unsolved by most cloud offerings. Incorporating state in Function-as-a-Service can simplify state management problems in the cloud. Two state management challenges can be identified: ensuring processing guarantees across functions and state and transactions across state throughout the application. Flink Statefun is an interesting open-source project that ensures exactly-once processing guarantees throughout the application. It does this by leveraging stream processing technology and coupling messaging between functions with state management. However, the challenge of transactions still remains open. The centralisation of state in Statefun does enable the opportunity to implement a general model for transactions in Statefun. I will describe a possible programming model along with an implementation on top of Flink Statefun that implements transactions.
Martijn is a Master student at the Computer Science faculty of Delft University of Technology. He wrote his thesis on implementing distributed transactions on Serverless Stateful Functions. He recently started as a Software Engineer at Hazelcast working on solutions for distributed computing challenges.