Continuous delivery is the process of automatically incorporating code changes into new software builds. Where continuous integration ensures that all code is collected into the same location, continuous delivery verifies that the code will compile into a working product successfully. This does not mean that code is free of bugs, but it does prevent developers from committing code that will break the entire product.
Micro-services are the idea that a big product is a combination of numerous small services, independent of one another. Instead of working on a single large feature that could fail in a number of different places, DevOps attempts to divide the product into many smaller features that work on their own. If a component fails, it does not cause catastrophic failure of the entire product. Developers can then pinpoint and address the issue more quickly.
Infrastructure as code is when teams use programmatic methods for maintaining their code base, rather than manual methods. Programmatic methods are more consistent, and more resistant to errors when designed correctly. A human might forget to deploy a test build each afternoon at a certain time. A server that is designed to publish builds will not.
Monitoring and logging is proof that knowledge is power, even in software development. Teams can improve the product by analysing metrics on customer use. Both development and operations can study how customers are using a product, and where they experience sub-optimal performance, in order to make the most effective improvements.
Finally, communication and collaboration allow development and operations to work together more closely. If groups withhold information from each other, the product suffers. By communicating needs and collaborating on the product, each group can leverage abilities and expertise to improve methods and the product itself.
How are Agile and DevOps related?
Agile is specific to the planning and development portion of a software project. Creating and testing a product are where Agile principles apply. DevOps is an extension or generalisation of Agile, and applies to the entire software development process. With DevOps, teams optimise the creation of a product, as well as the process of getting that product into the hands of customers. This includes installing, as well as configuring the product work correctly on a given system.
Can Teams Practice Both?
Teams can absolutely practice both Agile software development and DevOps at the same time. Since both concepts seek to optimise and streamline the development process, they can often work together to greater effect. The principles of each often address the same goals from multiple angles. With transparency and collaboration, teams can utilise both to address bottlenecks and inefficiencies in their processes. By focusing on the general rather than the specific, teams can eliminate many problems at the same time.
Both Agile and DevOps are light weight and lean. They can complement each other in a way that cuts unnecessary elements from the development process and improve the efficiency of an organisation.