We knew from the beginning when building RemoteSpark there would be customers that would require an on-premise solution either due to disconnected/remote requirements or data governance policies. This meant we had to balance the features we used in the Azure Cloud vs what Azure services are available in Azure Stack. Azure Stack has a sub-set of the Azure Cloud services that can run on your own computer network. Many Azure services that are not supported can be installed in your own Virtual Machines (VMs) – (like Linux and Windows) and managed by your infrastructure team. As a developer, I prefer Azure services because it handles items like scale, patch management, and redundancy, but if I need to run services like MongoDB or Redis Cache, VMs are ok.
Question: If you have to run many of your services in VMs and manage that infrastructure, why use Azure Stack?
For us, our core services use Azure Functions, Azure Storage, and Azure Cosmos DB (MongoDB) – which reduce the need for infrastructure configuration and management. Azure services also are easy to scale and geo-replicate. Azure Stack is adding services continually, and the ones we are currently running in VMs will soon be first-class Azure services (like Azure Cosmos DB).
Why not run it all in containers or VMs? That is the subject for a future blog.
The first step in testing was to determine if our solution was compatible with Azure Stack. This meant provisioning VMs for services not available on Stack (yet) in the cloud to simulate how it would be running on Azure Stack. This included MongoDB, Redis and Active Directory (not AAD).
The testing went well, so next it was time to run it on an Azure Stack – in our case, an Azure Stack Development Kit (ASDK) server. Our Microsoft Partner Manager connected us with Damir Bersinic, a Microsoft Global Azure Stack Black Belt. He graciously offered to come on-site to help us provision the Azure Stack Development Kit (ASDK) on a shiny new physical server at our office. A physical server? How 1990’s. The Microsoft website says you need a computer with 96 GIGS (GIGs!!) of RAM but recommends 128 GIGs of RAM. Well Damir said 256 GIGs, and I don’t argue with black belts of any kind – time to go shopping!
Damir reached out to various Azure Stack OEM partners to see who could help us provision a suitable server. I have not purchased a server in many years (all cloud, baby!) and certainly not one with 256 GIGs of RAM. Lenovo reached out, and I had breakfast with their DCG Channel Account Manager Joe Kranitz. We discussed a great offer they had to get us jump-started with purchasing a server to get rocking. We landed on a Lenovo ThinkSystem ST550. The amazing thing about this server is that it’s all solid-state drive (SSD), so it’s super quiet. I remember servers of old that could wake the dead!
Paul Archer, our Senior Infrastructure Manager, spent a few prep days under Damir’s virtual direction to configure the box before his visit to our Fredericton office. There were a few gotcha’s and we were grateful for Damir’s support getting our first ASDK server running. By running our software on the ASDK, it’s guaranteed to run on a full-blown Azure Stack install. RemoteSpark running on Azure Stack will allow customers to add the power, scale, and security of the cloud right on their own networks. This allows our developers to focus on writing code instead of worrying about where it is deployed.
Once ASDK was fully installed, we could launch the Azure Portal, which looks just like the one on Azure Cloud. Our developers could even publish from Visual Studio, right to the Azure Functions on our development Azure Stack. We now have a mini-cloud right in our office! Great work Damir, Paul and Hamdy.
Kognitiv Spark is a Microsoft Mixed Reality Partner who builds innovative holographic applications, but we are also deep into Azure so we can deliver secure, industrial-strength applications with the power of the hybrid cloud.
If you have any questions feel free to contact me on Twitter @RyanGroom.