The purpose of this repo is to help you quickly get hands-on with Container Apps. It is meant to be consumed either through GitHub Codespaces or through a local Development Container (dev container). The idea being that everything you need from tooling to runtimes is already included in the dev container so it should be as simple as executing a run command.
As a retailer, you want your customers to place online orders, while providing them the best online experience. This includes an API to receive orders that is able to scale out and in based on demand. You want to asynchronously store and process the orders using a queing mechanism that also needs to be auto-scaled. The following image illustrates the conceputal architecture
With a microservices architecture, Container Apps offer a simple experience that allows your developers focus on the services, and not infrastructure. The E-commerce backend will implemented as different Container Apps using built-in features for scaling, traffic splitting and service-to-service calls as illustrated in the following image
In this lab you will see how to:
- Deploy the solution and configuration through Infrastructure as Code (IaaC), no need to understand Kubernetes
- Ability to troubleshoot using built-in logging capability with Azure Monitor (Log Analytics)
- Use out of the box telemetry with Dapr + Azure Monitor (Log Analytics)
- Ability to split http traffic when deploying a new version
- Ability to configure scaling to meet usage needs
- Configure CI/CD deployment to private Azure Container Registry using GitHub Actions
- Use API Management with Container Apps
- Enable Authentication for a Container App using Easy Auth.
Once this lab is completed you should have an Architecture that looks something like the diagram below.
- A GitHub account
- An Azure Subscription
- License for using GitHub Codespaces (if you want use Codespaces as a development environment)
- License for GitHub Copilot (optional but is of great help to solve the challenges)
The hackathon is divided into seven challenges. Each challenge consist of the following structure:
-
Main objective(s)
Description of the objective(s) in this challenge.
-
Activities
Description/guideline of which activities are necessary to complete the challenge.
-
Definition of done
Description of what is necessary to define a challenge "done".
-
Helpful links
Some of the challenges has links with information that can be useful to complete the challenge.
-
Solution
Each challenge has a step-by-step guide and also the final solution for the current solution.
- Challenge 1: Setup the environment
- Challenge 2: Deploy Container Apps Environment and troubleshoot Container Apps
- Challenge 3: Split traffic for controlled rollout
- Challenge 4: Scale Container Apps
- Challenge 5: Configure CI/CD for Container Apps
- Challenge 6: Protect Container App with API Management
- Challenge 7: Enable Container App authentication
Original creators
- Kevin Harris
- Mahmoud El Zayet
- Mark Whitby
- Anu Bhattacharya
Changes in this fork
- Jimmy Karlsson
- Jonas Norlund
- Peter Williams
- Arash Rassoulpour
- Anders Heden
- Kristofer Nissbrandt
- Johan Kardell