Introduction

This project is a Demo that demostrates how to deploy a small Python WebPage into Azure Web App + Sql Databases on Azure
using Azure Devops as CI/CD.

It has 2 environments divided into 2 subscriptions (DEV/PRD):

GitHub Logo

The components of the solution are:

  1. Azure Devops
  2. Azure App Service
  3. SQL Server
  4. Log Analytics WorkSpace

Getting Started

Installation process in your Azure Tenant

Objectives

  • The Application must serve variable amount of traffic. Most users are active during business hours. During big events and conferences the traffic could be 4 times more than typically.

    • In the App Service on PRD we are using a Auto Scale out policy. The App can create up to 4 instances during a busy time and scale back in to 1 instance.
  • The Customer takes guarantee to preserve your notes up to 3 years and recover it if needed.

    • The SQL Server database on PRD has long term retention enabled.
  • The Customer ensures continuity in service in case of datacenter failures.

  • The Service must be capable of being migrated to any of the regions supported by the cloud provider in case of emergency.

    GitHub Logo

  • The Customer is planning to have more than 100 developers to work in this project who want to roll out multiple deployments a day without interruption / downtime.

    • It is partialy done. On DEV is possible to deploy as many environments as you want, just selecting the environment parameter when triggering the pipeline. At the moment you can select up to 10 environments, but it can be easily expandable.
      We need also to enable more the parallel jobs in the build agents in order to have more pipelines running at the same time.
      For PRD we would need to combine a strategy of canary deployment using Deployment slots (It was not done due the time constrains).
      https://www.c-sharpcorner.com/blogs/doing-canary-deployments-using-azure-web-app-deployment-slots
  • The Customer wants to provision separated environments to support their development process for
    development, testing and production in the near future.

    • We have created 2 environments separated into stages in the pipeline
  • The Customer wants to see relevant metrics and logs from the infrastructure for quality assurance and security purposes.