Giter Club home page Giter Club logo

adrianlavery / contosotraders-cloudtesting Goto Github PK

View Code? Open in Web Editor NEW

This project forked from microsoft/contosotraders-cloudtesting

1.0 0.0 2.0 72.51 MB

The Contoso Traders app is a sample application showcasing Playwright, Azure Load Testing, Azure Chaos Studio.

Home Page: https://cloudtesting.contosotraders.com

License: MIT License

JavaScript 38.73% C# 15.28% PowerShell 0.37% TypeScript 5.94% CSS 0.53% HTML 0.57% Dockerfile 0.32% SCSS 17.59% Bicep 20.67%

contosotraders-cloudtesting's Introduction

Contoso Traders - Cloud testing tools demo app

The Contoso Traders app is a sample application showcasing Playwright, Azure Load Testing, Azure Chaos Studio and more.

This repo contains the source code, deployment templates, and demo scripts for exploring these cloud testing tools.

Overview Video

Watch the overview video

Documentation and Resources

Continuous Integration

Pipeline Status Details
GitHub Workflow contoso-traders-cloud-testing Deploys to production
Azure DevOps Pipeline Build Status Deploys to staging

Demo Scripts

Architecture

Architecture

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

contosotraders-cloudtesting's People

Contributors

mithunshanbhag avatar marcusfelling avatar adrianlavery avatar jometzg avatar gokulsm avatar amalik99 avatar dependabot[bot] avatar mxschmitt avatar microsoftopensource avatar jbofficial avatar debs-obrien avatar annasoracco avatar jenp avatar johnsta avatar pichuang avatar microsoft-github-operations[bot] avatar

Stargazers

 avatar

contosotraders-cloudtesting's Issues

Add networking for IAAS VMs

Is your feature request related to a problem? Please describe.
When we deploy SQL VMs to host the databases we'll need a VNET and associated resources

Describe the solution you'd like
To keep things simple, we could re-use the existing VNET created when we choose to use private endpoints

Describe alternatives you've considered
We could create separate VNETs for each tier

  • Add additional subnets for the database and web tiers
  • Add NSGs for each subnet
  • Add a Bastion subnet
  • Remove public IP from jumpbox
  • Remove NSG from jumpbox

Improve bicep deployment readability

We should also split up the createResources.bicep so that it improves readability. We should split this into modules for front end, back end and Database.

  • Create a core infrastructure module for shared resources across IAAS & PAAS
  • Create a module for deploying Front end on IAAS and call from createResources.bicep
  • Create a module for deploying Front end on PAAS and call from createResources.bicep
  • Create a module for deploying Middle tier on IAAS and call from createResources.bicep
  • Create a module for deploying Middle tier on PAAS and call from createResources.bicep
  • Create a module for deploying Back end on IAAS and call from createResources.bicep
  • Create a module for deploying Back end on PAAS and call from createResources.bicep

Deploy React App to IIS VMs

Is your feature request related to a problem? Please describe.
I'd like to demo using this application and chaos studio / load testing on IAAS workloads.

Describe the solution you'd like
I'd like to move the React UI from App Service to IIS on IAAS VMs. There should be a parameter flag, similar to the private endpoints one to say whether it should be deployed on IAAS/PAAS.

  • Modify pipeline to deploy React app to IIS

IIS VMs showing as unhealthy in Front Door

Describe the bug
The backend VMs for IIS are showing as unhealthy for Azure Front Door because the NSG is wrong.

Expected behavior
We need to change the NSG rule so that it is FrontDoor.Backend as the source and VNET as the target

Enable Carts API

In the current codebase, the carts API is only called if a user is logged in. It would be good to enable this so it's always called in order to enable more chaos experiments to be run on the environment

Add some chaos experiments to the repo

Right now the main part of the workshop relies on workshop users to generate the chaos experiments.

There is also another way of running the workshop where the proctors create some chaos for all participant teams. It would be good to capture these so these need not have to be built from scratch.

Some examples:

  1. network latency between tiers
  2. High CPU or memory pressure on the IIS VMs
  3. network packet loss between Prod API and its SQL database

Add an option for SQL on IAAS VMs

Is your feature request related to a problem? Please describe.
I'd like to demo using this application and chaos studio / load testing on IAAS workloads.

Describe the solution you'd like
A simple first step would be to move the SQL databases from Azure SQL to SQL cluster on IAAS VMs. There should be a parameter flag, similar to the private endpoints one to say whether it should be deployed on IAAS/PAAS.

  • #2
  • Create bicep code to deploy a SQL cluster across 3 AZs
  • Understand if the SQL connection string needs to be updated

Add documentation on chaos experiments for Game day hack

We need a list of ten experiments that can be run on the environment, including prompt for each one, suggested ways of achieving the challenge, expected outcomes and what monitoring needs to be enabled to pick it up. The experiments should build on each other like in an openhack.
Suggested experiments to run:

  • Bring down Front end website
  • Disable products API
  • Disable product images
  • Disable carts API
  • Simulate an identity outage
  • Slow down but don't disable the SQL server
  • Create intermittent response from main website
  • Prevent the APIs from authenticating to the SQL server

Add combined load test to repo

the background load test required for chaos needs to be added to the repo

This load test tests all of:

  1. Product API
  2. Cart API
  3. Homepage
  4. Images

Ideally add a CSV or two to randomise these to make the tests more realistic.

Add an option to run the UI on IIS on VMs

Is your feature request related to a problem? Please describe.
I'd like to demo using this application and chaos studio / load testing on IAAS workloads.

Describe the solution you'd like
I'd like to move the React UI from App Service to IIS on IAAS VMs. There should be a parameter flag, similar to the private endpoints one to say whether it should be deployed on IAAS/PAAS.

  • #2
  • Create bicep code to deploy three IIS VMs across 3 AZs
  • Create a load balancer in front of the VMs to distribute traffic
  • #4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.