DevOps: Agile and Microservices
DevOps within the organization
1 Overview
DevOps is an evolving philosophy and framework that encourages:
- reliable development
- better integration between devs and ops, and
- faster release of new or revised software features or products to customers.
The practice of DevOps encourages:
- smoother, continuous communication and collaboration,
- visibility and iteration,
- and transparency between application development teams (Dev) and their IT operations team (Ops) counterparts.
This closer relationship between “Dev” and “Ops” permeates every phase of the DevOps lifecycle: from initial software planning to code, build, test, and release phases and on to deployment, operations, and ongoing monitoring.
Some people group DevOps goals into four categories: culture, automation, measurement, and sharing (CAMS
), and DevOps
tools can aid in these areas. These tools can make development and operations workflows more streamlined and collaborative, automating previously time-consuming, manual, or static tasks involved in integration, development, testing, deployment, or monitoring.
2 Agile DevOps
Agile DevOps is a methodology that combines agile software development with devops practices to help organizations deliver features and updates faster and more efficiently.
The main goal of Agile DevOps
is to shorten the feedback loop between developers and operations teams so that changes can be made quickly and efficiently.
Microservices describe the architectural process of building a distributed application from separately deployable services that perform specific business functions and communicate over web interfaces.
DevOps
teams enclose individual pieces of functionality in microservices and build larger systems by combining the microservices like building blocks.
3 Microservices
Microservices apply an example of the open/closed principle:
- They’re open for extension (using the interfaces they expose)
- They’re closed for modification (each is implemented and versioned independently) Microservices provide many benefits over monolithic architectures:
- They can remove single points of failure (SPOFs) by ensuring issues in one service don’t crash or affect other parts of an application.
- Individual microservices can be scaled out independently to provide extra availability and capacity.
- DevOps teams can extend functionality by adding new microservices without unnecessarily affecting other parts of the application.
Using microservices can increase team velocity. DevOps practices, such as Continuous Integration and Continuous Delivery, are used to drive microservice deployments.
Microservices
nicely complement cloud-based application architectures by allowing software development teams to take advantage of scenarios such as event-driven programming and autoscale. The microservice components expose APIs
(application programming interfaces), typically over REST protocols, for communicating with other services.
An increasingly common practice is to use container clusters to implement microservices
. Containers allow for the isolation, packaging, and deployment of microservices
, while orchestration scales out a group of containers into an application.