Challenge 01 - What Is Going On?

< Previous Challenge - Home - Next Challenge >

Introduction

Stuff and More Stuff Co. has deployed their newly designed web application on Azure, using Azure Cosmos DB as the database backend, since they were looking for a NoSQL database to suit their requirements. In the first few weeks, all was going quite well, until their first marketing campaign. The number of customers visiting the web application increased exponentially and a host of issues and complaints started arriving. The web application was constantly very slow, multiple error messages were being generated and the overall customer experience was severely degraded.

The web application is a multi-tenant application; for the purposes of the What The Hack, we offer a simplified version, where in the Carts and Orders pages, the application user may select the Store for which to view their data. Each user can order from any of the available stores.

The application interface itself is as below:

Application Interface

The Products page provides a per-store inventory of available products. This page statically reads a json file since practically such a page would be driven from a search backend (such as Azure Cognitive Search) which is not implemented in our case.

The Cart page provides an interface to view, for a given user/store pair, the contents of their cart.

The Orders page provides an interface to view, for a given user/store pair, the orders they have finalized.

The Shipments page provides an interface to view, for a given user/store pair, the orders that have been shipped.

Finally, clicking on the Dev. tools button allows a user to run a Load Test from the deployed Azure Load Testing service. The load test will simulate 1000 users making the following interactions:

The architecture of the solution:
Application Interface

The resources in the blue box are not part of the application itself, but allow for easier development and testing experience.

Description

In this challenge, you will have to identify how the current system has been set up and what problems does this create.

NOTE: You will need to run the Load Test defined in the Azure Load Testing service that is deployed in your Resource Group to gather data. The load test simulates the following user actions:

As we would like to simulate real-life traffic, we should load test with a representative load (the load test runs a 1000 user test across the web app). Please scale up the Azure App Service Plan hosting the Web App to P1V3 for the duration of the test. You may then scale back down to S1.

Also, please note that the load test will require 4 engine instances in Azure Load Testing. Please confirm from your default quotas that you have enough, else you will need to request a quota increase from Azure Support.

To be able to identify the required data points to help you formulate a plan to mitigate the issues, you will need to:

Success Criteria

To complete this challenge successfully:

Learning Resources