DevOps Adoption Prerequisite
There is no questions, why it has become so important to adopt the DevOps culture. The question is how quickly an organization can achieve the DevOps process, which is best suited for them.
The following provides a guided approach for you to achieve this:
- Do your DevOps Maturity Assessment.
- Create your teams and people profile and write about their roles
- Review your SDLC approach
- Review your infrastructure architecture, provisioning and configuration process
- Create a list of all applications & components, their dependencies & technology stack and current build and deployment process
- Review how do you perform unit, integration, functional and regression testing
- Build a transition plan to move your organization to up to the Maturity Ladder.
DevOps maturity assessment:
This assessment is based on a set of questions in areas like strategy, culture, processes, automation, collaboration and release. When you answer each questions you get a score and the your DevOps maturity level (Beginners, Base, Intermediate, Advanced and Expert). This help you to understand your main pain point and recommends what you should do to attain the next maturity level. Try it yourself. Read how it works.
Team, people and role:
When you form a team for a project delivery make sure you list all the roles first. Then find a person in your organization who can perform that role at par. If you don't have the skill then upskill staff to enable them to perform that role. Make sure you have one delivery team with BAs, Devs, Testers and Ops and they work together rather than working in silos.
Software Development Life Cycle:
I would recommend to read this article which explain the very popular SDLC approaches and compare them and provide recommendation to which approach to use when. Pick the one which best suit for your team.
Infrastructure Review:
- Document all resource by adding metadata information like name, purpose, environment, OS, OS Version, On Premise/Cloud.
- Tag them with logical grouping(s)
- Draw a high level Network Resource diagram
- Document software and hardware provisioning process
- Document configuration management approach for software provisioning
- Document user management and security policy
Applications Review:
- List all your applications, components and its dependencies
- Add metadata information like name, purpose, technology stack
- Write the steps to build and package the application
- Write the current deployment process from dev to production environment
- Document configuration transformation approach when doing release
- Determine the Database deployment approach
Testing Approach: It's very important that you understand you current high level testing strategy in order to gain a quick insight where are the gaps and what should be done first to reduce SDLC phase duration.
- Understand the coverage for the unit test cases and check the percentage of test case which does core business logic testing
- Find out the width and depth of the integration testing
- Document how do you perform functional testing. Manual/Automated and challenges in moving to automation
- Note down your regression test approach, frequency and resources needed. Also document how do you change your regression cases with frequent changing application.
Transition Plan: Based on you analysis done in earlier steps, create a DevOps transition plan and communicate to the stakeholders. While planning pick changes which are easy to do first and quick win for the business. When you write a plan be very clear about what will be the outcome of each phase, as it will be impacting culture, people and processes. You can write stage outcome like "By the end of phase x all developers will follow a branching policy which will ask them to always peer review their changes before it is deployed to development environment so that a good code quality is maintained"
Thanks for reading this article. I hope you get a sense of where to start. In my next article I will be writing about how to setup your basic continuous integration and delivery pipeline.