DevOps become a hot topic in software development life cycle these days. DevOps is not a technology or a tool or a product; it is methodology which proposes a set of principles and practices. It is a rethinking of how we configure and deploy software.
In traditional software development process, there used to be two teams the “Development people” who were responsible for building the software and moving software from one environment to other. These environment could be dev (where dev team unit test their code), test environment (stable environment for QA teams to execute their test), and some kind of staging environment which was kind of replica of production.
Now this is the time where second team “Operation” came in picture. These operation people were all together a different set of team who generally never seen or heard about this code before. So it looks like the code was thrown by development team “over the fence” to operation team. Who had no idea about the software and if it stopped working they wouldn’t know what the problem was and whenever the problem occurred Operation team had to call developers to troubleshoot the issue.
There used to be a big tussle between dev and operation team .Operation team claims that problem was due to the faulty code provided by dev team and development team claims that their code is working fine on their environment and it must be the fault of deployment done by operation team. This term is better known as “Wall of confusion”.
What is DevOps
So DevOps breaks the boundary between Development and Operation teams.
DevOps is a set of practices that aims to change and improve relationship between software development (Dev) and software operations (Ops) teams by promoting better communication, collaboration and productivity between these two. The main focus of DevOps is to improve code quality, shorter development cycles, increased deployment frequency, faster delivery and continuous software delivery. These are 4 basic continuous processes in DevOps:
= Continuous Integration
= Continuous Delivery
= Continuous Testing
= Continuous Monitoring
DevOps Lifecycle and Tools:
A DevOps lifecycle is a set of tools that assist in the delivery, development and management of application during the software development lifecycle. DevOps lifecycle contains 7 stages such as Plan, Create, Verify, Packaging, Release, Configure and Monitor. Each DevOps lifecycle stage uses different DevOps Tools and vendors. Refer to the diagram below.
(Source: Wikipedia @DevOps Toolchain https://en.wikipedia.org/wiki/DevOps_toolchain#/media/File:Devops-toolchain.svg)
1. Plan: Application Requirements, business metrics, Release plan and security requirements activities are included in this stage.
2. Create: It is set of the building, coding, testing and configuring of the software development process.
3. Verify: This stage insure the quality of the software release, high code quality and high quality is deployed to production.
4. Packaging: This stage includes the product staging which refer as the activities which is involved when release is ready for deployment.
5. Release: This stage includes the process of managing, planning, scheduling, controlling and deploying into production environment.
6. Configure: This stage comes once software is deployed. This process includes maintaining consistency of a product’s performance, functional and physical attributes.
7. Monitor: This is the most important stage. It includes the performance of IT infrastructure and it understand the feedback/experience of end-users.
DevOps Tool and Vendor Diagram
Niharika, has an overall 6 years of experience in software testing. She has worked on varied applications like Desktop application, E-Commerce Web Application, Mobile Application and Casino games. An ISTQB Certified Tester, she currently resides at San Fransisco Bay Area, USA.