-
Notifications
You must be signed in to change notification settings - Fork 95
Known Limitations And Design Decisions
Chris Panagiotidis edited this page Jun 13, 2026
·
1 revision
This page records important design choices, tradeoffs, and limitations so future changes do not accidentally reverse the intent of the lab.
Use this page with:
- Architecture Overview
- Production Readiness Review
- Roadmap And Backlog
- GitHub Projects and Roadmap Operating Model
| Decision | Reason |
|---|---|
| Use Terraform root orchestration with reusable modules | Keeps the lab understandable while still demonstrating modular IaC |
| Keep expensive resources optional | Prevents surprise spend during learning |
Add cheap-lab profile |
Provides a safe first deployment path |
| Use GitHub Actions OIDC | Avoids long-lived Azure client secret JSON |
| Block public RDP by default | Reduces the most obvious management-plane exposure |
| Disable LB RDP NAT rules by default | Prevents direct RDP to workload VMs |
| Keep App Gateway backend declarative | Avoids local-exec drift and CLI dependency |
| Prefer VNet flow logs for new work | Aligns with the newer Azure monitoring direction |
| Use wiki as operator handbook | Keeps architecture, runbooks, validation, and roadmap together |
| Limitation | Impact | Mitigation |
|---|---|---|
| Lab is not a full production landing zone | Users must not treat it as certified production code | Use Production Readiness Review |
| DR is conceptual | No automated regional failover | Use Disaster Recovery And Resilience |
| Some modules are optional and profile-dependent | Inventory differs by profile | Review Deployment Profiles |
| Portal evidence is manual | Screenshots can drift or leak identifiers | Use sanitized evidence rules |
| Cost depends on selected toggles and region | Estimates can change | Review Cost Management before apply |
| Terratest requires Go and deployed resources | Not every check runs locally by default | Use CI and manual validation layers |
| Management groups need tenant-level permissions | Many lab users cannot deploy them | Keep governance optional unless permissions exist |
| Some policy behavior is lab-oriented | Audit and deny behavior can differ | Document profile policy mode clearly |
The lab does not try to:
- Replace Azure Landing Zone accelerator deployments.
- Provide production-certified compliance.
- Manage every Azure service.
- Deploy real enterprise identity.
- Store real secrets in documentation.
- Keep resources running indefinitely.
- Hide cost tradeoffs behind default-on services.
Use this template for future major changes:
# ADR: <decision title>
- Status: Proposed | Accepted | Superseded
- Date: YYYY-MM-DD
- Owner: <role or initials>
## Context
What problem is being solved?
## Decision
What will the repository do?
## Consequences
What improves, what gets harder, and what must be monitored?
## Validation
How will this be proven in Terraform plan, CI, Azure, or tests?When a change affects security, cost, or deployability, update:
- The relevant wiki page.
- Roadmap And Backlog.
- GitHub Project issue acceptance criteria.
- Test or validation evidence.
- README if the first-time user path changes.
Next page: GitHub Projects and Roadmap Operating Model
- Architecture Overview
- Full Environment Inventory
- Network Topology
- Shared Services
- Workloads
- Module Reference
- Security Model
- Security Operations
- Identity and Access
- Governance and Policy
- Production Readiness Review
- Monitoring and Diagnostics
- Operations Runbooks
- Azure Portal Validation Evidence
- Cost Management
- Disaster Recovery and Resilience