Digital Transformation can be loosely defined as transforming the legacy systems running on old hardware and old programming stack to a highly scalable and highly available platform like Cloud, Big Data Cluster Computing platform using modern tools and technology.
DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. (Definition from Wiki)
Based on my experience working on multiple Digital Transformation Projects with and without DevOps, I have concluded that to make “Digital Transformation” really successful, DevOps is the critical ingredient… instead I would say it is the “Silver Bullet” that can make a big difference
“Digital Transformation Projects is about massive scaling and faster time to market.”
Agile/Scrum has offered a great way to improve software development practices. DevOps provides the much-needed technology toolset and echo system for churning out iterations that create customer value. Now talking Digital Transformation Projects is all about massive scaling and faster time to market, and it badly needs the ecosystem which DevOps offers.
Right Prioritization is Key for success of DevOps
The waterfall was about piling up features, requirements and releasing all at once. Still, with DevOps, if proper prioritisation is done — in every iteration, value flows directly from development to deployment stage to customers like a pipeline. Hence the concept of build and release pipeline became immensely popular; right prioritisation of work is essential here.
With CICD pipelines (i.e. Continuous Integration and Continuous Delivery ) at your disposal, DevOps enables development teams to deploy applications much faster. With the advent of Cloud computing, code deployment and infrastructure creation ( or infrastructure setup) can be done on a click of a button. Cloud virtually makes infinite infrastructure available to everyone across the globe — So this takes care of the massive scaling and time to market.
We have seen that with CICD and cloud computing, the time to market is super fast… but what about security? DevOps has something called as DevSecOps. DevSecOps bring together the Security and Development teams to ensure the highest security standards are followed right from the project's inception. Examples are adding SonarQube, Blackduck, WhiteSource, Checkmarx, and other security tools in the CICD pipeline for early detection. Along with this unit testing, test automation and monitoring can be incorporated into the CICD pipelines, thus making it a continuous value-producing engine for the end-users
BTW, DevOps is not only about Continuous Integration / Continuous Deployment Pipelines, but it does much more; it creates an ecosystem for setting up high standards, the right design from development, testing, and deployment till monitoring and fixing the issues in production in a quick time.
Now let’s look at different phases of DevOps.
- Plan: Tools like Azure DevOps (ADO), Jira, Collab, and Assembla can help to make this phase as effective as possible.
- Code: Software design, code development, and maintaining the code in Git, GitLab, GitHub, Bitbucket, or any other popular version control system
- Build: Compiling the developed software using CI pipelines and package management ( artifacts, NPM repository, etc.); it also has triggers, gates, and approvals.
- Test: Testing and quality assurance by integrating the CI pipelines with automated quality gates
- Release: ready for release after successful testing; acceptance criteria can be integrated into CI pipelines
- Deploy: ready for seamless and automated deployments in Development, Test, Preproduction, and Production environments.
- Operate: Once in production, the operations team will ensure the software is running optimally.
- Monitor: Continuous monitoring for performance, response time, and errors; tools like Application Insight, Log Analytics, and Splunk can be used here.
All these phases are interconnected. Suppose the planning and prioritisation are done correctly. In that case, it can impact the design and coding phase resulting in poor standards, bad design, and coding will make software hard to build and test, leading to manual testing. Also, the continuous deployment of such software will require some clarification. So getting right every activity in every iteration can work wonders and help create a great product.
Great products, architectures, features, requirements, and design can be built best by self-organising teams, so empowering teams and enabling them on the DevOps path should be the number#1 focus of leaders
Implementing and incorporating DevOps in the organisation requires a shift in the organisation’s culture. With the proper focus, the process can be gradually and systematically implemented. Primary responsibility lies with the leadership to address the skill gap and help the team unlearn old ways and learn/ relearn new ways of working.
Companies like Amazon, Netflix, and Facebook do thousands of daily deployments. These deployments are fully automated, which would only be possible with DevOps; I have seen deployments running for four days in my previous projects ( without DevOps and cloud ). With DevOps, I have experienced seamless delivery and rolling out of quality products to existing and 100s of new customers with a click of a button, completely automated.
To become a market leader, organisations have to embrace and implement DevOps in a big way, minor adaptions here and there will have limited benefits.
I want to encourage all developers, testers, and leaders to embrace DevOps and Agile as top priorities. All development teams should develop DevOps skills; on top of this organisation should set up a DevOps R&D team and continue to build expertise in DevOps, come up with design patterns for different implementations, come up with new automation techniques and keep on improving the DevOps practice (as there is no end to automation). A quick reality check for organisations doing Digital transformation is maturity level in DevOps; the ones who have got it right have made a cautious decision to excel in DevOps.
DevOps and automation also bring substantial cost savings options; if you don’t need a particular server or pipeline, you can dismantle and regenerate it when required. Example: shutting down Dev/POC/Test environment over the weekend when not in use can bring substantial cost savings
By now, it’s evident that DevOps is one of the most sought-after skills; for the last couple of years and in 2019, 2020 StackOverflow survey has rated DevOps as a top skill.
Here are the StackOverflow survey links mentioned in the article
DevOps is the future and will completely change how we work, create new roles and responsibilities, and we have to be ready for that.
Example Full Stack Development: here developer does everything from requirements gathering, development, deployment, testing through automation; another example is Site Reliability Engineer: profile with a complete understanding of development, deployment, and monitoring.
If you are planning to learn DevOps but unsure where to start, do contact me. I will be more than happy to help you.
For those already using DevOps, let me know if you agree with the bold statements made in the article, do share your experience and success stories; I would love to see your feedback and comments.
Thank you!
Cheers!
Yogesh
Top comments (0)