This customer is one of the largest fast-food restaurant franchises in the world by the number of locations, with over 30,000 restaurants in more than 100 countries. The company has made it a top priority to drive revenue per location by launching innovative digital experiences and enabling restaurant operators with state-of-the-art technology.
As part of these initiatives, the company was attempting a major update to their mission-critical Menu Management software used in all stores globally but was experiencing poor performance and frequent timeouts while moving the related Windows Servers, apps, and databases to Azure SQL and Azure App Service, despite using significantly over-provisioned resources. The primary system involved a new ASP.NET application based on .NET Core 2.0 and Entity Framework 2.0, which was to run in Azure and utilize Azure SQL. Despite positive performance tests against an on-premises SQL Server database, the application was performing at an unacceptable level in early tests against Azure SQL. The issues with the application and database required immediate remedy.
Atmosera was brought in to examine both the application and the Azure SQL server environment to identify the source of the performance issues. The goal was to debug, optimize, and improve the performance ahead of the launch, as well as to move the application itself along with the on-premises SQL Server database to Azure PaaS. Once this was complete, Atmosera was to work with the FWH team to verify the results. Atmosera led the effort leveraging our world-class debugging team to tackle the remediation aspects of the project and using best practices for the app and database migration aligned with the discipline of the Microsoft Cloud Adoption Framework (CAF).
NEED AND IMPACT
The customer wanted to enable franchisees and restaurant operators to drive their own localized pricing campaigns. In order to do this, restaurant operators needed to be able to quickly update their menus and populate the latest menu simultaneously across all ordering channels. Reasons for a menu update can be manifold: the restaurant runs out of a food item, a restaurant wants to drop the price on a food item because of a local college football game, etc. Prior to the launch of the new system, updating and deploying a menu could take a full day, especially when thousands of restaurants were publishing simultaneously. For example, this bottleneck would be hit whenever a new food item was being launched nationwide, or a nationwide campaign was triggered.
Atmosera focused the initial phase of the effort on debugging and optimizing the performance of the application and related databases. Much of the refactoring involved optimizing stored procedures to make the indexing strategy more efficient, as well as implementing needed changes with Queuing in the application.
For the database migration, the databases were moved from on-premises SQL Servers into Azure SQL. The Database Migration Assistant (DMA) tool was used after an initial earlier attempt using BacPac files showed poor efficiency. Visual Studio and Visual Studio Code, along with their integrated debugging tools, were used as the core dev and debugging platform. The applications were migrated to Azure App Service as a PaaS solution. The charter from the company was a basic two-phase effort:
The choice of Azure Functions for a core part of the solution was also a key success component. Serverless on Azure proved to scale amazingly well.
The basic user flow is as follows:
All of these tasks used to be performed using a monolithic application hosted on Windows servers that did not scale efficiently and could take many hours to process. This processing time has now been reduced to sub-minutes.
Figure 1 – High-Level Conceptual Architecture
The customer needed a partner that was expert at providing the architectural, debugging, performance optimization, and application/database skills needed to take a mission-critical enterprise system and make it flexible and performant, as well as the implementation expertise to deploy the production system to the Azure cloud.
The new application and databases were rolled out on time and under budget, allowing franchisees to update their restaurant menu and publish it with a single click. Once published, an API triggers a series of parallel functions to update all menus and place messages on a Service Bus to alert all order channels (App, GrubHub, UberEats, local restaurants, etc.) that a new menu is ready for publishing.