Azure 云架构师
Azure 云架构师
利用 Bicep 基础设施即代码 (IaC) 模板,为初创公司和企业设计可扩展且具有成本效益的 Azure 架构。
---
工作流
第一步:收集需求
收集应用程序规范:
- 应用程序类型(Web 应用、移动端后端、数据流水线、SaaS、微服务)
- 预期用户数和每秒请求数 (RPS)
- 预算限制(每月支出上限)
- 团队规模和 Azure 经验水平
- 合规性要求(GDPR, HIPAA, SOC 2, ISO 27001)
- 可用性要求(SLA, RPO/RTO)
- 区域偏好(数据驻留、延迟)
第二步:设计架构
运行架构设计器以获取模式建议:
python scripts/architecture_designer.py \
--app-type web_app \
--users 10000 \
--requirements '{"budget_monthly_usd": 500, "compliance": ["SOC2"]}'输出示例:
{
"recommended_pattern": "app_service_web",
"service_stack": ["App Service", "Azure SQL", "Front Door", "Key Vault", "Entra ID"],
"estimated_monthly_cost_usd": 280,
"pros": ["托管平台", "内置自动缩放", "部署槽"],
"cons": ["控制力低于 VM", "平台限制", "消费计划存在冷启动"]
}从推荐模式中选择:
- App Service Web: Front Door + App Service + Azure SQL + Redis Cache
- AKS 微服务: AKS + Service Bus + Cosmos DB + API Management
- 无服务器事件驱动: Functions + Event Grid + Service Bus + Cosmos DB
- 数据流水线: Data Factory + Synapse Analytics + Data Lake Storage + Event Hubs
详细的模式规范请参阅 references/architecture_patterns.md。
验证检查点: 在进入第三步之前,请确认推荐模式与团队的运维成熟度和合规性要求相匹配。
第三步:生成 IaC 模板
为所选模式创建基础设施即代码:
# Web 应用栈 (Bicep)
python scripts/bicep_generator.py --arch-type web-app --output main.bicepBicep 输出示例(核心 Web 应用资源):
@description('环境名称')
param environment string = 'dev'
@description('资源的 Azure 区域')
param location string = resourceGroup().location
@description('应用程序名称')
param appName string = 'myapp'
// App Service 计划
resource appServicePlan 'Microsoft.Web/serverfarms@2023-01-01' = {
name: '${environment}-${appName}-plan'
location: location
sku: {
name: 'P1v3'
tier: 'PremiumV3'
capacity: 1
}
properties: {
reserved: true // Linux
}
}
// App Service
resource appService 'Microsoft.Web/sites@2023-01-01' = {
name: '${environment}-${appName}-web'
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
siteConfig: {
linuxFxVersion: 'NODE|20-lts'
minTlsVersion: '1.2'
ftpsState: 'Disabled'
alwaysOn: true
}
}
identity: {
type: 'SystemAssigned'
}
}
// Azure SQL 数据库
resource sqlServer 'Microsoft.Sql/servers@2023-05-01-preview' = {
name: '${environment}-${appName}-sql'
location: location
properties: {
admi
nistrators: {
azureADOnlyAuthentication: true
}
minimalTlsVersion: '1.2'
}
}
resource sqlDatabase 'Microsoft.Sql/servers/databases@2023-05-01-preview' = {
parent: sqlServer
name: '${appName}-db'
location: location
sku: {
name: 'GP_S_Gen5_2'
tier: 'GeneralPurpose'
}
properties: {
autoPauseDelay: 60
minCapacity: json('0.5')
}
}
> 包含 Front Door、Key Vault、托管标识(Managed Identity)和监控的完整模板由 bicep_generator.py 生成,也可在 references/architecture_patterns.md 中查看。
Bicep 是 Azure 推荐的 IaC 语言。 建议优先使用 Bicep 而非 ARM JSON 模板:Bicep 可编译为 ARM JSON,语法更简洁,支持模块化,且由微软官方支持。
第 4 步:审查成本
分析预估成本和优化机会:
python scripts/cost_optimizer.py \
--config current_resources.json \
--json
输出示例:{
"current_monthly_usd": 2000,
"recommendations": [
{ "action": "Right-size SQL Database GP_S_Gen5_8 to GP_S_Gen5_2", "savings_usd": 380, "priority": "high" },
{ "action": "Purchase 1-year Reserved Instances for AKS node pools", "savings_usd": 290, "priority": "high" },
{ "action": "Move Blob Storage to Cool tier for objects >30 days old", "savings_usd": 65, "priority": "medium" }
],
"total_potential_savings_usd": 735
}
输出内容包括:
- 按服务划分的每月成本明细
- 规格优化(Right-sizing)建议
- 保留实例(Reserved Instance)和节省计划(Savings Plan)机会
- 潜在的每月节省金额
第 5 步:配置 CI/CD
设置 Azure DevOps Pipelines 或 GitHub Actions 与 Azure 的集成:
GitHub Actions — 将 Bicep 部署到 Azure
name: Deploy Infrastructure
on:
push:
branches: [main]
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: azure/arm-deploy@v2
with:
resourceGroupName: rg-myapp-dev
template: ./infra/main.bicep
parameters: environment=dev
Azure DevOps Pipeline
trigger:
branches:
include:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: AzureCLI@2
inputs:
azureSubscription: 'MyServiceConnection'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
az deployment group create \
--resource-group rg-myapp-dev \
--template-file infra/main.bicep \
--parameters environment=dev
### 第 6 步:安全审查
在投入生产前验证安全状况:
- 身份验证:使用带有 RBAC 的 Entra ID (Azure AD),服务间认证使用托管标识(Managed Identity)—— 绝不要在代码中存储凭据。
- 密钥管理:所有密钥、证书和连接字符串均存储在 Key Vault 中。
- 网络:所有子网配置 NSG,PaaS 服务使用私有端点(Private Endpoints),部署带有 WAF 的 Application Gateway。
- 加密:传输中采用 TLS 1.2+,静态存储采用 Azure 管理或客户管理密钥。
- 监控:启用 Microsoft Defender for Cloud,使用 Azure Policy 设定治理基准。
- 合规性:针对 SOC 2 / HIPAA / ISO 27001 等标准分配 Azure Policy。
如果部署失败:
1. 检查部署状态:
az deployment group show \
--resource-group rg-myapp-dev \
--name main \
--query 'properties.error'2. 查看活动日志以检查 RBAC 或策略错误。
3. 在部署前验证 Bicep 模板:
az bicep build --file main.bicep
az deployment group validate \
--resource-group rg-myapp-dev \
--template-file main.bicep常见失败原因:
- RBAC 权限错误 —— 验证部署主体在资源组上具有“参与者”权限
- 资源提供程序未注册 —— 运行
az provider register --namespace Microsoft.Web
- 命名冲突 —— Azure 资源名称通常需要全局唯一(如存储账户、Web 应用)
- 配额超出 —— 通过 Azure 门户 > 订阅 > 用量 + 配额申请增加配额
---
工具
architecture_designer.py
根据需求生成架构模式建议。
python scripts/architecture_designer.py \
--app-type web_app \
--users 50000 \
--requirements '{"budget_monthly_usd": 1000, "compliance": ["HIPAA"]}' \
--json输入: 应用类型、预期用户数、JSON 格式的需求
输出: 推荐模式、服务栈、成本估算、优缺点
cost_optimizer.py
分析 Azure 资源配置以节省成本。
python scripts/cost_optimizer.py --config resources.json --json输入: 包含当前 Azure 资源清单的 JSON 文件
输出: 针对以下方面的建议:
- 移除闲置资源
- VM 和数据库规格优化(Right-sizing)
- 购买预留实例 (Reserved Instance)
- 存储层级转换
- 清理未使用的公共 IP 和负载均衡器
bicep_generator.py
根据架构类型生成 Bicep 模板脚手架。
python scripts/bicep_generator.py --arch-type microservices --output main.bicep输出: 生产就绪的 Bicep 模板,包含:
- 托管标识(无需密码)
- Key Vault 集成
- Azure Monitor 诊断设置
- 网络安全组 (NSG)
- 用于成本分摊的标签
---
快速上手
Web 应用架构 (< $100/月)
提问:"为一家拥有 5000 名用户的初创公司设计 Azure Web 应用"
结果:
- App Service (B1 Linux) 用于运行应用
- Azure SQL Serverless 用于关系型数据
- Azure Blob Storage 用于静态资源
- Front Door (免费层) 用于 CDN 和路由
- Key Vault 用于密钥管理
- 预估费用:$40-80/月
AKS 微服务架构 ($500-2000/月)
提问:"为一家拥有 5 万名用户的 SaaS 平台设计 Azure 微服务架构"
结果:
- AKS 集群,包含 3 个节点池(系统、应用、任务)
- API Management 用于网关和限流
- Cosmos DB 用于多模型数据
- Service Bus 用于异步消息传递
- Azure Monitor + Application Insights 用于可观测性
- 多可用区部署
Serverless 事件驱动架构 (< $200/月)
提问:"设计一个用于处理订单的事件驱动后端"
结果:
- Azure Functions (消费计划) 用于计算
- Event Grid 用于事件路由
- Service Bus 用于可靠消息传递
- Cosmos DB 用于订单数据
- Application Insights 用于监控
- 预估费用:根据流量而定,$30-150/月
数据流水线 ($300-1500/月)
提问:"设计一个每天摄取 1000 万个事件的数据流水线"
结果:
- Event Hubs 用于数据摄取
- Stream Analytics 或 Functions 用于处理
- Data Lake Storage Gen2 用于存储原始数据
- Synapse Analytics 用于数据仓库
- Power BI 用于可视化报表
---
输入要求
在进行架构设计时请提供以下详细信息:
| 要求 | 描述 | 示例 |
|-------------|--------
-----|---------|
| 应用类型 | 构建内容 | SaaS 平台, 移动端后端 |
| 预期规模 | 用户数, 每秒请求数 (RPS) | 10k 用户, 100 RPS |
| 预算 | Azure 每月限额 | 最高 $500/月 |
| 团队情况 | 规模, Azure 经验 | 3 名开发人员, 中级 |
| 合规性 | 监管需求 | HIPAA, GDPR, SOC 2 |
| 可用性 | 运行时间要求 | 99.9% SLA, 1小时 RPO |
JSON 格式:
{
"application_type": "saas_platform",
"expected_users": 10000,
"requests_per_second": 100,
"budget_monthly_usd": 500,
"team_size": 3,
"azure_experience": "intermediate",
"compliance": ["SOC2"],
"availability_sla": "99.9%"
}---
反模式 (Anti-Patterns)
| 反模式 | 失败原因 | 建议方案 |
|---|---|---|
| 新项目使用 ARM JSON 模板 | 冗长、难以阅读、缺乏模块化 | 使用 Bicep —— 可编译为 ARM,语法更简洁 |
| 将密钥存储在 App Settings 中 | 密钥在门户中可见,无法自动轮换 | 在 App Settings 中使用 Key Vault 引用 |
| 单一大型 AKS 节点池 | 无法针对不同工作负载进行优化 | 使用多个节点池:系统池、应用池、任务池 |
| PaaS 服务使用公共端点 | 暴露攻击面 | 使用私有端点 (Private Endpoints) + VNet 集成 |
| 为了“以防万一”而过度配置 | 首月预算浪费 | 从小规模开始,使用自动缩放,每月调整规模 |
| 所有资源共用一个资源组 | 故障影响范围大,RBAC 管理混乱 | 每个环境的每个工作负载使用独立资源组 |
| 缺乏标签 (Tagging) 策略 | 无法追踪成本或所有权 | 标记:环境 (environment)、所有者 (owner)、成本中心 (cost-center)、应用名称 (app-name) |
| 使用经典 (Classic) 资源 | 已弃用,功能有限 | 仅使用 ARM/Bicep 资源 |
---
输出格式
架构设计
- 模式推荐及其理由
- 服务栈图表 (ASCII)
- 每月成本预估及权衡分析
IaC 模板
- Bicep: 推荐 —— 原生支持,支持模块,语法简洁
- ARM JSON: 根据需要由 Bicep 生成
- Terraform HCL: 使用 azurerm 提供程序实现多云兼容
成本分析
- 当前支出明细及优化建议
- 优先级操作清单 (高/中/低) 及实施检查表
---
交叉引用
| 技能 | 关系 |
|-------|-------------|
| engineering-team/aws-solution-architect | AWS 等效方案 —— 相同的 6 步工作流,不同的服务 |
| engineering-team/gcp-cloud-architect | GCP 等效方案 —— 补全云平台三巨头 |
| engineering-team/senior-devops | 更广泛的 DevOps 范围 —— 流水线、监控、容器化 |
| engineering/terraform-patterns | IaC 实现 —— 用于针对 Azure 的 Terraform 模块 |
| engineering/ci-cd-pipeline-builder | 流水线构建 —— 自动化 Azure DevOps 和 GitHub Actions |
---
参考文档
| 文档 | 内容 |
|----------|----------|
| references/architecture_patterns.md | 5 种模式:Web 应用、微服务/AKS、无服务器 (Serverless)、数据管道、多区域部署 |
| references/service_selection.md | 计算、数据库、存储、消息传递、网络的决策矩阵 |
| references/best_practices.md | 命名规范、标签、RBAC、网络安全、监控、灾难恢复 (DR) |