Move to microservices and containers in the cloud
To accelerate its build-deployment cycle, Alaska Airlines turned to automation, microservices, containers, and Microsoft Azure. Microservices offered the logical solution to the problem of segmenting a big monolithic code base into smaller pieces. The e-commerce team could carve off specific functions and rewrite them as loosely coupled services that could be deployed independently.
Containers powered by Docker provided the ability to develop these microservices in isolated environments that could be quickly set up, used, and then torn down, increasing certainty that each deployment was on a clean slate.
With Azure, the e-commerce team gained a full-featured datacenter, with infrastructure purchased and maintained by someone else, and modern development tools at the ready. “We try to look to others for competencies that aren’t in our wheelhouse,” Feltis says. “Yes, we own datacenters, but we’re best at writing quality code. We are headed into a future where most of our website and other applications are in the cloud.”
The Alaska Airlines e-commerce team chose Azure because most of its code base is written in Microsoft ASP.NET and runs in Microsoft Internet Information Services (IIS). But it was also impressed with the breadth of Azure services and the extensive support that Microsoft provided. “We wanted to use a Redis cache, and getting that running on-premises wasn’t easy,” says Feltis. “But in Azure, with three clicks, we had it. We didn’t have to coordinate with other teams to set up new infrastructure and figure out how to maintain it once we hit production, and that’s a beautiful thing.”
Adds Debra Moore, Senior Product Owner at Alaska Airlines, “Azure is dynamic and constantly expanding. We needed a way to securely store our Docker images—and we discovered that Azure has a container registry. We needed a place to store passwords—there’s Azure Key Vault. We needed support for extremely small microservices with sub-minute deploy times—there’s Azure Functions. Having so many services available opens up ideas for new ways of doing things. We’re a .NET shop for the most part, but even when we venture outside the Microsoft stack for tools such as Node.js, we find great support for open-source tools in Azure.”
The only problem with using Docker containers was the fact that they are typically run in Linux environments, and the Alaska Airlines application relied on the full .NET Framework. The local Microsoft account team introduced the e-commerce team to Windows Server 2016 with Containers and Azure Service Fabric as a way to easily move the application into Docker with a Windows-based architecture in a way that delivered tremendous scalability. Azure Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage microservices.
“Microsoft really stepped up to the plate,” Moore says. “We had an all-day hackathon with Microsoft to understand how Azure Service Fabric would work for us. We also had an onsite Microsoft account person who worked with us and quickly connected us to product experts at Microsoft when we had questions. The support from Microsoft was top-notch.”
Alaska Airlines migrated its refactored ASP.NET/IIS code into Docker for Windows Server Containers, which runs in Azure Virtual Machines. Azure Service Fabric is the container orchestrator, managing the containers deployed to the underlying virtual machines. The solution also involves Azure Storage, Azure Virtual Network, Azure Redis Cache, Azure Functions, Azure Load Balancer, virtual machine scale sets, and Azure Application Insights.
The shopping cart application running in Azure accesses other parts of alaskaair.com running on-premises in Alaska datacenters, using Azure API Management to route calls to on-premises web services and vice versa. “Azure Service Fabric code works anywhere—on a local development workstation, on an Alaska datacenter server, in Azure, even in a competing cloud such as AWS,” says Feltis. “It’s a great hybrid enabler. Maintaining a hybrid cloud across our own environment and Azure enables us to migrate to the cloud at our own speed. While Azure has worked well for us, our hybrid strategy provides great peace of mind that we have our own datacenter as well as Azure, which allows us to build a resilient disaster-recovery scenario.”