Skip to content

Known Limitations And Design Decisions

Chris Panagiotidis edited this page Jun 13, 2026 · 1 revision

Known Limitations And Design Decisions

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:

Design Decisions

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

Current Limitations

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

Non-Goals

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.

Decision Record Template

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?

Change Control Notes

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

Clone this wiki locally