CHAPTER 1 Introduction The Path to Cloud Native In this introductory chapter, we set the scene for the rest of the book by explaining a few of the core Kubernetes concepts used for designing and implementing container- based cloud-native applications. Understanding these new abstractions, and the related principles and patterns from this book, are key to building distributed appli‐ cations made automatable by cloud-native platforms. This chapter is not a prerequisite for understanding the patterns described later. Readers familiar with Kubernetes concepts can skip it and jump straight into the pat‐ tern category of interest. The most popular application architecture on the cloud-native platforms such as Kubernetes is the microservices style. This software development technique tackles software complexity through modularization of business capabilities and trading development complexity for operational complexity. As part of the microservices movement, there is a significant amount of theory and supplemental techniques for creating microservices from scratch or for splitting monoliths into microservices. Most of these practices are based on the  Domain- Driven Design  book by Eric Evans (Addison-Wesley) and the concepts of bounded contexts and aggregates.  Bounded contexts  deal with large models by dividing them into different components, and  aggregates  help further to group bounded contexts into modules with defined transaction boundaries. However, in addition to these business domain considerations, for every distributed system—whether it is based on microservices or not—there are also numerous technical concerns around its organi‐ zation, structure, and runtime behavior. 1