DevOps is a practice that recently incurred in any product based company or software service based company that produces the software.In Software Industry DevOps is the process Of continuously delivering the software product to the end user
Before we talk about DevOps. We should be aware of software methodology which is been used across the software industry.
Software methodology is nothing but a method how the new requirements from customer received, how the software is architected and how it is implemented followed by Maintenance. In simple terms, it is called SDLC software development life cycle.
Further, the methodology defined in many ways such as waterfall methodology, Agile methodology, spiral methodology, prototyping, incremental funding methodology unified modeling language. Though we have many methodologies in place there are only certain methodologies Gives success rate.
Waterfall methodology is a sequential development approach in which the software development will flow like a water such as requirements analysis, design in another term architecture, software implementation, verification, and maintenance. This model works well in software service provider industry where the client draft the requirements which are taken further into the analysis, Design implementation testing integration and deployment.
In most of the software application development company, There will be sales team, business team, Technology team, and operation team. basically the sales team who gets the project from the client after the pricing and other sales related discussions completed then it will be taken over to business team, the business team is the one who gets the proper requirements details and passes on to development /Technology department, there will be a project manager who collaboratively collects the business requirements and handover to respective development lead or the manager. Then the development lead should prepare the understanding document based on the business requirements document and create the high-level design (HLD) document To handover to project manager. This documents further will further forward to the client through business team by respective client account manager or implementation manager. Upon the approval of understanding and design document, the development team Creates the low-level design document which usually has a pseudo code of the requirements. This LLD will be reviewed by Development Manager to kick the development. Basically, the development team will be divided based on the technology or the modules, example there will be Java web development team, Oracle database team And some kind of C program middleware team or if it is Product company then the technology will be divided as the module based on their product module.
So here all this development progress will happen in one swing on the development environment, once the development is completed, the developer has to perform the unit testing followed by code check-in on the repository tool. based on the developer confirmation, this code will be deployed to the QA environment and further handover to quality analysis or QA team for the testing purpose. The QA team will start the work by preparing test case scenario based on the requirements (BRD), high-level design HLD and low-level design LLD document. While QA team testing the application action, the respective module development team resources will be available To support the QA team. Once the QA verification is done after many iterations of defects raise and defect fix. The tested Development code will deploy into UAT environment followed by handover to account/implementation manager, who engage the Client to perform user acceptance testing (UAT), while the client performs UAT, there will be supporting resource from both development and QA team. After the Successful UAT completion, the code will be deployed in the production environment with proper handover to the production team. Now it’s on the production team responsibility to have separate operation team, support team, and monitoring team. In the certain organization, it is on the production team responsibility to perform operation automation and monitoring parameters to set based on the feedback from client and working experience on the project.
With waterfall development approach, there are manual steps involved from code commit, unit testing, code review, code deployment & QA Testing to till production maintenance. Also, there will be a continuous manual operation and Manual monitoring and hidden drawbacks or unexpected miss such as,
- Version mismatch during the code commit
- Incomplete unit testing or Unit test only on the developer machine limitation.
- Technical debt due to mere code review on large lines of code.
- Lack of regression & performance testing
- Manual configuration that causes manual error or miss in the configuration
- Challenges due to environmental changes
- Large downtime while manual production deployment
- Surprise error during the production deployment
- Slow delivery cycle on the new requirements to production
- Lack of security & compliance
- Manual error during manual operation
- Ineffective monitoring
The current industry, this approach consider as a traditional approach as it has some drawbacks when there is a revision to be done on the software that already delivered.
The next methodology is Agile methodology, it’s the group of software development methodologies based on iterative development where the requirements and Solutions evolve via collaboration between the self-organizing cross-functional team. further, the Agile methodology runs with frameworks called dynamic system development methods, Kanban, and scrum.
The Agile methodology works well for the product based company who design their own product as a software to publish on the market. Nowadays many IT organization follows this agile model on scrum frameworks with Devops process.
The best approach in this method is to divide the development cycle into many phases and release one by one in fast delivery mode from the Development environment to production maintenance.
Since this method is also part of SDLC, the style might look same like the previous approach. However, team allocation and code movements from development to production environment and project handling inside the technology team completely varies. In any of the team during the development, there will be responsible perform who kick-start the short meeting about the project with developed, QA & operation team about the readiness and progress of the projects.
Since the large module has been divided into the small module, it is easy to track the status of each module development progress. Further, this small module makes the quality of production to be more reliable.
Now the new practice called DevOps wrapped on the agile methodology, in a framework called Scrum.
Basically, DevOps is nothing but development and operation team to collaboratively working on software delivery. Nowadays there are many Tools and techniques in place to achieve SDLC in the fastest manner through Agile methodology. In this approach development & testing is completed in the same iteration as programming.
Nowadays most of the startup companies follow this development approach as the first methodology, as it is very precise, time bounding, scalable, reliable, quick delivery, and better monitoring.
Further, the agile methodology well streamlined as a development model under the process called DevOps, which enforce continues integration, continues delivery & Continues deployment with the support of so many tools, techniques & process.
In the next articles, we will further deep dive into DevOps and explore best in the market tools.