Nine Knights of Azure: #1 Web App – Tesco Grocery Look Up

Background

I want to learn more Azure and C#, and I want to learn by doing. The other day I listened to the .NET Rocks podcast talking with Adam Cogan about his Nine Knights of Azure talk. The talk lists nine Azure services to learn first. I’m going to follow that framework while building a project.

The Project

Here’s the vision for the project. I use the Tesco online shopping site for most of our household shopping.  I dislike the user interface. What I really want is a touch screen display in the kitchen that allows me to add on items to restock the moment we use up the last one.

Knight #1: Computing: App Services

The first Azure Knight is “Computing: App Services”. To exercise these services I will make a simple web app and host it on the Azure App Services. The app will do only one thing: accept the name of a product and list the resulting hits back from the Tesco groceries web site.

Covering All the Bases

While the app functionality is simple I do want to cover all the steps that I would take on a more complicated product:

  1. Design documentation
  2. Automated functional testing
  3. Automated unit testing
  4. Continuous integration/deployment

Development Flow

The flow of development I like to follow is:

  • Write just enough documentation to be clear what you are building and why
  • Create the list of high-level tests that if they all pass then you will go live
  • For each test:
    • Write up the tests; automate the tests were possible (“functional testing”)
    • Implement the code to pass the test using test driven development (“unit testing”)
    • Refactor the code to make sure that it is clean
    • Push to source control and make sure continuous integration tests all pass
    • Automatically deploy to testing environment
  • Once all the code is built and automated tests are passing complete any manual testing
  • Push to production

Building the Pipeline

I want to learn the Azure DevOps  services so I’m going to build my development pipeline with these tools.

Setting Up the Repo

I’ve created a public Azure DevOps project here: https://dev.azure.com/davegoopot/tesco_home_automation

Project Documentation

I’ve set up the project wiki to use mark down files under the “docs” folder in the git repo. See: https://dev.azure.com/davegoopot/tesco_home_automation/_wiki/wikis/Tesco%20Home%20Automation .