.shock - Fotolia
IT outsourcing can save organizations a lot of money. However, before they outsource DevOps, enterprises must determine the specific process elements to outsource, as well as the degree of ownership and oversight they want to release or keep in-house.
Let's look at five phases of the DevOps lifecycle -- plan, build, test, operate and monitor -- and the outsourcing considerations associated with each.
Planning phase: Own your vision
To decide whether to outsource DevOps planning efforts, evaluate your cross-functional relationships and in-house DevOps expertise.
Review the current state of delivery planning inside your organization. Look at recent victories and complete post-mortems of the failures. Take stock of the relationships between the development, operations and business teams. Any outsourcing of the planning phase requires considerable oversight from internal managers and other stakeholders to maintain project ownership.
When IT teams outsource DevOps planning to a third-party service provider, it only exacerbates existing planning issues. Another option is to hire a contract Scrum Master or product manager with DevOps experience to work with the in-house teams. Either way, proceed with an end game of knowledge transfer to build in-house planning expertise.
Depending on the organization's attitude toward contractors, the addition of an outside contractor to work on planning can bring some cultural challenges. Some organizations treat contractors as valued members of the team, while others treat them as outsiders -- which makes it challenging to have a contractor in any subject matter expert position.
Planning tools, however, are ripe for outsourcing. For example, if an organization lacks the in-house expertise to implement and maintain Atlassian Jira or another planning tool, it can outsource that platform and use a managed version.
Build phase: Make it a family affair
While it's more common to outsource the build phase of DevOps than it is the planning phase, it still has risks. A large outsourcing provider means a loss of ownership and oversight. For example, off-site developers might be in different time zones, which can complicate communication. Outsourcing the build phase locally to multiple staffing firms makes it difficult to build cohesive teams focused on a single goal.
Protect your organization's intellectual property when you outsource any part of the build process. While it can be difficult to guarantee an outsourcer won't move onto another project and take your IP with them, ask your legal team to draft up a contract for the outsourcing provider to minimize risk.
Also, consider DevOps as a service (DaaS) as a way to outsource toolchain components for the build phase. This enables developers to experiment more freely with different toolsets.
You can't outsource culture
When an organization outsources DevOps, it doesn't adopt a DevOps culture. Don't dismiss the culture changes -- notably improved collaboration -- DevOps requires. Outsourcing only puts off culture change or, even worse, sends culture in a direction that's counterproductive to overall DevOps goals. Handing over too much ownership of DevOps processes is akin to giving away your vision and agenda to a third party that's less invested in your success than your own team and customers.
Testing phase: Provide leadership
Outsourced testing is attractive to organizations because testing and QA teams are routinely understaffed. Developers who must also perform testing often struggle to efficiently split their time between two tasks.
Organizations that continuously hire testers from staffing firms, however, must prepare for some turnover. Maintain documentation of established testing frameworks, and use this to guide contracted testers through the required testing regimen.
While testing as a service is an outsourcing option to explore, it doesn't eliminate the need for in-house testers. Instead, have senior testers on staff manage the relationship with the outsourced testing provider.
Operations phase: Find a balance
Organizations that use a public cloud to run applications automatically outsource some of their IT operations. Another option is to pursue a partnership with an established managed services provider (MSP) to operate the application. The MSP approach means handing over more ownership and oversight, but a service-level agreement (SLA) governs the operational services and metrics to expect from the MSP.
A middle ground to outsource DevOps operations is to augment the in-house ops team with contractors from a staffing firm. These interim staff plug into the operations team's org chart to bring needed skills, or even work the less desirable shifts.
Monitoring phase: Build a unified view
When deploying an application through a cloud service provider or an MSP, an organization must understand where its monitoring responsibilities end and the third-party provider's begin. Own most monitoring and reporting tasks, as a company rises and falls based on how it meets SLAs for customers.
Consider bringing in outsourced DevOps expertise to configure monitoring and reporting tools, but aim to transfer that knowledge ultimately to the in-house operations team. Also, the configuration of reporting interfaces might require some outsourced UX work.