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.
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:
- Design documentation
- Automated functional testing
- Automated unit testing
- Continuous integration/deployment
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
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 .