If you are seeking to adopt a hybrid-cloud strategy, you might want to evaluate alternatives to OpenStack. Azure Stack is a commercial solution you can use to extend the Azure public cloud to the local data center. It is a common alternative to OpenStack when deploying hybrid clouds. In this article, I explain the basics of Azure Stack and how it compares to the OpenStack platform. (BTW: We stick to our promise to deliver the world’s most adaptable and autonomous software delivery platform. With Kubermatic Kubernetes Platform you can go either way. So completely up to you and your specific use case).
What is Microsoft Azure Stack?
Microsoft Azure Stack is an integrated platform that provides Microsoft Azure public cloud services in a local data center. Organizations can use it to create a hybrid cloud, or for migrating cloud resources between on-premise and public cloud infrastructure.
Azure Stack provides both platform-as-a-service (PaaS) and infrastructure-as-a-service (IaaS) within an on-premise data center. Azure Stack shares its APIs, management portal, and code with Microsoft Azure to provide a hybrid cloud environment that behaves consistently between on-premises and Azure cloud environments.
That means that developers can consistently create and deploy their applications to either the public Azure cloud or their private cloud. Azure Stack places a range of Azure services on-premises, including Azure App Service, Azure Virtual Machine Scale Sets, and Azure Active Directory for identity management.
Azure Stack vs OpenStack: Key Differences
One central difference between the two platforms is the way they build out a private cloud.
Azure Stack takes public cloud computing services and extends them into data centers on-premises. Your organization can run services you would typically run in the public cloud, such as Azure Virtual Machines—using on-premises hardware. Your organization can also use the management and monitoring tools it uses in the public cloud.
OpenStack is not tied to any specific public cloud platform. Rather, it lets organizations run their own cloud services employing OpenStack modules, which provide a wide range of functionality, and components, which provide the core infrastructure functionality for an OpenStack private cloud.
Azure Stack provides the following storage options:
- Blob storage — used for unstructured object data. A blob can be any sort of binary or text data, including an image or video file, application files, or documents.
- Table storage — suitable for structured datasets, implemented as a NoSQL key-value data store.
- Queue storage — offers dependable messaging for workflow processing and communication between parts of cloud services.
OpenStack provides the following storage options:
- Object Storage — the OpenStack Object Storage service (Swift) provides an Amazon S3-compatible API and a native OpenStack API. It offers resiliency through data replication, and can deal with petabytes of data.
- Block Storage — the OpenStack Block Storage service (Cinder) offers persistent block storage for compute instances. The Block Storage service manages the complete lifecycle of block storage devices, from the development and attachment of volumes to instances, through to their delivery.
- Shared File Systems — the Shared File Systems service (Manila) manages shared file systems in a multi-tenant cloud environment. With the Shared File System service, your organization can create a remote file system, mount the file system on compute instances, and write and read data from the instances to the file system.
Azure Stack charges based on the cloud services used (see this comprehensive guide to Azure pricing). Typically, these fees are less than what your organization would pay on the Azure cloud, because you are hosting the infrastructure on-premises. But you are still charged for data egress, licensing (for Windows VMs and commercial databases), and other typical cloud costs. This means the total cost of ownership of Azure Stack is likely to be higher than OpenStack.
OpenStack is an open source platform, meaning it is free to download and use in its original form, and there are no ongoing fees for cloud services. Your organization can opt to deploy OpenStack using a managed solution or commercial distribution, and receive enterprise support. But even so, licensing and ongoing service fees will probably be lower in comparison to Azure Stack.
At the same time, OpenStack is a highly complex ecosystem of open source projects, and an OpenStack project is a major undertaking for any organization. Several developers would have to work for months to set up a large-scale OpenStack deployment. This is in contrast to the Azure Stack solution, which comes fully integrated out of the box.
- Hardware Compatibility
Azure Stack requires organizations to purchase hardware that is certified for the platform. This severely limits the ability to reuse existing hardware resources, and scale up using commodity hardware.
OpenStack runs on any hardware, making it easier to build a private cloud with existing infrastructure. Organizations can add new infrastructure to the private cloud on a continual basis, by repurposing existing resources or purchasing new commodity hardware.
- Lock-In and Multi-Cloud Support
Azure Stack is connected to the Azure public cloud platforms. An organization can easily move workloads from Azure Stack to Azure, but not to other public clouds. This means that effectively, organizations are locked into the Azure cloud. On-premises, Azure Stack has demanding hardware requirements, and in many cases has to be deployed on Microsoft-certified servers.
OpenStack provides more flexibility on-premises, as it can be deployed on almost all types of on-premises hardware. However, OpenStack is difficult to integrate with public clouds (Azure or otherwise). It does not provide multi-cloud capabilities, so while it does not lock you into a specific public cloud, it also doesn’t make cloud portability easy.
In this article I reviewed the key differences between OpenStack and Azure Stack:
- Architecture - Azure Stack is an extension of Azure’s public cloud infrastructure, while OpenStack is composed of several open source projects.
- Storage - Azure Stack runs Azure storage services on local resources, while OpenStack uses its own storage solutions - Swift, Cinder and Manila.
- Cost - Azure Stack charges for its services, even when they are running on local infrastructure, while OpenStack is open source.
- Hardware compatibility - Azure Stack requires specific, certified hardware while OpenStack can run on any hardware.
- Multi-cloud support - Azure Stack only supports Azure, while OpenStack can run on any on-premise data center infrastructure.
I hope this will be of help as you evaluate Azure Stack as an alternative to OpenStack hybrid cloud deployments. Just let us know in case you want to discuss what hybrid or multi-cloud strategy suits you best.