Cloud computing requires the infrastructure to be in place to support the needs of continuous integration and continuous delivery. To be successful, developers need some fundamental capabilities including achieving resil- ience, being able to discover reusable services and providing the organization with the ability to scale on de- mand. Achieving resilience It’s critical for cloud applications to adhere to a service level guarantee regardless of where their services run. Historically, cloud services relied on virtual machines tied to a specific server environment. But as more cloud services become customer facing, resiliency is impera- tive. However, with virtual machines (VMs) you cannot assume the VMs or the network services you deploy will be permanent. Too often these VMs will disappear be- cause of a systems error. The consequences can be signif- icant since without any warning your applications may not gracefully shutdown. While it may be possible to re- start the VM, the problem may not be resolved. This means you have to architect for failure and assume that any services you interact with could disappear at any given time. Discovering reusable services Since cloud native applications are designed to take ad- vantage of containers and microservices, it is imperative to be able to locate services that have been vetted so that they can be used in other applications. Therefore, any services your applications interact with need to be found, usually from a runtime registry. 32
