This article explains what DevOps really means and how automation tools can help teams in adopting DevOps practice.
DevOps (a portmanteau of “development” and “operations”) is a concept dealing with, among other things: software development, operations, and services. It emphasizes communication, collaboration, and integration between software developers and information technology (IT) operations personnel.– Wikipedia
I have published an article on how to become a DevOps engineer. Check it out to understand the skillsets and learning path required for a practicing DevOps.
Traditional Development & Deployment Process
Let’s understand how traditional development and operations team work to deploy the application to production.
- The development team does continuous code development for application, security and bug fixes.
- Once the developed code is ready for release it will be handed over to the operations team for deployment.
- The development team has to wait for days to weeks for the new code to be deployed in the production environment due to several challenges in environment provisioning and approvals.
- The operations team will start deploying the code to QA/Performance environments.
- The application might not work the way it worked in the development environment. It happens when the development environment is not identical to the deployment (QA/Perf/Stage/Prod) environment. It could be platform version issues, config changes, module version changes, etc.
- Ops team might think the problems are caused because of the bugs in the code.
- The development team might think there is some issue with the configurations made by the operations team.
- There should be something to make the development and operations teamwork better. Here is where DevOps comes into play
What is DevOps?
DevOps is a culture or a philosophy that aims at bridging the gap between the development and operations teams for improving productivity, a collaboration by automating infrastructure, code deployments and continuous monitoring of applications. Meaning, building a good relationship and setting up a collaboration process between the development and operations teams to work together and share responsibilities.
One example of collaboration is the ops team attending development scrum meetings to understand application requirements during the development phase itself. Then the ops team will align with the development team’s delivery goals. Basically they will act as a single team rather than different teams.
A team following DevOps principles automates everything from infrastructure provisioning to code testing and deployments.
Recommended Devops Ebook: The Phoenix Project
With this collaborative mindset, writing big chunks of code that takes days and months of testing is avoided. Developers will focus on small modules which is integrated and tested frequently to speed up the application delivery process.
Moreover, with the right automation, the development and production environments will have the same configuration’s so that the application will run on a production server as it did in the development environment.
When it comes to automation, teams will write configuration management scripts or codes to bring the deployment infrastructure to the desired state ( eg: 8 web servers, OS specification, hardware specification, application configurations, etc ). So server provisioning, scaling, application testing, and deployment can be automated.
Also, DevOps is an exploding topic for the last five years. Here is the google trends data on DevOps for past years.
How can a team accomplish DevOps practice?
Using the right tools from development to the production environment would create a complete DevOps toolchain for delivering applications faster and better. Tools are just DevOps enablers. You have to clearly understand that Automation is not DevOps
An example of this is Jenkins. Using Jenkins you can get the latest code from the version control systems like Github and test it continuously without any manual intervention. We call this process
Next comes application deployment. For this, configuration management tools like Puppet, Chef, Ansible and Saltstack can be used. Using these tools you can code your infrastructure and define how your infrastructure should look and behave. This approach is often called “Infrastructure as code”.
The code determines the state of your infrastructure. These tools help the teams to provision hundreds and thousands of servers, configure itself automatically and to deploy the application code.
The next shift in the DevOps movement is containerization. Container technologies like Docker help DevOps team to build applications and ship it to any infrastructure running docker. The application would work the same way it worked on the developer’s laptop.
Also Read: What is Docker and How Does it Work
Adopting DevOps will vary between organizations. Some organizations change the culture and process of different teams to adopt DevOps. Some organizations will start building different skillset in the same team to adopt DevOps. So it’s all about a collaborative mindset.
Tell us what you think about DevOps approach in the comment section.