$npx -y skills add thomast1906/github-copilot-agent-skills --skill architecture-designDesign Azure cloud architectures from requirements and generate High-Level Design (HLD) documentation with service selection, patterns, cost estimates, and WAF alignment. Use this when asked to design or architect Azure solutions.
| 1 | # Architecture Design Skill |
| 2 | |
| 3 | Design comprehensive Azure architectures and produce HLD documentation following Well-Architected Framework and Cloud Adoption Framework best practices. |
| 4 | |
| 5 | ## When to Use |
| 6 | |
| 7 | - Design new Azure solutions from requirements |
| 8 | - Create High-Level Design (HLD) documentation |
| 9 | - Select Azure services and architectural patterns |
| 10 | - Plan cloud migrations or modernization |
| 11 | - Produce architecture decision records |
| 12 | |
| 13 | ## Design Process |
| 14 | |
| 15 | ### 1. Gather Requirements |
| 16 | |
| 17 | Ask clarifying questions about: |
| 18 | - **Workload type**: Web app, API, data processing, IoT, AI/ML |
| 19 | - **Scale**: User count, data volume, geographic distribution |
| 20 | - **Performance**: Response time, throughput, latency SLAs |
| 21 | - **Availability**: Uptime requirements (e.g., 99.9%, 99.99%) |
| 22 | - **Security**: Data classification, compliance (HIPAA, GDPR, PCI-DSS) |
| 23 | - **Budget**: Monthly/annual cost constraints |
| 24 | - **Timeline**: Deployment deadlines, phasing needs |
| 25 | |
| 26 | ### 2. Select Azure Services |
| 27 | |
| 28 | **Service Selection Priority:** PaaS > Containers > IaaS |
| 29 | |
| 30 | Refer to [references.md](./references.md) for detailed guidance on: |
| 31 | - Compute options (App Service, Functions, AKS, Container Apps, VMs) |
| 32 | - Data storage (Azure SQL, Cosmos DB, PostgreSQL, Blob Storage) |
| 33 | - Messaging (Service Bus, Event Hubs, Event Grid, Storage Queues) |
| 34 | - Networking (Front Door, Application Gateway, Load Balancer) |
| 35 | |
| 36 | **Key Decision Criteria:** |
| 37 | - Match service capabilities to requirements |
| 38 | - Consider team expertise and operational overhead |
| 39 | - Evaluate cost vs. feature trade-offs |
| 40 | - Prioritize managed services to reduce operations |
| 41 | |
| 42 | ### 3. Design Architecture |
| 43 | |
| 44 | Apply patterns based on requirements: |
| 45 | |
| 46 | **N-Tier (Traditional):** |
| 47 | - **When**: Standard web apps, proven patterns, team familiarity |
| 48 | - **Structure**: Frontend → Load Balancer → App Tier → Database |
| 49 | - **Services**: App Service, Azure SQL, Application Gateway, Redis Cache |
| 50 | |
| 51 | **Microservices:** |
| 52 | - **When**: Loosely coupled services, independent scaling, polyglot needs |
| 53 | - **Structure**: API Gateway → Services → Message Bus → Databases |
| 54 | - **Services**: API Management, AKS/Container Apps, Service Bus, Cosmos DB |
| 55 | |
| 56 | **Event-Driven:** |
| 57 | - **When**: Asynchronous processing, reactive systems, decoupled components |
| 58 | - **Structure**: Event Sources → Event Hub/Grid → Functions/Logic Apps → Storage |
| 59 | - **Services**: Event Hubs, Azure Functions, Cosmos DB, Service Bus |
| 60 | |
| 61 | **Serverless:** |
| 62 | - **When**: Sporadic workloads, event processing, cost-sensitive scenarios |
| 63 | - **Structure**: HTTP/Timer/Queue Triggers → Functions → Storage/Database |
| 64 | - **Services**: Azure Functions, Logic Apps, Cosmos DB, Blob Storage |
| 65 | |
| 66 | ### 4. Apply Well-Architected Framework |
| 67 | |
| 68 | Address all five pillars (detailed checklists in [waf-assessment skill](../waf-assessment/)): |
| 69 | |
| 70 | **Reliability:** |
| 71 | - Availability Zones for production |
| 72 | - Multi-region for mission-critical (99.99%+) |
| 73 | - Health checks and auto-healing |
| 74 | - Backup strategy with RPO/RTO defined |
| 75 | |
| 76 | **Security:** |
| 77 | - Managed identities (no credentials in code) |
| 78 | - Private endpoints for PaaS services |
| 79 | - HTTPS only with TLS 1.2+ |
| 80 | - Network security groups (least privilege) |
| 81 | - Azure Key Vault for secrets |
| 82 | - Azure AD authentication and RBAC |
| 83 | |
| 84 | **Cost Optimization:** |
| 85 | - Right-size resources (start small, scale up) |
| 86 | - Auto-scaling policies |
| 87 | - Reserved instances for predictable workloads |
| 88 | - Storage tiers (Hot/Cool/Archive) |
| 89 | - Cost monitoring and alerts |
| 90 | |
| 91 | **Operational Excellence:** |
| 92 | - Infrastructure as Code (Bicep or Terraform) |
| 93 | - CI/CD pipelines |
| 94 | - Application Insights + Log Analytics |
| 95 | - Alerts for critical scenarios |
| 96 | - Automated deployment and rollback |
| 97 | |
| 98 | **Performance Efficiency:** |
| 99 | - CDN for static content |
| 100 | - Caching strategy (Redis, CDN) |
| 101 | - Asynchronous processing |
| 102 | - Appropriate compute SKUs |
| 103 | - Auto-scaling rules |
| 104 | |
| 105 | ### 5. Create Naming Convention |
| 106 | |
| 107 | Follow Cloud Adoption Framework: |
| 108 | ``` |
| 109 | {resource-type}-{workload}-{environment}-{region}-{instance} |
| 110 | |
| 111 | Examples: |
| 112 | - rg-ecommerce-prod-eastus-001 |
| 113 | - app-ecommerce-prod-eastus-001 |
| 114 | - sql-ecommerce-prod-eastus-001 |
| 115 | - kv-ecommerce-prod-eastus |
| 116 | - func-orderproc-prod-eastus-001 |
| 117 | ``` |
| 118 | |
| 119 | **Standard Tags:** |
| 120 | ``` |
| 121 | Environment: Production | Staging | Development | Test |
| 122 | Owner: teamname@company.com |
| 123 | CostCenter: IT-12345 |
| 124 | Project: ProjectName |
| 125 | BusinessUnit: Sales | Marketing | Engineering |
| 126 | Criticality: Critical | High | Medium | Low |
| 127 | DataClassification: Public | Internal | Confidential | Restricted |
| 128 | ``` |
| 129 | |
| 130 | ### 6. Estimate Costs |
| 131 | |
| 132 | **Invoke the `azure-pricing` skill** to retrieve live retail pricing. Never estimate costs from memory. |
| 133 | |
| 134 | The `azure-pricing` skill will: |
| 135 | - Call `azure-mcp/pricing` (`pricing_get`) per billable resource SKU and region |
| 136 | - Return a three-column table: Pay-as-you-go | 1-year Reserved | 3-year Reserved |
| 137 | - Identify top reserved instance |