- Add PostgreSQL and SQLite database adapters with factory pattern - Add migration script for SQLite to PostgreSQL - Add production Dockerfiles and docker-compose configs - Add deployment documentation and scripts - Add BIA sync dashboard and matching service - Add data completeness configuration and components - Add new dashboard components (BusinessImportanceComparison, ComplexityDynamics, etc.) - Update various services and routes - Remove deprecated management-parameters.json and taxonomy files
9.3 KiB
Azure Deployment - Infrastructure Samenvatting
Applicatie Overzicht
Zuyderland CMDB GUI - Web applicatie voor classificatie en beheer van applicatiecomponenten in Jira Assets.
Technologie Stack
- Backend: Node.js 20 (Express, TypeScript)
- Frontend: React 18 (Vite, TypeScript)
- Database: SQLite (cache layer, ~20MB, geen backup nodig - sync vanuit Jira)
- Containerization: Docker
- Authentication: Jira OAuth 2.0 of Personal Access Token
- Gebruikers: Max. 20 collega's
Infrastructure Vereisten
1. Compute Resources
Aanbevolen: Azure App Service (Basic Tier)
- App Service Plan: B1 (1 vCPU, 1.75GB RAM) - voldoende voor 20 gebruikers
- 2 Web Apps: Backend + Frontend (deel dezelfde App Service Plan)
- Kosten: ~€15-25/maand
- Voordelen: Eenvoudig, managed service, voldoende voor kleine teams
Alternatief: Azure Container Instances (ACI) - Als je containers prefereert
- 2 containers: Backend + Frontend
- Backend: 1 vCPU, 2GB RAM
- Frontend: 0.5 vCPU, 1GB RAM
- Kosten: ~€30-50/maand
- Nadeel: Minder managed features dan App Service
2. Database & Storage
Optie A: PostgreSQL (Aanbevolen) ⭐
- Azure Database for PostgreSQL: Flexible Server Basic tier (B1ms)
- Database: ~20MB (huidige grootte, ruimte voor groei)
- Kosten: ~€20-30/maand
- Voordelen: Identieke dev/prod stack, betere concurrency, connection pooling
Optie B: SQLite (Huidige situatie)
- SQLite Database: ~20MB (in Azure Storage)
- Azure Storage Account: Standard LRS (Hot tier)
- Kosten: ~€1-3/maand
- Nadelen: Beperkte concurrency, geen connection pooling
Logs: ~500MB-1GB/maand (Application Insights)
3. Networking
Vereisten:
- HTTPS: SSL/TLS certificaat (Let's Encrypt of Azure App Service Certificate)
- DNS: Subdomain (bijv.
cmdb.zuyderland.nl) - Firewall: Inbound poorten 80/443, outbound naar Jira API
- Load Balancer: Azure Application Gateway (optioneel, voor HA)
Network Security:
- Private endpoints (optioneel, voor extra security)
- Network Security Groups (NSG)
- Azure Firewall (optioneel)
4. Secrets Management
Azure Key Vault voor:
JIRA_OAUTH_CLIENT_SECRETSESSION_SECRETANTHROPIC_API_KEYJIRA_PAT(indien gebruikt)
Kosten: ~€1-5/maand
5. Monitoring & Logging
Azure Monitor:
- Application Insights (Basic tier - gratis tot 5GB/maand)
- Log Analytics Workspace (Pay-as-you-go)
- Alerts voor health checks, errors
Kosten: ~€0-20/maand (met Basic tier vaak gratis voor kleine apps)
6. Backup & Disaster Recovery
Geen backup vereist - Data wordt gesynchroniseerd vanuit Jira Assets, dus backup is niet nodig. De SQLite database is een cache layer die opnieuw opgebouwd kan worden via sync.
Deployment Architectuur
Aanbevolen: Azure App Service (Basic Tier)
Eenvoudige setup voor kleine teams (20 gebruikers):
┌─────────────────────────────────────┐
│ Azure App Service (B1 Plan) │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Frontend │ │ Backend │ │
│ │ Web App │ │ Web App │ │
│ └──────────┘ └────┬─────┘ │
└─────────────────────────┼──────────┘
│
┌─────────────┴─────────────┐
│ │
┌───────▼──────┐ ┌────────────▼────┐
│ Azure Storage│ │ Azure Key Vault │
│ (SQLite DB) │ │ (Secrets) │
└──────────────┘ └─────────────────┘
│
┌───────▼──────┐
│ Application │
│ Insights │
│ (Basic/FREE) │
└──────────────┘
Opmerking: Application Gateway is niet nodig voor 20 gebruikers - App Service heeft ingebouwde SSL en load balancing.
Security Overwegingen
1. Authentication
- Jira OAuth 2.0: Gebruikers authenticeren via Jira
- Session Management: Sessions in-memory (overweeg Azure Redis Cache voor productie)
2. Network Security
- HTTPS Only: Alle verkeer via HTTPS
- CORS: Alleen toegestaan vanuit geconfigureerde frontend URL
- Rate Limiting: 100 requests/minuut per IP (configureerbaar)
3. Data Security
- Secrets: Alle secrets in Azure Key Vault
- Database: SQLite database in Azure Storage (encrypted at rest)
- In Transit: TLS 1.2+ voor alle communicatie
4. Compliance
- Logging: Alle API calls gelogd (geen PII)
- Audit Trail: Wijzigingen aan applicaties gelogd
- Data Residency: Data blijft in Azure West Europe (of gewenste regio)
Externe Dependencies
1. Jira Assets API
- Endpoint:
https://jira.zuyderland.nl - Authentication: OAuth 2.0 of Personal Access Token
- Rate Limits: Respecteer Jira API rate limits
- Network: Outbound HTTPS naar Jira (poort 443)
2. AI API (Optioneel)
- Anthropic Claude API: Voor AI classificatie features
- Network: Outbound HTTPS naar
api.anthropic.com
Deployment Stappen
1. Azure Resources Aanmaken
# Resource Group
az group create --name rg-cmdb-gui --location westeurope
# App Service Plan (Basic B1 - voldoende voor 20 gebruikers)
az appservice plan create --name plan-cmdb-gui --resource-group rg-cmdb-gui --sku B1
# Web Apps (delen dezelfde plan - kostenbesparend)
az webapp create --name cmdb-backend --resource-group rg-cmdb-gui --plan plan-cmdb-gui
az webapp create --name cmdb-frontend --resource-group rg-cmdb-gui --plan plan-cmdb-gui
# Key Vault
az keyvault create --name kv-cmdb-gui --resource-group rg-cmdb-gui --location westeurope
# Storage Account (voor SQLite database - alleen bij SQLite optie)
az storage account create --name stcmdbgui --resource-group rg-cmdb-gui --location westeurope --sku Standard_LRS
Met PostgreSQL (Aanbevolen):
# PostgreSQL Database (Flexible Server)
az postgres flexible-server create \
--resource-group rg-cmdb-gui \
--name psql-cmdb-gui \
--location westeurope \
--admin-user cmdbadmin \
--admin-password <secure-password-from-key-vault> \
--sku-name Standard_B1ms \
--tier Burstable \
--storage-size 32 \
--version 15
# Database aanmaken
az postgres flexible-server db create \
--resource-group rg-cmdb-gui \
--server-name psql-cmdb-gui \
--database-name cmdb
2. Configuration
- Environment variabelen via App Service Configuration
- Secrets via Key Vault references
- SSL certificaat via App Service Certificate of Let's Encrypt
3. CI/CD
- Azure DevOps Pipelines of GitHub Actions
- Automatische deployment bij push naar main branch
- Deployment slots voor zero-downtime updates
Kosten Schatting (Maandelijks)
Voor 20 gebruikers - Basic Setup:
Met SQLite (huidige setup):
| Component | Schatting |
|---|---|
| App Service Plan (B1) | €15-25 |
| Storage Account | €1-3 |
| Key Vault | €1-2 |
| Application Insights (Basic) | €0-5 |
| Totaal | €17-35/maand |
Met PostgreSQL (aanbevolen):
| Component | Schatting |
|---|---|
| App Service Plan (B1) | €15-25 |
| PostgreSQL Database (B1ms) | €20-30 |
| Key Vault | €1-2 |
| Application Insights (Basic) | €0-5 |
| Totaal | €36-62/maand |
Inclusief: SSL certificaat (gratis via App Service), basis monitoring
Opmerking: Met Basic tier en gratis Application Insights kan dit zelfs onder €20/maand blijven.
Backup: Niet nodig - data wordt gesynchroniseerd vanuit Jira Assets.
Vragen voor Infrastructure Team
- DNS & Domain: Kunnen we een subdomain krijgen? (bijv.
cmdb.zuyderland.nl) - SSL Certificaat: Azure App Service Certificate of Let's Encrypt via certbot?
- Network: Moeten we via VPN/ExpressRoute of direct internet toegang?
- Firewall Rules: Welke outbound toegang is nodig? (Jira API, Anthropic API)
- Monitoring: Gebruiken we bestaande Azure Monitor setup of aparte workspace?
- Backup: Niet nodig - SQLite database is cache layer, data wordt gesynchroniseerd vanuit Jira Assets
- Disaster Recovery: Data kan opnieuw gesynchroniseerd worden vanuit Jira (geen backup vereist)
- Compliance: Zijn er specifieke compliance requirements? (ISO 27001, NEN 7510)
- Scaling: Niet nodig - max. 20 gebruikers, Basic tier is voldoende
- Maintenance Windows: Wanneer kunnen we updates deployen?
Next Steps
- Kick-off Meeting: Bespreken architectuur en requirements
- Proof of Concept: Deploy naar Azure App Service (test environment)
- Security Review: Security team review van configuratie
- Load Testing: Testen onder verwachte load
- Production Deployment: Go-live met monitoring
Contact & Documentatie
- Application Code: [Git Repository]
- Deployment Guide:
PRODUCTION-DEPLOYMENT.md - API Documentation:
/api/configendpoint