We’ve been seeing multiple approaches followed by Industry to deliver the best product with minimal or no defect and in very less time. DevOps is such culture or model or practice or approach, whatever you may call but not a programming language or technology.
In this post I will be introducing you with the DevOps culture
We will be seeing What is DevOps?
Role of operations before DevOps?
What is the need of DevOps? or Why DevOps is important?
So let’s get started!
What is DevOps ?
DevOps is a culture which promotes collaboration between development and operations to facilitate Continuous Development, Continuous Testing, Continuous Integration, Continuous Deployment and Continuous Monitoring throughout its development lifecycle.
Image Source: https://www.atlassian.com/devops
Role of Operations Before DevOps ?
We know that DevOps is a combination of Development team plus Operations team. Many of us know what development team does but often get confuse when it comes to IT operation. Operation guys were mainly responsible for infrastructure monitoring, deployment, server management etc.
WHAT IS THE NEED OF DEVOPS ? or Why DEVOPS IS USED ?
Before DevOps, the development and IT operations team works in complete isolation with different timelines and since both are dependent on each other delay in any of them with impact timeline of other. Testing and deployment were done after the design and build and were isolated, hence sometimes they consume more than actual time. Following DevOps culture will decrease the gap between this and helps to reduce the build cycle time and deliver the products faster.
Without DevOps team members are spending most of the time in resolving code conflicts, manual testing, deployment and designing the application. This reduces the time to market upto 50% through streamline software delivery.
As mentioned earlier often Development and Operations team have separate timelines, DevOps improves communication and collaboration.
With DevOps you get faster development cycles, Faster Innovation.
With DevOps since the application is already tested and deployed in multiple environment it has less risks of failing in production servers.
DevOps Lifecycle involves 5 steps which we are going to look in depth
- Continuous Development
- Continuous Testing
- Continuous Integration
- Continuous Deployment
- Continuous Monitoring
Before we look into devOps Lifecycle we need to understand below figure which is Infinity Lifecycle.
Once the Planning is done, Developers start coding and build and testing phase is done, once all test cases is passed next step is integration and deployment. After which monitoring phase starts if any bugs or issues come it again goes to planning and this lifecycle never ends hence called Infinity.
So now let’s get into depth of DevOps Lifecycle
1. Continuous Development
As shown in the above image, this phase is the combination of Planning and coding, Planning refers to sprint planning where we define the goal of the sprint and deliverables. A sprint can be of 2/3 weeks depends on the program and management. Every sprint a new feature is release and this continuous till the development.
Development tools for Continuous Development – Git and Github is vastly used tool, Git is a tool and Github is a repository. Other tools are SVN.
2. CONTINUOUS Testing
As the name suggests Continuous Testing, this is the phase where developed software goes through multiple testing to make sure the quality of the product is upto the mark.
This is also to ensure that no new bugs are introduced with the new commits on the code.
For this tools such as Selenium, JUnit, XCTest are used and Docker containers are used to simulate the test environments.
3. CONTINUOUS INTEGRATION
Continuous Integration is the process of Automated Build and Automated Test i.e. developer integrate code into a share repository several times a day where each integration can be verified by automated build and test.
CI helps to remove complete old fashioned code integration and test which can be quite long if you get some merge conflicts, thus with CI you can say goodbye to old long and tense integration.
With CI system focuses more on catching bugs, debugging and creation of new features.
CI tools: Jenkins
4. CONTINUOUS DEPLOYMENT
Continuous Deployment is related to CI and refers to keep application deployable at any time. So basically CI helps us to create the build which is tested, with Continuous Deployment we can deploy the build on QA, Test or production environment. So basically when we configure this, as soon as developer commit the code, it get tested and deployed on respective environment.
Continuous Deployment is a combination of Configuration management and containerization.
Since this focuses on basics, ill not go in depth of any of the topics but ill make one tutorial which will focus on Continuous Deployment, Continuous Delivery, Configuration Management and Containerization.
Tools which are used here are Chef, Puppet etc
5. Continuous Monitoring
Continuous Monitoring is nothing but monitoring the system and its performance.Tools which are used in that are, New Relic, Nagios etc
Let me know in comment section if you have any queries!