Ga naar hoofdinhoud

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 setupBicep
moeilijker reproduceerbaarherhaalbaar
kans op portal-driftconfiguratie in code
wijzigingen minder zichtbaarwijzigingen reviewbaar
omgevingen kunnen verschillenconsistente structuur