“DevOps is the combination of cultural philosophies, practices, and tools that increases an
organization’s ability to deliver applications and services at high velocity.”
DevOps is a methodology. The idea of this methodology is to create a new mindset. A mindset
when developers and operations combine their efforts to achieve a common goal.
Traditionally, the development team could be roughly divided into developers and operations
which includes administrators — sysadmins, network admins, database admins, and all other
people who know the infrastructure. The operations team is interested in keeping things stable
to minimize the chance of software conflicts. While developers mostly cared about new features,
new versions. The main problem with all the above was the lack of cooperation and
communication. As a result, the software couldn’t be delivered at a desired fast pace.
When you merge both these teams together on the basis of constant mutual support, we have
DevOps methodology allows delivering software frequently with minor alterable changes.
DevOps can be implemented in 3 phases:
1. Automated Testing
Agile method and automated testing are the foundation of DevOps competency. This involved writing tests within the code so that every change in the code can be evaluated by whether the test failed or not.
2. Continuous Integration
Once we have effective code coverage for testing, The entire testing process is then automated. Jenkins is one of the most popular tools used to implement continuous integration. The concept is based on having a number of servers in the background testing the code and running it through every iteration possible in order to find out if it can create any bug in an automated way. Jenkins will then generate a report at the end of that process.
3. Continuous delivery
The base consists of writing code in small chunks that are integrated, tested, monitored and deployed.
The continuous delivery pipeline and tools for each organization is different. The key phases and the main tools used for the same are below.
● Plan & code: the Dev team plan and write code. Tools such as Git is used for VCS.
● Build & Test: while writing the code we can build and test with a tool like Jenkins.
● Release & Deploy: they are tools ( such as Puppet and Chef) that help automate the process of delivering that code to a cloud environment
( such as Amazon web services, Heroku, etc.) or a server.
Server less architecture is the newest computing approach in creating systems into the cloud or third parties services instead of depending on servers. Docker is an example of server less architecture. Docker works in conjunction with Puppet to make the code more portable which can be stored in multi-cloud for a better disaster recovery plan.
● Operate & Monitor: tools such as New Relic can be used to monitor everything.
Continuous Deployment describes when the software is deployed quickly into production since the team members make sure the application goes through complete automated testing.
● Improved operational support and faster fixes
● Good processes across IT and teams, including automation
● Increased team flexibility and agility
● Happier, more engaged teams
● Cross-skilling and self-improvement
● Collaborative working