In the public cloud, “design patterns” have emerged as a popular concept for defining cloud strategies tailored to specific use cases or goals. Microsoft offers a series of design patterns for Azure, for example, and practitioners have adopted similar strategies for AWS.
To date, however, there has been less discussion of design patterns for private cloud. That’s perhaps because some folks still think of private cloud as an outdated type of cloud architecture that has lost most relevance for modern needs.
In fact, however, the use cases for modern private clouds have become as diverse as they are on public clouds. For that reason, it perhaps makes sense to think about private cloud design patterns as a way of defining design strategies that allow modern private clouds to cater to a variety of use cases.
What is a Cloud Design Pattern?
Design pattern is a generic term, with somewhat different means in different contexts. In general, however, it refers to strategies for combining different types of cloud services together in order to achieve a desired goal, or enable a specific use case for the cloud.
Design patterns are not specific, step-by-step instructions for building a cloud. Nor are they cloud services unto themselves. They are instead broad guidelines for which types of services and configurations to use.
The purpose of design patterns – as they are used in the public cloud, at least – is to help users make the most out of all of the services and tools that are available in the cloud. With so many different ways to design and configure a cloud, it can be daunting to determine which approach is best for meeting a set of end goals. Cloud design patterns provide guidance.
Private Cloud Design Patterns
Again, the cloud design pattern concept so far has been used mostly in the context of public cloud. But given that modern private cloud, too, is also a space where a host of different technologies, services and architectural strategies are available, design patterns can help teams to navigate the complicated ecosystem surrounding today’s private clouds.
As examples, consider the following design patterns for private cloud, which reflect that range of use cases that private cloud can now support.
Workload privatization and security
The classic use case for private clouds is to keep workloads private and more secure by running them on on-premises infrastructure but consuming them as cloud services.
To get the most value out of a private cloud for this use case, it’s important to be able to run the cloud on any type of x86 server, so that you don’t need to acquire new hardware to host your cloud. You also want to have the flexibility to expand your infrastructure easily in the future. And for a modern private cloud, most companies would place a priority on the ability to run any kind of cloud service (compute, storage, serverless functions, etc.) on their on-premises infrastructure.
For this use case, a design pattern focused on an open source hypervisor, like KVM, will provide the flexibility and broad hardware compatibility desired. OpenStack also offers a flexible platform for turning on-premises infrastructure into a private cloud, without limitations on hardware compatibility or the types of cloud services that you can host.
Sometimes, you want to build a private cloud that gives you more control over how the cloud runs while still achieving resiliency and high availability. Historically, when you could run a private cloud only on on-premises infrastructure, this was difficult, because on-premises infrastructure was less likely to be as resilient as the public cloud.
Today, however, it’s perfectly possible to take a platform like OpenStack and build a private cloud using public cloud infrastructure. This design strategy in itself will increase resiliency, but you can double down on that characteristic by taking advantage of features like automated failover of virtual machines. Or, consider deploying Kubernetes on your private cloud to take advantage of its built-in resiliency features.
If performance is a priority for your private cloud, you’ll want a design pattern that optimizes the resource allocations and efficiency of the workloads hosted on it. Containers and serverless functions, which can be run on top of OpenStack, would be a good tool to use in this scenario, because they deliver better performance than virtual machines.
The ability to provision your private cloud using any and all of the servers available to you (as opposed to relying on a framework that requires you to use certain hardware with the private cloud), also improves performance by maximizing the hardware resources that can be devoted to cloud workloads. OpenStack is advantageous in this respect because it can work with virtually any modern server.
For minimizing private cloud costs, a design pattern focused on open source technologies is a good place to start.
That said, it’s important to assess the total cost of ownership of open source platforms that you incorporate into your private cloud, so that you don’t end up spending more on management costs and lost productivity than you gain through the low (or non-existent) price tag of open source components. Toward this end, think about the day-two cost of open source platforms you deploy as part of your private cloud design, and have a plan in place for managing those platforms over the long term.
There are many ways to design a private cloud today. The best approach for your needs depends on what you aim to get out of your private cloud. The private cloud design patterns described above offer some general guidelines of how different technologies and design strategies can be combined to achieve various goals with a private cloud.
This is by no means an exhaustive list, but just as public cloud design patterns provide useful starting-points for thinking about how to architect a cloud in that context, design patterns for private clouds can help teams navigate the complex ecosystem of proprietary and open source private cloud technologies and ensure that they choose the best solutions for their needs.
Why do Private Clouds Fail but Public Clouds Work?What if private clouds were 10x easier to deploy, manage, and scale and required no specialized skills or know-how? In this whitepaper you’ll learn about:
- How to replicate the public cloud operating model in a private cloud
- A breakthrough model for managing private clouds
- Kubernetes Networking – An Implementer’s In-depth Guide [Webinar 2 Recap] - October 14, 2020
- Kicking off your Kubernetes Implementation Project Successfully [Webinar 1 Recap] - September 16, 2020
- Kubernetes: Do It Yourself (DIY) or Do IT Together (DOT)? - September 4, 2020