If you decide to adopt DevOps, your first thought is probably how you can reorganize your company to make it DevOps-friendly.
But building a DevOps culture requires you think beyond just your organization. In today's DevOps world, your organization and its DevOps toolchain do not exist in a vacuum. The technologies and methodologies it uses are intertwined with external groups. An organization can use Atlassian to define and plan a project, and then use an open source configuration management tool like Chef or Puppet to launch it.
In other words, you should think beyond your internal workflows, processes and tools. By building a DevOps toolchain of easy to use external programs, you can get down to the business at hand -- making great software.
Here's how you should interface with external organizations and resources when building a DevOps toolchain within your own organization.
Your infrastructure is not your own
In a DevOps world, your organization depends on external groups and resources for the following reasons:
- Most of the applications you use are written by other people. If they're not, it probably means you're spending too much time developing your own, rather than reusing those created elsewhere. If you want to be agile and efficient, don't reinvent the wheel when it comes to tooling.
- Your applications contain code from multiple sources. There are hundreds of thousands of open source projects whose source code you can freely download and incorporate into your own software. Doing so saves you time and money, but it also means you depend on upstream projects for your software.
- If you use the public cloud, your infrastructure is not your own. You depend on a cloud hosting provider to implement and manage the environments on which your applications run.
- You may rely on contractors or partners to help deliver software. That means part of the personnel with whom you work directly are not officially part of your organization.
The list could go on, but you get the point: To be lean and efficient -- which is the main reason to adopt DevOps in the first place -- you should take advantage of third-party tools and resources, even if they blur the line between your organization and the rest of the enterprise.
Setting up your DevOps toolchain
If you take advantage of third-party tools and resources to help in building a DevOps culture and a DevOps toolchain within your organization, you should define a plan for integrating them in a way that protects your priorities and organization.
The following tips can help you do that:
- Have strong IT governance policies. IT governance and DevOps may not always seem to go hand in hand because governance implies rigidity while DevOps encourages flexibility and agility. But if you're going to rely heavily on third-party source code or infrastructure, you need a solid plan for deciding how and when to adopt those resources. Otherwise, you risk running into licensing issues when reusing upstream open source code, for example.
- Customize whenever necessary. Third-party resources are not a take-it-or-leave-it proposition. You can and should customize them to fit your needs. If an open source application comes close to meeting your needs, but doesn't quite fit, then revise it to do what you want. That takes some time, but not as much as writing your own software from scratch.
- Define roles flexibly. If you want to make the most of DevOps, the roles of everyone who participates in software delivery -- including not just your in-house IT staff but also independent contractors and vendor partners -- should be flexible. When engaging third-party personnel, keep in mind the importance of allowing them some leeway in how they interface with your organization. Otherwise, you run the risk of placing your teams within silos because they lack the ability to put their skills to use wherever they can contribute.
- Communicate! Communication is a priority for DevOps. While bringing third-party people and resources into your workflows makes communication harder, it's not impossible. Consider using shared Slack channels so that people inside your organization can share information quickly with third-party groups, for example.
If you want to be as agile and efficient as possible, your organization can't exist in a bubble. You need to take advantage of external tools, code and personnel to help implement DevOps within your organization. While third-party resources can make workflow more complicated, they can be integrated in an effective way.