This week on The Podlets Cloud Native Podcast we have Josh, Carlisia, Duffie, and Nick on the show, and are also happy to be joined by a newcomer, Brian Liles, who is a senior staff engineer at VMWare! The purpose of today’s show is coming to a deeper understanding of the meaning of ‘stateful’ versus ‘stateless’ apps, and how they relate to the cloud native environment. We cover some definitions of ‘state’ initially and then move to consider how ideas of data persistence and co-ordination across apps complicate or elucidate understandings of ‘stateful’ and ‘stateless’. We then think about the challenging practice of running databases within Kubernetes clusters, which effectively results in an ephemeral system becoming stateful. You’ll then hear some clarifications of the meaning of operators and controllers, the role they play in mediating and regulating states, and also how important they are in a rapidly evolving but skills-scarce environment. Another important theme in this conversation is the CAP theorem or the impossibility of consistency, availability and partition tolerance all at once, but the way different databases allow for different combinations of two out of the three. We then move on to chat about the fundamental connection between workloads and state and then end off with a quick consideration about how ideas of stateful and stateless play out in the context of networks. Today’s show is a real deep dive offering perspectives from some the most knowledgeable in the cloud native space so make sure to tune in!
Follow us: https://twitter.com/thepodlets
Key Points From This Episode:
• What ‘stateful’ means in comparison to ‘stateless’.
• Understanding ‘state’ as a term referring to data which must persist.
• Examples of stateful apps such as databases or apps that revolve around databases.
• The idea that ‘persistence’ is debatable, which then problematizes the definition of ‘state’.
• Considerations of the push for cloud native to run stateless apps.
• How inter-app coordination relates to definitions of stateful and stateless applications.
• Considering stateful data as data outside of a stateless cloud native environment.
• Why it is challenging to run databases in Kubernetes clusters.
• The role of operators in running stateful databases in clusters.
• Understanding CRDs and controllers, and how they relate to operators.
• Controllers mediate between actual and desired states.
• Operators are codified system administrators.
• The importance of operators as app number grows in a skill-scarce environment.
• Mechanisms around stateful apps are important because they ensure data integrity.
• The CAP theorem: the impossibility of consistency, availability, and tolerance.
• Why different databases allow for different iterations of the CAP theorem.
• When partition tolerance can and can’t get sacrificed.
• Recommendations on when to run stateful or stateless apps through Kubernetes.
• The importance of considering models when thinking about how to run a stateful app.
• Varying definitions of workloads.
• Pods can run multiple workloads
• Workloads create states, so you can’t have one without the other.
• The term ‘workloads’ can refer to multiple processes running at once.
• Why the ephemerality of Kubernetes systems makes it hard to run stateful applications.
• Ideas of stateful and stateless concerning networks.
• The shift from server to browser in hosting stateful sessions.