Organizations that make the leap to DevOps and CI/CD must undergo sometimes drastic cultural and technological changes.
Regarding personnel, adaptation must be made all the way from individual taskings to the way the whole company is run. As one expert put it, “DevOps is not just a movement of operations toward development practices, it’s also a movement of development toward operation practices”. To make this happen, enterprises need to enlist various soft skills.
On the other hand, significant organizational changes tend to demand technological upgrades, and this is especially true in the world of DevOps, continuous integration, and continuous delivery. Actually, in my experience, companies that attempt a huge shift like DevOps (properly done, that is) must put tools on an equal plane with cultural change.
The list of tools required for an effective DevOps transition isn’t exactly short, so I’ve boiled it down to seven categories and a few specific recommendations for each. Of course, individual enterprises will have their own racks, so I invite you to regard these products and services as a starting point for your own research.
These tools have the job of verifying code quality before passing the build. Enterprises that use these tools will benefit from higher quality due to a more rapid feedback loop, and experience a faster path to the desired “definition of done”. Recommended vendors in this space include Selenium, TestComplete and others.
Continuous integration tools enable an immediate feedback loop through a process of regular code merging. Combined with the responses from automated testing tools, CI tools permit the efficient merging of developed code many times a day. Well-known providers of CI tools are Jenkins, Bamboo, TeamCity and others.
This technology is vital to enforce desired state norms and achieve consistency at scale. Configuration management tools allow infrastructure to be treated exactly as code that can be provisioned and configured in a repeatable manner. Moreover, avoiding configuration drift across environments will save valuable time and eliminate the substantial problems caused by an application functioning in one environment but not others. Check out configuration management tools provided by Puppet, Chef, Ansible and more.
- Deployment ToolsDeployment tools are essential for production in an effective DevOps environment, where application deployments are rendered frequent, predictable, and reliable. Continuous delivery enables enterprises to release applications to production at any time, in increments or whole batches, and optimize time to market while minimizing risk. Vendors in this area include IBM uDeploy, CA Release Automation, Azure DevOps, XebiaLabs and many others.
Nothing is perfect, even in DevOps, so when something seems amiss, these tools provide responsiveness and visibility in the process of eliminating glitches. It’s important that all teams use the same issue tracking tool in order to unify both internal and customer generated issue tracking. My recommendations for this tool include Jira and ZenDesk and others…
When it comes to an enormous range of activities, including coding, configuration, documentation, database administration, compiled resources, and even your website’s HTML, you need one source to gain an accurate image of how code changes are being implemented. From that point on, build when required. Take a look at GitHub, AWS CodeCommit and additional ones.
You might be doing a great job of managing source code, tasks, configuration, and deployments, but that’s not enough if you ignore the database. Database errors are often much more difficult to locate and fix than application code problems, and the risk for data persistency is much greater, so database DevOps is simply good sense. Using specialized database DevOps tools such as enforced database source control, database build automation, and database verification processes will ensure that your database is a stable resource. Check out DBmaestro.
It still amazes me to see that so many enterprises have not yet implemented universal continuous delivery. According to our survey, more than three quarters of enterprises have adopted CD for application development, but only about one-third have done so for databases. For the other two-thirds, the decision to skip the database is a perilous one.
I also keep track of industry horror stories, which amaze me as well. The name Salesforce came up recently in a discussion – remember that one? It’s estimated that database downtime cost them about $20 million a couple of years ago, and that’s for just one event. Compare that with the relatively inexpensive move to database automation, and the choice is clear.
Interested in learning more about the challenges, methods, and best practices of database release automation? Click here.