Azure-infrastructuur
Het JavaScript-platform moest functioneren binnen een streng beveiligde enterprise Azure-omgeving.
De deliverylaag combineerde:
- Azure Blob Storage
- Private Endpoint
- private networking
- Bicep
- aparte Test-, Acceptance- en Production-omgevingen
Infrastructuuroverzicht
┌──────────────────────┐
│ Repository │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Azure DevOps │
└──────────┬───────────┘
│
┌──────────────────┼──────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Test Blob │ │ Acc Blob │ │ Prod Blob │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Planon Test │ │ Planon Acc │ │ Planon Prod │
└──────────────┘ └──────────────┘ └──────────────┘
Blob Storage
Blob Storage bood een centrale locatie voor:
- de JavaScript-library
- omgeving-specifieke deployments
- ondersteunende documentatie
Het doel was om handmatige en verspreide levering van JavaScript te vervangen door één gecontroleerde route.
Private Endpoint
De storage-laag was niet ontworpen als een eenvoudige publieke statische host.
Private networking maakte deel uit van de platformarchitectuur zodat de oplossing binnen de beveiligde Azure-omgeving kon functioneren.
Planon / interne omgeving
│
▼
private netwerkroute
│
▼
Azure Storage / Private Endpoint
Infrastructure as Code met Bicep
Ik gebruikte Bicep om de Azure-infrastructuur te provisionen in plaats van afhankelijk te zijn van handmatige configuratie in de portal.
Vereenvoudigd publiek voorbeeld:
resource storage 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storageAccountName
location: location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
De echte enterprise-configuratie bevatte meer security- en networkingdetails. Die interne waarden zijn bewust niet opgenomen.
Waarom IaC belangrijk was
| Handmatige setup | Bicep |
|---|---|
| moeilijker reproduceerbaar | herhaalbaar |
| kans op portal-drift | configuratie in code |
| wijzigingen minder zichtbaar | wijzigingen reviewbaar |
| omgevingen kunnen verschillen | consistente structuur |