Requirements

Resource group

A resource group is a container that holds related resources for an Azure solution. The resource group can include all the resources for the solution, or only those resources that you want to manage as a group. You decide how you want to allocate resources to resource groups based on what makes the most sense for your organization.

App Service (Web app)

Azure App Service is an HTTP-based service for hosting web applications, REST APIs, and mobile back ends. You can develop in your favorite language, be it .NET, .NET Core, Java, Node.js, PHP, or Python. Applications run and scale with ease on both Windows and Linux-based environments.

For Carrot, you would need to create 2 web apps: One for Backend (Django) and another for Frontend (NextJS).

Function app

Azure Functions allows you to implement your system’s logic as event-driven, readily available blocks of code. These code blocks are called “functions”.

In Carrot, there are currently 7 active workers functions which are hosted on one Function App on Azure:

  • RulesTrigger
  • RulesConceptsActivity
  • RulesFileQueue
  • RulesGenerationActivity
  • RulesOrchestrator
  • RulesQueue
  • UploadQueue

Azure storage

Azure Storage offers highly available, massively scalable, durable, and secure storage for a variety of data objects in the cloud. Azure Storage data objects are accessible from anywhere in the world over HTTP or HTTPS via a REST API.

Carrot uses Azure storage to store queues (e.g., Functions Triggers, Upload Scan Reports) and blobs (e.g., Scan Reports and Data dictionaries files).

Azure PostgreSQL database

Azure Database for PostgreSQL flexible server is a relational database service in the Microsoft cloud based on the PostgreSQL open source relational database.

Carrot uses Azure PostgreSQL database which holds its data about OMOP CDM, users, fields, tables, etc.

Data Factory

Azure Data Factory is a managed cloud service that’s built for these complex hybrid extract-transform-load (ETL), extract-load-transform (ELT), and data integration projects.

Carrot uses Data factory to load, manage and organise data in Azure stora and Postgres database by workflows.

Key vault

Centralizing storage of application secrets in Azure Key Vault allows you to control their distribution. Key Vault greatly reduces the chances that secrets may be accidentally leaked. When application developers use Key Vault, they no longer need to store security information in their application.

Carrot uses Key vault to store secrets and keys in Backend, Frontend and Functions apps.

Azure monitors

Azure Monitor is a comprehensive monitoring solution for collecting, analyzing, and responding to monitoring data from your cloud and on-premises environments. You can use Azure Monitor to maximize the availability and performance of your applications and services.

Carrot uses Azure monitors for important components, e.g., Backend, Frontend and Functions apps.

Vocabularies

You would need vocabularies downloaded from Athena. These are the vocabularies that you need inside Carrot database to create concepts and mapping rules. The guide for downloading can be found here.