Infrastructure
Azure resources
Azure infrastructure is managed by IaC (Infrastructure as Code). Bicep files defined in the infra/bicep folder manage Blast Planning specifc resources referencing resrouces on the Shared Development Platform when necessary.
Infrastructure strinctly IaC only. No portal click-ops allowed. This treats infrastructure with the same operational rigor as source code. It enhances cloud infrastructure management by various means including preventing configuration drift, auditability, disaster recovery and allowing peer review for proposed changes.
The entrypoint is infra/bicep/environments/dev/main.bicep, parameterized by main.dev.bicepparam. The infrastructure pipeline deploys that file to australiaeast.
infra/bicep/
environments/dev/
main.bicep
main.dev.bicepparam
modules/
appservice.bicep
cosmos-container.bicep
servicebus.bicep
storage-account.bicep
main.bicep creates the application resource group for this project and the modules below. It also declares the Shared Development Platform resources as existing and wires their names, IDs, and connection strings into those modules. In this way the bicep files in this proejct are responsible for the resources “owned” by this project only while deploying to resources owned by the Shared Development Platform.
Managed by this project
These resources are implemented in infra/bicep and live in rg-event-sourcing-dev, except the Cosmos container and Service Bus topic, which are created on the shared account and namespace in rg-platform-dev.
Provisioned with Bicep
from infra/bicep
.
| Service | Name | Tier | Purpose | Bicep |
|---|---|---|---|---|
| Resource group | rg-event-sourcing-dev |
Subscription | Application-owned resources |
environments/dev/main.bicep
|
| App Service (API) | api-adt-blastplanning-dev |
Shared Linux plan | Blast Planning API (.NET 10) |
modules/appservice.bicep
|
| App Service (UI) | web-adt-blastplanning-dev |
Shared Linux plan | Angular UI (Node 22) |
modules/appservice.bicep
|
| Function App | func-adt-blastplanning-dev |
Shared Linux plan | Projection worker (.NET isolated 10) |
modules/appservice.bicep
|
| Storage account | stadtblastplanningdev |
Standard_LRS | Function AzureWebJobsStorage |
modules/storage-account.bicep
|
| Cosmos DB container | blastplanning-events |
Shared account | Event store, partition key /streamId |
modules/cosmos-container.bicep
|
| Service Bus topic | domain-events |
Shared namespace | Domain events for the projection worker |
modules/servicebus.bicep
|
| Service Bus subscription | blast-plan-projections |
Shared namespace | Projection consumer on domain-events |
modules/servicebus.bicep
|
Referenced from the shared platform
Declared as existing in environments/dev/main.bicep. This project consumes them. It does not create or set their SKUs.
Referenced as existing resources in environments/dev/main.bicep. This project does not create them.
| Service | Name | Tier | Purpose | Bicep |
|---|---|---|---|---|
| Resource group | rg-platform-dev |
Shared | Shared platform resource group |
environments/dev/main.bicep
|
| App Service Plan | asp-platform-dev |
Shared | Linux plan hosting the API, UI, and Function |
environments/dev/main.bicep
|
| Application Insights | appi-platform-dev |
Shared | Traces, metrics, and exceptions |
environments/dev/main.bicep
|
| Azure SQL server | sql-adt-platform-dev |
Shared | Logical server for the read-model database |
environments/dev/main.bicep
|
| Azure SQL database | ReferenceProjectsDb |
Shared | Blast-plan projections |
environments/dev/main.bicep
|
| Cosmos DB account | cosmos-adt-platform-dev |
Shared | Event-store account |
environments/dev/main.bicep
|
| Cosmos DB database | ReferenceProjects |
Shared | Event-store database |
environments/dev/main.bicep
|
| Service Bus namespace | sb-adt-platform-dev |
Shared | Namespace for domain-events |
environments/dev/main.bicep
|