This blog post was co-authored by Steve Buchanan, Cloud & Datacenter MVP.
DevOps focuses on aligning culture, people, processes, and technology. It is sometimes thought that the technology part does not play a critical role in DevOps. This is wrong! Tools and technology help facilitate DevOps methodology and processes. Having the wrong tools and technology when trying to roll out DevOps can make it a challenge and can even become a blocker. Cloud platforms enable DevOps and are often the catalyst for rolling out DevOps. A recent Gartner report says that 75 percent of organizations plan to pursue a hybrid cloud strategy. An organization that implements a hybrid cloud strategy will need a consistent DevOps model across both an on-premises and public cloud. Microsoft Azure Stack extends Azure cloud services and capabilities to the on-premises environment, which is why it is so valuable for DevOps. Now let's dive in to see what DevOps on Azure Stack looks like.
Azure Stack and Azure give you the ability to stand up a hybrid continuous integration/continuous development (CI/CD) pipeline. With hybrid CI/CD, workloads can land on either an on-premises or public cloud, and they can be moved. Code that’s written for Azure Stack is interchangeable, so apps and services can be developed in a consistent way across public and on-premises clouds.
Azure Stack offers IaaS, PaaS, SQL as a service, container technology, microservice technology, and IoT capabilities. Services that exist on Azure PaaS that also exist on Azure Stack include App Service, Azure Functions, Service Fabric, and Azure Kubernetes Service (AKS). These services are often used when developing and running modern applications, which are typically developed and maintained by DevOps teams using CI/CD. Azure Stack supports the same non-Microsoft and Microsoft-based DevOps tooling that Azure does, including Git, GitHub, Visual Studio, Bitbucket, OneDrive, and Dropbox. You also can use another DevOps tooling with Azure Stack such as GitLab, Octopus Deploy, Jenkins, and many more. Below is an example of a hybrid cloud CI/CD pipeline.
Azure Stack also serves as a good hybrid platform for infrastructure as code (IaC) and configuration as code (CaC). IaC is often facilitated through using Azure Resource Manager (ARM) to deploy infrastructure both on IaaS and PaaS. Regarding IaaS, the ARM can be used to deploy the infrastructure needed by applications such as virtual machines (VM), networking, and storage. You can also use non-Microsoft IaC tooling such as Terraform, which was recently announced to support Azure Stack. By taking advantage of CaC tools, you will be able to further configure servers and the applications running on those servers. For CaC, you can use Microsoft and non-Microsoft tools such as Desired State Configuration (Microsoft-based) or Chef, Puppet, and Ansible (non-Microsoft).
In my experience of managing environments, IaC on-premises has usually been a challenge. This has been a challenge even with the introduction of the hypervisor because of having to rely on scripting that was not initially designed for server management. PowerShell made this easier on the server level for sure, but automating the network and storage required other methods. Likewise, CaC became a little easier with the introduction of tools like Chef, Puppet, and PowerShell DSC.
Having a true cloud such as Azure Stack on-premises is exciting because it is complemented by ARM on-premises. I can take advantage of ARM on-premises to automate at all three levels of server, storage, and networking. Having the combined power of ARM with CaC tools completes the picture. Being able to have actual end-to-end cloud on-premises just like we do in the public cloud, gets us developers and IT pros closer to the IT nirvana we have all been waiting for.
In addition to the hybrid CI/CD with Azure Stack, you can share other services across Azure and Azure Stack for a full hybrid cycle. These services include Azure Active Directory for identity, VPN/ExpressRoute for connectivity, and Azure Site Recovery for DR.
A common use of hybrid CI/CD is to use either Azure or Azure Stack as the test environment and the other as the production environment. For example, you can develop and deploy a web application to Azure App Service for testing and move it to App Service running on Azure Stack for production when ready. You can do something similar when you have an application that is containerized running on Kubernetes. The containers can be developed locally by pushing them to Azure Stack when ready for testing, and then pushed to Azure for production. All running on Kubernetes the entire time without any changes.
You can deploy a set of IaaS web server virtual machines, blob storage, a SQL database, virtual network, subnet, and a load balancer to Azure for development, while also deploying to Azure Stack at the same time for production. Then you can deploy the web app code to IIS and a SQL DAC package to Azure SQL on Azure and Azure Stack.
In my current role, I am fortunate to get the opportunity to help organizations that are looking to digitally transform but are not able to put all their workloads in a public cloud. This is no longer a blocker because now we can bring the cloud platform that will foster DevOps directly into their datacenters.
Currently, I am in the early stages of helping an organization architect a hybrid app that spans on-premises (Azure Stack) and public cloud (Azure) environments. This will enable the organization to deploy most of the application in a public cloud while leaving highly regulated parts of the application on-premises. The beauty here is that it’s the same exact platform across both and the developers only have to write the code once.
As we’ve seen, Azure Stack is valuable for DevOps because it ties on-premises and public cloud environments together. This gives organizations the ultimate agility in landing modern applications where they want them to go, as well as the ability to move those modern applications as needed.
Get started today
Try DevOps on Azure Stack for yourself with these helpful links: