applications to be developed as services linked together through lightweight interfaces. Each service can be de- veloped and deployed by small independent teams. This flexibility provides greater benefits in terms of perfor- mance, cost and scalability. This approach of building services, packaging them together and managing them consistently and predictably, demands a new approach to software development and deployment. Lean, agile development New approaches to software development focus on what is commonly referred to as continuous integration and continuous delivery (CI/CD). Continuous integration fo- cuses on continuously integrating and validating changes, to code and environments to ensure errors are identified and fixed as they are introduced. In contrast, continuous delivery automates the software delivery pro- cess (non-functional testing, functional testing, security, deployment, etc.), ensuring that with each change, the application is release ready. CI/CD allows developers to quickly identify defects as they are introduced so they can be corrected as soon as possible. When application defects are identified close to when they are introduced, it is much faster and cheaper to correct versus having to go back and reexamine the en- tire application. CD is in effect an extension of CI that focuses on the process of delivering changes after they are “committed” as part of the CI process. In other words, software code that passes automated tests can be consid- ered ready for production. Continuous delivery is often used interchangeably with continuous deployment, in which all changes are automatically released to produc- tion. 16
