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
The developer team writes code for the application, security and for bug fixes. Once the development is over the code will be given to the operations team for deployment. The developer team has to wait for days for the code to be deployed in the production environment. After deployment, the application might not work the way in worked in the development environment. It happens when the development environment is not identical to the production environment. The operations team will work on the necessary changes to make sure the application is running smoothly. The operations team will face problems again because of the new code. They might think the problems are caused because of the bugs in the code and developer 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 team work better. Here is where Devops comes into play
What is DevOps?
Devops is a philosophy which aims at integrating the developers and operations teams for improving productivity and collaboration by automating infrastructure, code deployments and continuous monitoring of applications. It means building a relationship between the developers and operations team to work together and share responsibilities. A DevOps team automates everything from infrastructure provisioning to code testing and deployments.
Recommended Ebook: The Phoenix Project
Instead of writing big chunks of code which takes days and months of testing, small chunks are written, integrated and tested frequently to speed up the application delivery process. Moreover, the development and production environments will the have the same configuration’s so that the application will run on a production server like it did in the development environment.
Also, instead of configuring the software and hardware manually , DevOps team 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.
How can a Devops oriented team accomplish the above-mentioned things?. Using right tools from a development to the production environment would create a complete Devops tool chain for delivering applications faster and better. An example for 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.
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 Devops teams to provision hundreds and thousands of servers, configure itself automatically and to deploy the application code.
The next shift in Devops movement is the 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
Tell us what you think about DevOps approach in the comment section.