Table of Contents
Combination of development and operations is a common buzz word named as DevOps it is a collaborative approach which has gained popularity in recent years to have a seamless integration between application and IT teams which was always a bone of contention for several years. This philosophy had changed the way software’s or applications are developed, automation and programmable infrastructure deployments and maintenance.
In this article we will learn more about DevOps framework , how it works, its benefits and use cases etc .
What is DevOps
DevOps is a combination of two words ‘Development’ and ‘Operations’ DevOps practices allow a single team to manage the entire application development life cycle , its development, deployment , maintenance and monitoring. The goal is reduction in system development life cycle while delivery of features, fixes , new functionalities and updates in sync with business requirements or objectives.
History of DevOps
The history of DevOps dates back to before we used the waterfall model and agile approach. The waterfall model of software development is linear in nature; it starts with the requirement gathering phase and analysis of requirements, then moves onto design, implementation, verification and finally the maintenance phase. The Agile methodology is an iterative based software development where a software project is broken down into various iterations or sprints. Since both models have some limitations, the DevOps cycle came into existence. It involved multiple stages of continuous development, continuous integration, continuous testing, continuous deployment, continuous monitoring and so on.
Continuous development phase uses a variety of tools such as Git, SVN, Mercurial, CVS etc. Planning and coding of software is the main element of this phase , code can be in any language but you maintain it using version control tools referred as source code management.
Phases of DevOps Cycle
Continuous Integration Phase
It is the core of the entire DevOps cycle and tools used are Jenkins, TeamCity, Travis etc. This phase requires developers to commit changes to code more frequently , you commit every build which helps in early detection of issues if present. Code building involves code review, unit testing, integration testing and packaging.
Continuous Testing Phase
The continuous testing phase tools are Jenkins, Selenium TestNG, Junit etc. software is tested continuously for bugs. Tools allow testing multiple code bases to ensure functionality of software is flawless. Simulation of the test environment can be achieved using docker containers here.
Continuous Deployment Phase
The Continuous deployment phase tools are chef, Puppet and Ansible and containerization tools are Docker, Vagrant. Code is deployed on production servers. Containerization helps to achieve consistency across deployments, test, staging and production environments and also help in scale up and down in a smoother way.
Continuous Monitoring Phase
The continuous monitoring phase tools are Splunk, ELK stack, Nagios, New Relic etc. and this is one of the most critical stages in DevOps where performance of the application is monitored continuously. Operations teams are involved to monitor user activity for bugs and any improper behaviour in the system.
Functions of DevOps
- Automated code is prepared to deploy in live environment and tools used is tied to programming language being selected.
- CI/CD – continuous integration and continuous deployment deals with frequent code merging and unit testing.
- Infrastructure as a code – code is used to provision or managed IT infrastructure which is reusable in nature.
- Configuration management – manage and change state of infrastructure in consistent and maintainable manner.
- Orchestration – automation to support processes and workflows such as resources planning
- Monitoring – collection and presentation of data about performance and stability of services and infrastructure.
- Microservices – breaking an application into smaller manageable units to reduce complexity and speed up flexibility.
DevOps is mission critical for any organization and has the capability to undertake digital transformation and Agile transformation.