I have been hearing about DevOps a lot and I thought to check it out, what is this new bird. I am tempted to try out at least one tool in each of its categories. If you like it, do leave your comment.
==If you are interested only in list of DevOps Tools then jump to Step 2: Automate of the post.==
First question was in my mind. What is DevOps?
DevOps (Development and Operations) is software development method, an improvement upon Agile and Lean.
Ok, we know the definition now. Why do we bother to learn another software development method?
It’s just a name ‘DevOps’. If you already have
- Great culture (transparency, collaboration, shared responsibilities and free flow of knowledge) with in team and across teams.
- Most of the task are automated
- Great Monitoring to give instant feedback
- Instant delivery of production ready softwares / Fast IT.
- Incremental value addition to business
Then you are already on DevOps and please educate others to be awesome, as you are.
Hummm… I am not on DevOps. Okay, let’s make transition to DevOps. I must warn you!!! Once you make transition to DevOps then there is no turning back. It’s like full HD TV, once you experienced it, you never wanna go back to standard TV :) .
Transition to DevOps is simple two step process.
Step 1: Re-org with cultural changes Step 2: Automate
Still reading? DevOps must has got your attention ;) Ok, ok, without wasting any more time, we jump to two step process.
Step 1: Re-org with cultural changes DevOps is not about hiring new people but it is re-org of your existing team with cultural changes.
You might have organisation structure as below, divided by their roles and skills.
- Re-org to have every stakeholder a common Goal, shared vision. Get a clear vision and have team around services. You maintain services over decades, not a project. Ultimately goal of project is also a service.
Address wastes & objections within team and encourage to have a shared vision.
Eliminate wastes like knowledge waste, waiting waste, waste in motion and inventory waste.
Address objections like security, compliance, offshore team, legacy and skills.
Bring transparency within the team and let free flow of knowledge at every level.
What about automation? do automation will help in building a DevOps team & cultural changes?
==Step 2: Automate==
Yes, tools are integral part of DevOps. Tools help to automate things and bring DevOps culture in the team.
Categories of DevOps tool
List of useful tools for each categories:
- To easily connect with across teams.
- Helps in rapid discussion to make decision fast.
- Pass knowledge across team.
- Helps to avoid knowledge waste.
- Acts as knowledge repository.
- Quick collaboration.
- Collective team planning.
- Bring transparency.
- Bring everybody online onboard.
- Visibility to everybody, what others are working on. Who to contact when needed & who are responsible for what.
- Define priorities in real time.
3. Issue Tracking:
- Know how I am doing to collect triage and response as collective team.
- Not to do transportation waste as with multiple tracking system.
- Eliminate transportation waste, knowledge waste as information continues to degrade as information travels through systems.
- Have a shared view, everybody is looking at same place and solving problem (not passing around).
- Health Check of systems.
- System Alerts.
- Helps in maintenance & deployment.
- Helps in designing systems and future improvements.
- To know when is the right time to bring in right person to troubleshoot the problem.
- Collecting, parsing and analysing system logs.
5. Configuration Management:
- Keep configuration stable and consistent, when moves from one server to another.
- Infrastructure management as code.
- Changes to one server applied to all server automatically.
6. Source Control:
- Closely guard your software assets.
- Track changes with audit control.
- Store configuration along with code. Infrastructure as code.
- More control over changes in as infrastructure.
- Easy to troubleshoot issue when something go wrong.
7. Development Environment:
- Making sure all developers have access to same setup / configuration.
- Eliminate differences between production environment and development environment.
- Browser / cloud based IDE, see real time code change by others.
8. Continous Integration:
- Continuous and very frequent code merge in shared / main repository.
- Changed code gets tested by automated build tools against all integrated systems.
- Detect problem as early as possible.
- Making sure continuous deployment is reliable and less scary.
- Have whole build pipeline and configuration goes to production as a single package.
- Easily autoscale same setup many fold.
- Encourages great cooperation between Developer and Operation.
- You might never update an server but replace it with updated / new code & configuration.
Definitely some of tools listed above serve purpose of more than one category. So use your own analysis before choosing a suitable tool for you.
Automation tools help to get code changes from Dev to Prod within few mins. This is the power of DevOps automation.
DevOps is about continuous improvement, so does this post.
Hope you like it, please do leave comments here or discuss over Twitter.