You should expect to see this journey towards greater abstraction from the operating system  too (as provided by containers). As shown in Figure 2-15, abstraction will continue to the point  where you abstract the visibility of the language and product run times themselves, as in  serverless computing or  function-as-a-service (FaaS) . We dedicate several sections to container technology in 2.7.2, “Cloud-native approach” on  page 36, so for now we describe the cloud-native approach.  Cloud-native  is a collection of common practices for creating agile, scalable, and resilient  applications. Some of the key practices are:  Figure 2-15 The road to containers 2.7.2 Cloud-native approach Chapter 4, “Cloud-native concepts and technology” on page 85 describes these concepts, so  here we describe a common analogy that is used to articulate the behavior of components  that are designed in a cloud-native style.  GLYPH<SM590000> Modular components  GLYPH<SM590000> Stateless components  GLYPH<SM590000> Image-based deployment  GLYPH<SM590000> Lightweight run times  GLYPH<SM590000> Elastic-neutral infrastructure  GLYPH<SM590000> Log-based monitoring GLYPH<SM590000> API-led intra-app communication  GLYPH<SM590000> Event-driven architecture  GLYPH<SM590000> Agile methods  GLYPH<SM590000> CI/CD  GLYPH<SM590000> DevOps  36  Accelerating Modernization with Agile Integration & R V W R I H Q W U \ R I I L U V W I X Q F W L R Q , Q F U H D V L Q J D E V W U D F W L R Q I U R P L Q I U D V W U X F W X U H % D U H 0 H W D O 9 L U W X D O P D F K L Q H V Functions & R Q W D L Q H U V