The benefits of DevOps are immense as can be seen here, here, here and many other similar examples. Although many of these reports were created by vendors who sell DevOps products, the data is still undeniable. DevOps can result in huge productivity boosts, cut costs, improve morale and come with host of other benefits. However an organization steeped in a traditional development and deployment model which wants to leverage the benefits of DevOps, a sudden change can be quite jarring. Instead of jumping headfirst into DevOps, such organizations can attempt a gradual evolution with iterative improvements on their current state.
Two of the biggest bottlenecks that any project faces, in terms of delivery times, are testing and environment provisioning. Organizations can start by looking at their current state to identify such bottlenecks. Once an organization has a list of bottlenecks and problem areas, that they have identified, they can start implementing solutions to these problems which will allow them to get on the path of DevOps and reap the benefits. Below are some points that all organizations, small and large, can implement.
- Automate your builds. Automating your builds is the first solution that an organization should put in place. Don’t just stick a Continuous Integration server on the network. Come up with a framework that makes all the builds manageable, traceable and duplicable so that you never have to store binaries again. Then make all your projects adhere to this framework. This server can also act as your source of truth and the source for all your dependencies.
- Automate your testing. Slowly start moving towards Test Driven Development (do research the pitfalls first). Writing Unit Tests for your code is a must. Writing functional tests is also a necessity. Integrate this testing process in your build automation. The more your testing is part of your automated build, the less time QA will spend testing your software thus reducing your time to marked. The obvious advantage of this is, if a test fails developers get immediate feedback and can fix the issue.
- Use virtual environments. Move all of your development and testing gradually into virtual environments. This will allow your to provision your environments quickly and reduce your reliance on physical environments. If any of your applications rely on physical boxes, investigate why and try to eliminate that reason. After that start looking into tools like Docker and Vagrant that allow you to spin up environments quickly for development and testing. Separate your data from your application thoroughly. You have just taken your first step to establish a Continuous Delivery Pipeline.
- Consider using cloud. Consider moving your applications to cloud. Cloud has many advantages the biggest of which is scalability in both directions. This means when you are done using servers you can always scale down. With cloud you can also give provisioning rights to individual groups and monitor and meter their access. If you have requisite hardware, you can also consider deploying your own private cloud like OpenStack. It does not take much to deploy and the advantages are huge.
Using these simple steps organizations can start on the path to DevOps. Many organizations already have parts of these solutions in place and never realize it.
Many of these solutions and more plus a cultural perspective can bring the Devs and the Ops of an organization together for a harmonious DevOps.