Architecture, Backup, and Recovery Design
1. Overview
This document describes the production architecture for WordPress running on Azure Container Apps (ACA) with MariaDB, including backup, recovery, monitoring, and automation. The design prioritizes:
- Low operational overhead
- Cost efficiency
- Clear separation of concerns
- Fast, predictable recovery
- No dependency on VM-based services or Backup Vault
This architecture is suitable for long-term operation (multi‑year) with minimal maintenance.
2. High-Level Architecture
Core Components
- Azure Container Apps Environment
- Hosts WordPress and MariaDB container apps
- WordPress Container App (
ca-wp)- Apache + PHP WordPress image
- Stateless container
- Persistent content via Azure Files
- MariaDB Container App (
ca-mariadb)- Dedicated container app
- Internal-only access
- Database for WordPress
- Azure Files (Storage Account:
st4wpaca)- File share:
wpcontent - Mounted into WordPress container
- Stores plugins, themes, uploads, logs
- File share:
- Azure Blob Storage
- Stores MariaDB logical backups (
.sql.gz)
- Stores MariaDB logical backups (
3. Data Persistence Model
WordPress Files
wp-contentdirectory is mounted to Azure Files- Includes:
- Plugins
- Themes
- Uploads
- Logs (
debug.log)
Database
- MariaDB runs inside its own container
- No local persistence assumed
- Database durability ensured via daily logical backups
4. Backup Architecture
4.1 WordPress Files Backup (Primary)
Method: Azure Files Share Snapshots
- Daily snapshots of
wpcontentfile share - Snapshot creation automated via Azure Automation Runbook
- Retention enforced (e.g., 14 days)
Why this works well:
- Instant snapshot creation
- Very fast restore
- Extremely low cost
- No application involvement
4.2 MariaDB Backup (Primary)
Method: Logical database dumps (mysqldump)
- Implemented via Azure Container App Jobs
- Backup job runs on schedule (daily)
- Output compressed SQL file
- Stored in Azure Blob Storage
Additional Jobs:
- Cleanup job to enforce retention
- Restore job for controlled database recovery
4.3 Backup Automation
Azure Automation Account (aa-wp-backup)
- Central automation control plane
- Uses system-assigned managed identity
- Hosts multiple runbooks:
- Azure Files snapshot creation
- Snapshot retention cleanup
Key Vault Integration:
- Secrets stored in
kv-tanolis-app- Storage account key
- MariaDB host
- MariaDB user
- MariaDB password
- MariaDB database name
- Automation and jobs retrieve secrets securely
5. Restore Scenarios
Scenario 1: Restore WordPress Files Only
Use case:
- Plugin or theme deletion
- Media loss
Steps:
- Select Azure Files snapshot for
wpcontent - Restore entire share or specific folders
- Restart WordPress container app
Scenario 2: Restore Database Only
Use case:
- Content corruption
- Bad plugin update
Steps:
- Download appropriate SQL backup from Blob
- Execute restore job or import via MariaDB container
- Restart WordPress container
- Save permalinks in WordPress admin
Scenario 3: Full Site Restore
Use case:
- Major failure
- Security incident
- Rollback to known-good state
Steps:
- Restore Azure Files snapshot
- Restore matching MariaDB backup
- Restart WordPress container
- Validate site and permalinks
6. Monitoring & Alerting
Logging
- Azure Container Apps logs
- WordPress debug log (
wp-content/debug.log)
Alerts
- MariaDB backup job failure alert
- Container restart alerts
- Optional resource utilization alerts
External Monitoring
- HTTP uptime checks for site availability
7. Security Considerations
- No public access to MariaDB container
- Secrets stored only in Azure Key Vault
- Managed Identity used for automation
- No credentials embedded in scripts
- Optional IP restrictions for
/wp-admin
8. Cost Characteristics
- Azure Files snapshots: very low cost (delta-based)
- Azure Blob backups: pennies/month
- Azure Automation: within free tier for typical usage
- No Backup Vault protected-instance fees
Overall cost remains low single-digit USD/month for backups.
9. Operational Best Practices
- Test restore procedures quarterly
- Keep file and DB backups aligned by date
- Maintain at least 7–14 days retention
- Restart WordPress container after restores
- Document restore steps for operators
10. Summary
This architecture delivers:
- Reliable backups without over-engineering
- Fast and predictable recovery
- Minimal cost
- Clear operational boundaries
- Long-term maintainability
It is well-suited for WordPress workloads running on Azure Container Apps and avoids VM-centric or legacy backup models.

Add to favorites
