DevOps & CICD
This story is set out not too far, year 2015 in Santa Clara, California. A well-established IT provider was submitting a response to multi-million-dollar RFP. This company was in business for years and had well established waterfall model execution process.
There typical delivery model looked very similar to the diagram shown below.
Their client partner, Bob, was super confident about winning this deal. Because he thought, they clearly understood the requirement. Also they were on budget and had lots of success stories to share with this customer. Bob even had started the onboarding process for new associates who would work on this project.
But Bob missed to notice that the industrial trend is witnessing a shift – it is moving away from the traditional ways of development. Client’s IT maturity has increased. Also the technology is progressing to be nearly impeccable. As a result of this the company lost a multi-million-dollar project.
They went to drawing board to find what went wrong. After much of deliberation and discussion over the weeks, they noticed the mistake.
They noticed three key points where their competition fared better:
1. Modern Technologies – Bob thought, we were also going with similar modern technologies, in fact we had better experience executing projects with them.
2. Agile – Yes, we didn’t consider because it’s is too risky as customer may keep changing the requirements.
3. Seamless DevOps with CICD – And, Bob said, how on earth you are going to automate and integrate the tasks of different engineering teams.
Bob wanted to know, so he started reading about Agile and DevOps.
1. Agile –
A way of working – focused, time bound and agreed definition of done for every sprint. From customer perspective, it reduces risk as it gives them:-
a. Better visibility to see the software is shaping every couple of weeks (sprints).
b. Opportunity to change quickly if they don’t like something
2. DevOps CICD –
An automated approach to smoothly integrate tasks of multiple engineering teams.
If you are reading this Blog, I believe you already know Agile. Even if you don’t, you can continue this journey with Bob as DevOps is not limited to Agile, but it works very efficiently when implemented with Agile.
For Bob’s future reference, I am going to add a brief, generalized note on Agile here.
Agile methodology is an idea to iterative approach of software development. Agile focuses on smaller and manageable tasks breakdown for larger projects. It gives you opportunity to create and respond for change. Scrum is one of the management frameworks to control & manage iteration.
Following are the key components of Agile project management:
- User Stories: High level definition of work request
- Sprints: Short iteration of 1-3 weeks in which team needs to complete assigned tasks
- Stand-Up Meetings: Short meeting to ensure everyone is on track and hurdles if any.
- Agile Board: A whiteboard to track the progress of your projects.
- Product Backlog: List of prioritized work items for team governed by roadmap & requirements.
Some of the important teams of software industry are of developers, QA and IT operations. They traditionally work in silos. The development team focuses on creating the products for the given problem statement. They are list bothered about how this will be delivered to end user. The IT operations team is all focused on delivering to end user but they do not have idea of what is going on in development team’s world. The traditional approach is manual, slower delivery cycles and has longer wait time for customers.
The focus of DevOps is to automate this gap between the delivery and operations team, to bring them closer.
DevOps at a Glance
This automation works on multiple fronts using various modern tools such as Azure DevOps.
These tools give us opportunity to create the pipelines with controlled gates. These gates help to smoothly move the software product through various stages.
- Developer develops the code and commits it to the repository.
- There are automated quality gates in the repository to automatically build the code, validate the code for technical debt.
- If the code doesn’t meet set development standards then it gets rejected from commit. This gives the opportunity to reduce future issues in production. It also increases code maintainability.
- Once the code commit is accepted then pipeline can run the automated test cases to validate the functional readiness of the software. Incase of failure, the reports get generated real time. The stakeholders can refer these reports real time to take appropriate measures.
- After the automated tests are successful, the code is considered ready to go to the next environment and with DevOps, the software can be automatically deployed to various environments.
- The first step of such environments is for QA. Thus, the QA team quickly gets this software for testing.
- QA team keeps their automated test suite ready and integrated with pipeline. This is triggered automatically and validates the software. QA team does manual testing of the release to validate cases which are not handled by automated suite.
- Once the software is QA approved and has passed all the gates, it can be pushed to the next environment – pre-prod or prod.
This process is called CICD i.e. Continuous Integration Continuous Deployment.
- In traditional ways many products were taking 6 months to 1 year to reach to end user but with the invent of DevOps this cycle is reduced to couple of sprints.
- This has enabled the companies to reach to the end user faster, fail quicker and deliver good quality products with minimal manual intervention.
- DevOps is paving ways for many companies to quickly add new features for their customers. A reason why we see so many app updates coming out quickly. Even the Operating System updates and releases reach to us quicker than earlier.
After knowing about DevOps, Bob has started diving more into the world of automations. This blog is a steppingstone towards your journey to DevOps. As you know, automation may sound simple, but it takes lot of meticulous planning and a great deal of understanding to implement it right.
I sign off here, with all the best wishes to your DevOps journey. And yes, Bob, has successfully completed an proposal. His company has won new modern multi-million dollar deal. I am sure, you are going add new feathers to your career too.
~ Deepali Rohe