Using multiple clouds is increasingly common in enterprise IT. But managing multi-cloud infrastructure can be daunting for IT ops. Extending the DevOps approach to multi-cloud environments can support and simplify application development, delivery and maintenance.
Incorporating DevOps into a multi-cloud strategy might entail some compromises for DevOps traditionalists. But such compromises aren't necessarily a bad thing. After all, the DevOps process can greatly democratize development and maintenance work in multi-cloud environments and help organizations build competitive advantage.
1. Implement a cloud management platform and self-service cloud brokerage
IT teams need a standardized toolset to manage and automate application deployment, scaling and monitoring across multiple clouds. Centralizing management and provisioning of all cloud services is integral to achieving this goal.
Self-service tools to implement and provision cloud services for application development are crucial when extending DevOps to a multi-cloud context. A well-crafted cloud brokerage includes detailed service catalog descriptions of each available cloud service, its dependencies and its pricing. This benefits both the service desk by relieving them of extra burden and developers by helping them work efficiently across environments.
The mark of a mature self-service cloud brokerage is automated cloud cost optimization, which keeps developers within budget and alerts them to lower-cost cloud service options. The brokerage should also deduct cloud spending from a preset project budget.
2. Create a centralized code repository
Create a centralized repository of infrastructure as code and application code with version control and collaboration tools, whether as part of an all-in-one DevOps platform or as a standalone tool that can integrate into CI/CD pipelines. Establishing this type of repository facilitates teamwork and code sharing across IT teams and cloud environments.
3. Commit to containers
While some organizations are already running software on containers, moving to a multi-cloud environment means it's time to commit to them.
Help developers adjust to containerized environments with these tips:
- Train developers in container development best practices.
- Develop a container playbook and related documentation that details how the organization creates and tests containers. Include policies about procuring third-party or open-source containers and scanning them for security vulnerabilities.
- Establish a secure container repository accessible to only authorized developers as well as QA and systems administrators.
4. Standardize on a cloud-agnostic approach to development
In a multi-cloud environment, IT teams might be tempted to stick with the features of each cloud service provider (CSP). However, building a multi-cloud infrastructure should take a cloud-agnostic approach to infrastructure and application design so that IT teams can use the same DevOps processes and code across CSPs.
5. Integrate DevOps thinking into a multi-cloud strategy
Extend the DevOps mindset to a multi-cloud environment by prioritizing agility, performance and automation.
Practice cloud arbitrage -- shifting workloads between CSPs -- to optimize multi-cloud infrastructure by taking advantage of higher availability, lower latency and negotiated discounts that keep applications compliant with customer service-level agreements. Maximize specific CSPs for applications by region and country to optimize workloads and reduce latency.
6. Capture and document team knowledge and policies
Update established DevOps processes, playbooks, policies, procedures and documentation to reflect how IT teams should work across multi-cloud environments. As a follow-up, provide IT teams with training to ensure they comply with the policies and follow the new workflows.
Don't just publish documentation and training to a central repository. Instead, look for ways to integrate documentation and training content into CI/CD pipelines so IT teams can easily access it throughout the project lifecycle.
7. Adjust DevOps tooling to multi-cloud environments
When implemented correctly, DevOps practices and tools should simplify software delivery in multi-cloud environments. One best practice is to standardize on one software delivery platform for IT teams. While this move seemingly goes against the freedom of choice characteristic of DevOps, it plays well into the advent of comprehensive, centralized DevOps platforms.
Even if an organization doesn't adopt a third-party platform to manage the full DevOps cycle, a multi-cloud environment still requires CI/CD pipelines to automate application building, testing and deployment.
8. Prioritize monitoring, observability and logging across multiple clouds
Multi-cloud DevOps also requires IT teams to have a real-time picture of toolchains and cloud environments. Achieving this level of visibility involves using monitoring, logging and observability tools to collect and centralize data from multiple clouds.
After implementing a monitoring practice, make data available to authorized technical and business stakeholders. Centralized dashboards offer quick access to actionable insights about application performance and availability across multi-cloud environments.
Managing environments containing infrastructure from multiple CSPs presents a strong use case for full-stack observability. Technology and business stakeholders -- and, importantly, security teams -- benefit from detailed views and reporting across multi-cloud environments.