Sounds vague and confusing, doesn’t it? Let me give a detailed explanation as to how devops came into existence.
Watch this video on DevOps Tutorial for Beginners
History of Devops
Before devops came into the limelight, our traditional ol’ IT had two separate teams in a organization – the Development team and the Operations team.
The development team worked on the software, developing it and making sure that the code worked perfectly. After hours of hardwork and a lot of trial and error, the team releases a code which has to be executed by the Operations team which is responsible for the release and operation of the code.
The operations team will be checking the application and its performance and reporting back any bugs, if present.
As simple and planned out as it may sound, the two major teams always had a conflict when it came to execution.
For instance, let us say, the development team developed a code using an i7 processor, 8GB RAM, OS as Ubuntu, and php 5.6 scripting language, where as the Operations team ran the same code using i5 processor, 16GB RAM, OS as Centos and php 7.0 programming language.
When the operations team ran the same code, it wouldn’t work.
The reason for this could be the difference in the system environment or any missing software library.
The operations team flagged this code as faulty, even though the problem could exist in their own system. This resulted in a lot of back and forth between the Developers and the Operations team.
To bridge this gap, Development(‘Dev’) team and Operations (‘Ops’) team collaborated giving rise to DevOps.
For example, to solve the above problem, the Development team encapsulated their code in a container which is a lightweight software environment.
This software environment had all the required software encapsulated in it, which the code or the application will require to run as expected.
When the developers were done with their work, they would simply pass on this container along with the code to the operations team. The Ops will run this container, along with the code, and it worked as expected!
This is exactly what Devops is!
What is Devops?
Devops is not a tool or a team, it is the process or a methodology of using various tools to solve the problems between Developers and Operations team, hence the term “Dev-Ops”
The development team always had the pressure of completing the old, pending work that was considered faulty by the operations team. With DevOps, there is no wait time to deploy the code and getting it tested. Hence, the developer gets instantaneous feedback on the code, and therefore can close the bugs, and can make the code production ready faster!
Life cycle of DevOps
A lot of stages help in making DevOps what it is today.
It is a continuous process – continuous development, testing, integration, deployment and monitoring. Let me explain this with an example.
Instagram is a widely used application all over the world. For it to work the way it does, there is huge team behind the scenes continually developing, testing and releasing features to it.
The developer plans and builds the code for the application which undergoes testing using test suites, if test suites are successful the code is sent to production.
In the production environment, the monitoring tool keeps a log of bugs and feature requests by users. For instance, instagram has added new features like Instagram Stories and IGTV which were not a part of the Instagram application before.
There was also a bug which crept on to the application which switched the feed to a horizontal view and everyone went bonkers. This is now fixed, but, how do you think Developers get to know about these bugs?
It is continuous monitoring that keeps a check on these bugs and feature requests. These feedbacks are then sent to developers who make the changes and again push the code in the Devops Lifecycle.
Therefore, from the above example you can see that work is done continuously on the application, and the development never stops!
The process of adding new features and fixing bugs continuously to improve the application, in the shortest time possible is called Devops Lifecycle.
- Continuous Development
The developer plans and builds the code and uploads it on to a version control system like Git which contains the source code. Even after the final release, there are feedbacks which the developer needs to incorporate in the application. Therefore, this continuous process of improving the application by the Developer is called Continuous Development.
- Continuous Testing
After the code is uploaded on to the source code platform, it undergoes testing with the help of test codes. Each time the source code undergoes changes, the code also undergoes testing in a continuous fashion before passing on to production.
- Continuous Integration
When one stage in the DevOps lifecycle is completed, the application code has to move on to the next one. This happens with the help of integration tools. The developmental practice of continuously harmonizing the code from one stage to the next with the help of tools is called continuous integration.
- Continuous Deployment
Each addition of feature in the application, might need some modifications in the application environment. This is called Configuration Management. To achieve this, we use several deployment tools. The process of continuously changing the application environment based on addition of features is called Continuous Deployment.
- Continuous Monitoring
Even after planning and testing, bugs might find their way to production. To keep a track of these bugs or any other inappropriate system behavior or even keeping a track on feature requests, the monitoring tool continuously keeps a check as and when the application undergoes updates.
Behind every successful stage, there are a lot of tools that help in smooth working of DevOps. Here are a few important ones:
It is one of the most popular free, open source version control system designed to handle projects of all sizes, hence, it is a widely used DevOps tool across the software industry. Git allows us to track the progress of the work. We can save all the versions of the source code, and if necessary, return to a previous version. Git plays a major role in the continuous development of DevOps life cycle.
Another important tool is the docker. Docker makes the distribution development possible through ‘containers’ and automates the deployment of the apps. To make the application portable and more secure, docker isolates the apps into separate containers. The docker apps are OS and platform independent.
From project structure to building steps, Maven is the tool that provides us with guidelines which when followed helps us get our job done faster with minimal configurations. It compiles the source code, runs tests, packages the results into JARs, WARs, etc. and uploads the packages into remote repos.
Watch this Jenkins Tutorial for Beginners video
It is a continuous integration server that can be used for testing. As a developer, it helps in finding and killing the bugs in the code. Jenkins offers a huge plugin ecosystem of about 1000 plugins which means, it can integrate with almost all the DevOps tools.
This is another tool with a rich plugin system, with free and open source monitoring tools that helps in finding and fixing the problems in the IT infrastructure before they affect the sensitive business projects.
It is another open source IT configuration management and deployment tool. It uses a simple syntax written in YAML. ansible does not require any additional ports to be installed on the host system on which the automation is to be done. This saves a lot of resources for the application. The modules work with JSON and is extensible with any programming language. Overall, this is a simple tool that provides large productivity gains.
It is a configuration management platform which allows us to manage the infrastructure as a code. The delivery of code is faster and more secure as it automates infrastructure management. Puppet also provides open source tools for minor projects.
The various stages along with the tools helps in achieving DevOps.
Roles and Job Opportunities
Now that we’ve seen what DevOps is and how it puts the work of the software industry at ease, let’s check out the job opportunities it has in store
According to linkedin, there are about 4000+ jobs available for a DevOps engineer, just in India and this is increasing by the day. Most of the MNCs give top priority to people skilled in DevOps.
DevOps engineers are the highest pad practitioners in the IT industry. An experienced DevOps engineer rakes around $117,000 p.a. In India alone, a good DevOps engineer earns somewhere in between 12,00,000 – 18,00,000 p.a.
Some of the new job roles emerging for DevOps are
- DevOps Architect
- DevOps Developer
- DevOps Consultant
- DevOps Test Analyst
- DevOps Manager
DevOps emerged as a credo to bring two major fields of an organization together to solve the problems faced by the IT industry. This idea has now grown into a massive career path with increasing job opportunities. The best time to explore this field and get the right training is now!
You can also head onto Intellipaat to get started with the best DevOps training and grab the opportunities that come your way .
- Tableau vs. QlikView: Difference Between the Two Data Visualization Giants
- Tech Savvy Diwakar Chittora Dreams to Turn his 4-years Old Intellipaat into Dollar Four Billion Entity
- The Big Business Balls of Big Data