Evolved from the
concept of continuous improvement of the software delivery process, DevOps is a
movement focused on improving communication, collaboration and integration
between the software development and IT operation teams. DevOps emphasizes on bridging
the gap between these teams by focusing on delivering software faster, and
creating a success metric based on how often they can release rather than on
KPIs or metrics that are in conflict of each other’s interest or areas of work.
The DevOps movement is
built around a group of people who believe that the application of a
combination of appropriate technology and attitude can revolutionize the world
of software development and delivery, where the goal is to improve the flow
from development to operations by working together and understanding each
other’s challenges. These goals are achieved by creating a set of practices and
patterns around 4 main pillars namely:
Communication
To create better
software and do better releases, the team needs to constantly communicate with
each other from the planning to release phase to solve impediments and improve
the quality of the release process. The team needs to be physically together
and need talk to each other and continuously learn from each other during the
process. The communication process is often facilitated with the support of
tooling like Slack, Trello etc.
Collaboration
Collaboration is key
for a true DevOps approach. Better collaboration between the dev and ops teams
help them achieve a streamlined process which helps the team in
- Better understanding of the target infrastructure and be well prepared with the changes in the product required for the changes in the infrastructure
- Prepare the target infrastructure with the changes needed for the upcoming releases of the software to avoid delays in the releases due to challenges in the environments.
Successful DevOps
teams work effectively with collaboration platforms like Yammer, SharePoint
etc. to facilitate this process.
Automation
Automation is the
heart of every successful DevOps transformation process and the single biggest
enabler for DevOps. The success of DevOps lies in stable environments,
consistent build and test process and happy releases. Automation can be used to
make the release process more deterministic and to bridge the gap between
development and production. Development teams can learn from operations the
value of automation and how to create automation scripts to improve the overall
process. Together the team is responsible for defining the desired state of the
infrastructure and convert this to code.
Tools like PowerShell DSC,
Chef, Puppet
etc. can be used to automate almost
anything and everything that the team needs. During the process, the operations
learn about version control, testing, CI builds etc. when working together with
the development teams.
Monitoring
Monitoring in DevOps
teams are required to provide crucial information that ensure service uptime
and optimal performance. It's important to measure the progress of the approach
to know whether teams are improving or making progress. With the support of
proper data and metrics, it’s easy for teams to inspect the current way of
working and come up with ideas or processes to improve the overall CD/ DevOps
movement. Measuring the current capabilities and process helps teams determine
the problem areas and defined focus points for making a change.
An important DevOps
practice is to work with application monitoring and insights to enable full
end-to-end traceability in a product to provide both operational insights
and usage understanding. Tools and
technologies like ELK stack, Application
insights etc. can be used for effective monitoring.