Skip to content

Stack

The ADP consists of multiple systems that are distributed as Microservices developed using Microsoft's .NET 8.

Microservices Architecture

Each Microservice is designed using the following architecture:

SQL Database

Each Microservice has its own SQL Server Database. The SQL Database ensures exeptional data integrity as it's ACID compliant.

Cloud Resources

Two Azure SQL Databases are used (for Production & Staging) by each Microservice.

Web API

A RESTful Web API developed using .NET 8 that's responsible for handling all incoming requests from the web app dashboard.

The Web APIs are not being consumed by external clients. For external clients, Serverless Function APIs are used.

Cloud Resources

An Azure App Service with two slots (for Production & Staging) are used to host the Web APIs App of each Microservice.

Serverless Functions

Serverless Function APIs are used to expose APIs to external clients. Typically serving data that are stored in the NoSQL Database.

Serverless Functions are also used to handle background tasks and scheduled jobs.

Cloud Resources

An Azure Functions App with two slots (for Production & Staging) are used to host the Serverless Functions of each Microservice.

Key Vault

Key Vault is used to store and manage application secrets such as connection string, API Keys, passwords, tokens, certificates, and any other sensetive information.

All the cloud resources are configured to access the Key Vault for secrets instead of storing them in configuration files or environment variables.

Cloud Resources

An Azure Key Vault is used for all the Microservices.

Service Bus

Service Buses are used to decouple the Microservices and enable asynchronous communication between them.

Cloud Resources

Two Azure Service Buses are used for all the Microservices.

Blob Storage

Blob Storage is used to store large files such as images, videos, and documents.

Cloud Resources

One or more Azure Blob Storage accounts are used for all the Microservices.

Frontend Web App

The Frontend Web App is a dashboard used for managing the data related to the Microservices.

Cloud Resources

An Azure Static Web App with two slots (for Production & Staging) are used to host the Frontend Web App of each Microservice.

NoSQL Database

Some data from the SQL Database is replicated to the NoSQL Database.

The NoSQL database acts as a shared layer between the Microservices that need to communicate with each other.
It's also used by the Serverless Functions to serve data to external clients without the need to access the SQL Database.

Cloud Resources

Two or more Azure Cosmos DBs are used (for Production & Staging) shared by all the Microservices.