Speaker details

Mary Grygleski

IBM

Mary is a Senior Developer Advocate at IBM with the Liberty/Websphere team, focusing on Liberty, Microprofile, Jakarta EE, Java, Open Source, Cloud, and Distributed Systems. She transitioned from Unix/C to Java around 2000 and has never looked back since then. She considers herself as a polyglot and loves to continue learning new and better ways to solve real-life problems. She is an active tech community builder outside of her day job, and currently the president of the Chicago Java Users Group (CJUG), as well as a co-organizer for several IBM-sponsored meetup groups in the Greater Chicago area.

Exploring Stateful Microservices in the Cloud Native World

How does one choose to architect a system that has a Microservice / REST API endpoints? There are many solutions out there. Some are better than others. Should state be held in a server side component, or externally? Generally we are told this is not a good practice for a Cloud Native system, when the 12-factor guidelines seem to be all about stateless containers, but is it? It’s unclear and this confusion may lead to poor technology stack choices that are impossible or extremely hard to change later on as your system evolves in terms of demand and performance.


We will examine and demonstrate the fundamentals of a Cloud Native system with Stateful Microservices that’s built with Open Liberty and MicroProfile in Kubernetes:


  • Microservices/REST API – Options to use when running your apps in the JVM. Use of the Saga Programming Pattern, and the Long-Running Action feature of MicroProfile
  • Concurrency – how to take advantage of multi-core CPUs and clustered distributed systems
  • Stateful vs Stateless - while stateless apps are easier to implement, the bulk of the apps in production are stateful which involve a higher level of complexity and risk, especially when data would need to travel across multiple machines and network boundaries
  • Deployment – how about containerization and orchestration using Kubernetes?

Kubernetes
Stateful Applications
Transactions
Cloud Native Java