Event-driven and serverless with Spring Cloud and Spring Native

Thomas Vitale
Systematic, Software Engineer

Thomas is a Software Engineer specialized in building modern, cloud-native, robust, and secure enterprise applications.

He develops web and mobile enterprise software solutions at Systematic, Denmark, on the Columna Cura project for supporting home care, social services, and help to citizens. Thomas has led the development of features aimed at ensuring a high degree of security and data privacy in the product and worked on modernizing our platforms and applications for the cloud-native world.

He has an MSc in Computer Engineering specializing in software from the Polytechnic University of Turin (Italy) and loves working with the Spring Framework and Jakarta EE. Thomas writes articles about application security, development, and JVM languages and frameworks on his blog: (https://www.thomasvitale.com). He is a RedHat Certified Enterprise Application Developer.

When he doesn't develop software, he loves reading, traveling, and playing the piano. As a volunteer, Thomas is the Vice President and Project Manager for Avventure Magiche, a no-profit organization based in Turin.

Applications in a microservices architecture can communicate with each other in different ways. Adopting an event-driven paradigm based on asynchronous messaging provides services a way of communicating while reducing runtime coupling. Functions are a natural way of implementing event-driven business logic in terms of suppliers, processors, and consumers. Furthermore, when going serverless, we aim at executables with instant startup and efficiency. Enter Spring.

Spring Cloud Function favors using the functional programming paradigm to implement your business logic and provides useful features to build data pipelines, including type conversion and function composition. Functions can be exposed through different options (like web endpoints or message channels), and adapters are available to run them on platforms like Knative, AWS Lambda, Azure Functions, and GCP Functions. Spring Cloud Stream integrates your functions with messaging systems like RabbitMQ and Kafka without requiring any change to your code. Finally, Spring Native lets you compile your applications as native executable using GraalVM and providing instant startup, instant peak performance, and reduced memory consumption.