Alaska Airlines makes shopping easier with faster flow of new e-commerce features
A great online shopping experience begins with great software, and Alaska Airlines is using microservices, Microsoft Azure, and Windows Server Containers with Docker to launch new e-commerce features faster—in minutes versus days. Travelers get new offers sooner, which in turn translates to happier customers and higher revenues. By running its e-commerce engine in Azure in hybrid fashion, Alaska can also scale more easily and cost-effectively, ensuring its sites run at the optimum point of performance and cost.
Launch new services faster
It’s clichéd but true: in e-commerce, the competition is only a click away. In fact, when searching for the lowest airfares online, many customers launch fare searches on multiple websites at once and compare the results. Airlines have to provide the fastest, most intuitive, coolest-featured shopping experiences if they want to win the business of today’s impatient, tech-savvy fliers. Alaska Airlines is leading the way by using ground-breaking software development techniques to create digital touchpoints that its customers love.
Alaska Airlines, together with Virgin America and its regional partners, flies 44 million customers a year to 115 destinations across the United States, Mexico, Canada, and Costa Rica. Alaska Airlines ranked “Highest in Customer Satisfaction Among Traditional Carriers in North America” in the J.D. Power North America Satisfaction Study for 10 consecutive years. You don’t remain a high-flyer for years at a time without paying scrupulous attention to detail in every aspect of the customer experience, from online fare searches to inflight comfort to on-time arrivals. With nearly every aspect of airline operations computerized, it’s imperative that Alaska be world-class at not only delivering passengers but delivering software.
“Our market is incredibly competitive, and we’re constantly forming new airline partnerships and offering new services to stay out front,” says Ralph Feltis, Senior Software Engineer, E-Commerce, at Alaska Airlines. “We want to get new offers and online shopping functionality into customers’ hands as soon as possible and to make the shopping process as seamless and fast as possible.”
Feltis’s team is responsible for every aspect of the Alaska Airlines online shopping experience, including driving people to the storefront (alaskaair.com), running city and fare searches, supporting ticket purchasing, and handling baggage payments. The shopping cart application that handles all this is one of the airline’s biggest and most critical software applications, which requires high performance and uninterrupted availability.
Keeping its e-commerce engine fresh and innovative requires not only rapid software development but also rapid deployment of new code into production. And while Alaska has made steady progress at speeding up this build-deployment cycle, it wanted to go even faster.
In 2014, the e-commerce team required about a month to get new code into production. Over a period of two years, it whittled that down to a week—great progress, but Feltis and his colleagues knew that they could do better.
The impediment was that alaskaair.com is a large monolithic application (as are most e-commerce websites) and deploying just one new feature required redeployment of the entire site—which required days of quality assurance and testing.
“We knew that to move faster, we had to replace this complex, monolithic application with smaller chunks of code that we could improve on a faster cadence,” Feltis says.
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.”
Push code faster to make customers happy
The Alaska e-commerce team uses Azure DevOps (formerly Visual Studio Team Services) for some of its development and for deploying Azure infrastructure and software. “We’ve found it very easy to modify our release pipeline for microservices using Azure DevOps,” Feltis says. “Getting code out to different platforms from Azure is very easy, whereas deploying code in our datacenters requires a lot more effort and coordination. When we release code to Azure, it’s one click to production. Distributing that code to all our production servers takes eight or nine minutes with Azure Service Fabric versus two hours on-premises.”
This speedup translates into faster delivery of new website features to customers, which translates into happier customers and healthier revenues.
“I recently made some user interface changes to highlight new fares,” says Moore. “Normally, it would take a full day to push all the code out and several more days before the entire AlaskaAir.com codebase could be redeployed. But with Azure Service Fabric and Windows Server Containers, we were able to push out the new feature immediately and realize a five-day timesaving. That’s a big win for our team and for the airline.”
Expand scalability, shrink costs
Alaska Airlines migrated web traffic to Azure gradually, going into full production in early 2017. The site will be able to scale much faster and more cost-effectively than it could in Alaska datacenters.
“Before, we had to purchase and hold servers in reserve for expected peaks such as Cyber Monday,” Feltis says. “We used forecasts from previous years to estimate how many servers we would need and often ended up over-allocated when the peak was over. With Azure, we scale when needed and avoid huge overprovisioning costs.”
Put everything new in the cloud
With the shopping cart application successfully running in Azure, Alaska Airlines is reviewing which of the other 150 or so services that compose the alaskaair.com user interface it might also move to the cloud using the same Azure Service Fabric and Windows Server Containers architecture.
“Going forward, all new features will be built in the cloud,” Feltis says. “We’re best at building applications that our customers love, and Microsoft is best at putting software and servers in the cloud. It’s a good partnership.”
With Azure Service Fabric and Windows Server Containers, we were able to push out the new feature immediately …. That’s a big win for our team and for the airline.