Azure offers several different options for dealing with cloud workloads. The first option I always think about is elastic compute and storage — dynamic compute and storage resources. This option is often referred to as Azure Stack, which is the logical first step for companies that want to move to Azure.
If you are building a typical Azure web application — for example, a CRM application, website, or e-commerce site — there is nothing to configure or manage. You just provision compute and storage to use with Azure Stack. You do this by creating a highly available and managed container running on your hardware — on Azure or Azure Stack.
Based on the work I've done in this area, I can tell you it is exciting. There is a ton of work that has to be done here. Most companies will choose to create their container-based IaaS running on Azure — which is what I did.
If you want just to build something that requires a lot of computing power, you might just not bother. Maybe you will be happy to go with one of the several container-based IaaS providers in the market.
How Are You Leveraging Cloud Design Patterns to Scale Your Development and Testing Environments Across Azure and AWS?
For our first production projects with Azure Stack, I decided to use Microsoft's Desktop App Server (DAS). We have been doing a lot of work in virtual machine-based development for Azure, so this seemed like a natural way to take advantage of the general nature of virtual machines. It appeared that since you can switch resources on and off in virtual machines, it would be natural to change resources on and off on a shared virtual machine type like DAS in Azure.
So that was the first port of call for my development teams. I have used Tomcat (and many other cloud-based offerings) for testing, and I have to tell you it is not exciting, but you have to do it and do it as quickly as possible. We are now well settled into what is required to perform full-scale unit and integration testing against Azure Stack.
Have You Added Support for Docker With Azure Stack? How Can You Do That?
With Azure Stack, you can use the native Azure Command Line Interface (CLI) to provision Virtual Machines, IaaS, and Block Storage (blobs) to Azure. You are not limited to just using the CLI to provision VMs and storage—you can use PowerShell or PowerShell Remotely (PowerShell on Windows and PowerShell on Mac).
Using the Azure Command Line Interface to provision VMs and storage is powerful and gives a very slick and easy interface for many more common tasks. The Azure Command Line Interface does not allow you to access networking or modify the network settings. Therefore it is called a "command line" interface or CLI, not an app, but there is a ton of functionality in the Azure CLI that you can access in Azure Stack, and you can use this for many of the standard management tasks.
For example, I can launch containers in Azure Stack from the Azure CLI, and I can then use the CLI to restart a container and even access the run-time environment to run a virtual machine or start a new container. This is precisely the sort of thing you would be able to do with a tool like Puppet. You can also write scripts against an Azure Resource Manager (ARM) inventory. If you have a JSON file describing an Azure Stack VM or cluster, you can use the Azure CLI to get an ARM instance running. The Azure CLI allows you to use JSON in all sorts of clever ways to connect a complex set of infrastructure, including management of cloud platforms, container-based IaaS, and database storage.
In this respect, it seems that Azure Stack fits a similar concept to AWS EC2 Container Services, providing a layer over which you can manage and deploy both virtual machines and containers. Azure Stack also has a few other goodies that AWS EC2 Container Services does not have, such as access to both Azure HDInsight and Redshift and to Windows Server Identity Protection, which is also known as "Bring Your Security" (BYOS). This feature gives you the option of using a cloud-based VPN service, similar to a provisioned VPN in AWS, which you can then configure to connect with Windows machines inside your organization.
This capability is neat, but it is not as well-integrated as AWS EC2 Container Service. However, with the arrival of Azure Stack, the future may provide some exciting options for your hybrid or private cloud.
Any Other Advice to Azure Stack Developers, Either for Those Looking to Use Azure Stack or With the Help of an Azure Stack Expert?
One of the biggest reasons people have chosen to go with a public cloud platform is to leverage its API ecosystem. Azure Stack is not only a full-fledged Linux operating system, but a full-fledged Azure application platform is also something that most Azure Stack users are going to find very interesting.
One of the more exciting parts of the Azure Stack architecture is that, unlike Azure VM, Azure Stack operates by stacking pieces of infrastructure together. The same stacker that supports resource allocation manages the configuration of VMs and storage and management of identity features, also supports application stacks. The underlying technology does not change, but what your application does and how you are using it can vary based on where it runs in the stack.
What is the Easiest Way to Update or Install/Upgrade Azure Stack?
You perform the deployment, configuration, and management of Azure Stack using the same Azure Management Portal used to deploy VMs on Azure. You can perform administrative actions in the Azure Management Portal as you do with VMs. For example, you can upgrade a base image with just a click, migrate to a different Azure Stack environment, or deploy an application.
You can deploy Azure Stack in any cluster size of the customer, but the recommended cluster size is about 15 to 30 nodes. If you have multiple clusters, you can connect those clusters and create an extended environment. That way, you can run a scenario with a local testing environment and test a workload on a public cloud platform or another on-premise Azure Stack environment.
How Can You Get Started in Azure Stack?
Azure Stack has been offered as a preview offering for several months, but generally, it has been available only to customers who are "Cloud Partners." The reason for this is, until recently, most organizations have tended to shy away from "Virtualization and Serverless" infrastructure due to concerns raised by the hardware industry. In addition, given the technical challenges and difficulties in deploying and operating a fully managed virtualization platform, most customers simply have not taken advantage of what a fully managed Azure Stack would allow them to do.
To help overcome this limitation, Microsoft has decided to open up the Azure Stack offering to all customers. So now you can contact Microsoft and go through a bit of a "provisioning dance" to get Azure Stack up and running.
What is the Pricing for Azure Stack?
Azure Stack starts at $500 per core per month, based on a 15-node minimum. When you factor in the additional services such as IP address space, VPN services, storage space, and compute resources, the actual cost of a basic Azure Stack service is typically a bit higher. You can go up to $1,800 per core per month.
As you can see, even if you are a small business that just wants to use Azure Stack to test out a private cloud deployment, you can quickly end up spending $6,500 to deploy Azure Stack. I should also note that this does not include the Azure IaaS and PaaS services that you would use with Azure Stack, nor does it have Microsoft's Enterprise E3 and E5 products, although Microsoft does provide a free trial for both.
Additional pricing can be calculated based on the number of compute nodes in your deployment. For example, a 100-node deployment could price out at $25,000 per month.
Please note that the prices I am quoting here are for an Azure Stack deployment. That does not include the services from Microsoft that you might pay for separately. Microsoft will also be offering both "Software and Containers" and "Compute and Serverless" versions of Azure Stack for use with Azure IaaS and PaaS. However, for now, these products are still in preview and not available to non-Cloud Partners. In addition, you can also run Azure Stack with Power BI, but this is still a preview offering, and we are working to bring it to GA.
When Do You See Public Clouds Offer Azure Stack Support?
The short answer is that no public cloud has native support for Azure Stack today. While some open-source or community-developed offerings for Azure Stack support Microsoft's cloud platform, each of these platforms has slightly different functionality and hardware requirements.
There are exceptions. Amazon Web Services (AWS) has been working on adding support for Azure Stack for over a year and has now provided an announcement that they are preparing to ship a "portal" for Azure Stack users that enables their existing AWS services to be used with Azure Stack. So although you are not yet able to run Azure Stack on AWS, you can use this as a way to develop scenarios that you might later run on AWS. Similarly, for a long time, VMware has offered versions of VMware NSX (and for some time before that) that support various types of cloud environments. Given that VMware has been working to drive the standardization of the hypervisor as a whole, it is not surprising to see that VMware NSX supports Azure Stack today.
As I write this, only Amazon AWS and Microsoft Azure have announced native support. As for why Microsoft has chosen to open up the Azure Stack offering to all customers, they have some very compelling reasons for doing so.
To gain a deeper understanding of the various cloud computing platforms, including Azure, AWS, and Google Cloud, check out the Post Graduate Program in Cloud Computing. This comprehensive program, offered in partnership with Caltech CTME, also covers the tools and skills for implementing and managing cloud solutions.