Azure Technical Specs - dev9com/jazz GitHub Wiki

ÂÂ# Overview

Azure installer

Azure is installed through a Jazz extension. The installer is Python based and relies on the click and requests python libraries. The installer takes the current Jazz configuration and adds the ability to run Azure deployed functions.

During the azure extension installation, the installer uses Terraform to create a number of components inside of Azure: ResourceGroups, API Management servers, and EventHub. The diagram below show this.

Azure Installer

Installed components

ResourceGroup

One Azure ResourceGroup is installed for the three core environment types in Jazz: development, staging, and production. These ResourceGroups house the API Manager servers and the EventHub for monitoring integration. The ResourceGroups live for the lifetime of the Azure extension installation.

API Management (APIM)

Azure requires an API Management server for all APIs. Because there are three environment types in Jazz with separate isotation levels, an APIM is required for each environment: development, staging, and production.

The APIM has different cost tiering for running. These tiers directly tie to platform usage and should be selected at extension installation time to match the needs of Jazz. For example, the development APIM might leverage the CONSUMPTION or DEVELOPER tier to keep costs of running an APIM low, while the production APIM might run BASIC, STANDARD, or PREMIUM based on the traffic needs of the Jazz APIs that will be deployed to Azure: see the APIM pricing page for details.

EventHub

The Azure EventHub is used to transfer monitoring events to AWS for deployed Jazz functions.

Azure Service Deployment

Azure service deployment process closely mirrors the AWS deployment process, with a few key differences. The deployment flow is described below.


Just like AWS deployment, Azure deployment is triggered from the UI when the user selects azure as the type of platform they want to deploy. The service parameters are then sent to the Jenkins container to kick off the service deployment process. Unlike for AWS, Jenkinks does not use the serverless framework to deploy azure services, instead it uses a custom module that interacts with the azure api. This module is responsible for creating, deleting, and updating all azure components. This module is a cli tool installed into the Jenkins container just like the serverless framework.

Website Deployment

During website service deployment, the azure module will create a few services in your azure account:

  • Storage Account

    The storage account will store the static files that make up the website. In order to accomplish this, the deployment module will first create the storage account, and then enable static website hosting for the account. It will then upload the website folder to the ./$web directory of the storage account.

  • CDN Account

    The CDN Account is used when the user chooses to have a CDN when starting deployment.(Currently not optional) The CDN account will then be bound to the storage accounts static website directory and an endpoint will be generated.

  • CDN Endpoint

Api Deployment

During the API service deployment, the azure module will create the following components:

  • Storage Account

    The storage account will be used to house the function. This is needed to deploy a function app in azure.

  • App Hosting Plan

    The App hosting plan is also required to deploy a function and it enabled the execution of the function.

  • Function App

    This is the actual app being created. To accomplish this jazz uploads the function template to the www/root directory of the function app account. For the purposes of api deployment, jazz will also set the CORs policy for the function to "*"

  • Api Gateway

    The api gateway is the outward facing component of this deployment type. It is created from the swagger.json file described in later section of this documentation. In order to be able to test the api gateway from swagger.io a product has to be attached to the gateway. A product is a general descriptor of rules and settings that apply to any number of api gateways. Jazz will do that, and also set the CORs policy for the gateway to "allow all".

Function Deployment