关于 cloud-solution-architect
面向云架构师的技能,用于设计符合 Azure 架构最佳实践的生产级系统。内容涵盖架构风格选择、云设计模式、技术决策框架和架构审查流程。
主要功能
- 0110 项 Azure 设计原则
- 026 种架构风格的选择指南
- 0344 个映射至 WAF 支柱的模式
- 04技术选型框架
- 05架构审查流程
适用场景
- 01为新的 Azure 系统选择架构风格
- 02从可靠性和安全角度审查系统设计
- 03比较 Azure 计算、存储、数据和消息传递选项
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ microsoft/ skills --skill cloud-solution-architect安装后在 Claude Code 中输入/cloud-solution-architect确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/architecture-styles.mdbest-practices.mddesign-patterns.mddesign-principles.mdmission-critical.mdperformance-antipatterns.mdtechnology-choices.md详细介绍
云解决方案架构师
概述
遵循 Azure Architecture Center 的最佳实践,设计架构良好、可用于生产环境的云系统。本技能提供:
- 10 项 Azure 应用设计原则
- 6 种架构风格及选择指南
- 44 种云设计模式,并映射到 WAF 支柱
- 计算、存储、数据和消息传递的技术选择框架
- 应避免的性能反模式
- 用于系统化设计验证的架构评审工作流
Azure 应用的十项设计原则
| # | 原则 | 关键策略 |
|---|---|---|
| 1 | 设计以实现自我修复 | 采用退避重试、断路器、舱壁隔离、运行状况终结点监控和优雅降级 |
| 2 | 确保所有组件都有冗余 | 消除单点故障,使用可用性区域,部署到多个区域,复制数据 |
| 3 | 尽量减少协调 | 解耦服务,使用异步消息传递,接受最终一致性,使用领域事件 |
| 4 | 设计为横向扩展 | 横向扩展、自动缩放规则、无状态服务、避免会话粘滞、划分工作负载 |
| 5 | 围绕限制进行分区 | 数据分区(分片/哈希/范围),遵守计算和网络限制,使用 CDN 提供静态内容 |
| 6 | 面向运维进行设计 | 结构化日志记录、分布式跟踪、指标和仪表板、运行手册自动化、基础设施即代码 |
| 7 | 使用托管服务 | 优先选择 PaaS 而非 IaaS,降低运维负担,利用内置的高可用性/灾难恢复/缩放能力 |
| 8 | 使用身份服务 | Microsoft Entra ID、托管标识、RBAC,避免存储凭据,遵循零信任原则 |
| 9 | 面向演进进行设计 | 松耦合、版本化 API、向后兼容、使用异步消息传递进行集成、功能标志 |
| 10 | 满足业务需求 | 定义 SLA/SLO,设定 RTO/RPO 目标,领域驱动设计,成本建模,复合 SLA |
架构风格
| 风格 | 说明 | 适用场景 | 关键服务 |
|---|---|---|---|
| N 层 | 水平分层(表示层、业务层、数据层) | 传统企业应用、直接迁移 | App Service、SQL Database、VNets |
| Web-Queue-Worker | Web 前端 → 消息队列 → 后端工作器 | 包含长时间运行任务的中等复杂度应用 | App Service、Service Bus、Functions |
| 微服务 | 小型自治服务、有界上下文、独立部署 | 复杂领域、需要独立扩展团队 | AKS、Container Apps、API Management |
| 事件驱动 | 发布/订阅模式、事件生产者/消费者 | 实时处理、IoT、响应式系统 | Event Hubs、Event Grid、Functions |
| 大数据 | 批处理与流处理管道 | 分析、机器学习管道、大规模数据 | Synapse、Data Factory、Databricks |
| 大规模计算 | HPC、并行处理 | 仿真、建模、渲染、基因组学 | Batch、CycleCloud、HPC VM |
选择标准
- 领域复杂度 → 微服务(高),N 层(低至中等)
- 团队自治 → 微服务(独立团队),N 层(单个团队)
- 数据量 → 大数据(TB 级以上),其他(GB 级)
- 延迟要求 → 事件驱动(实时),Web-Queue-Worker(可容忍延迟)
云设计模式
按主要关注点组织的 44 种模式。WAF 支柱映射:R=可靠性,S=安全性,CO=成本优化,OE=卓越运营,PE=性能效率。
消息与通信
| 模式 | 概要 | 支柱 |
|---|---|---|
| 异步请求-回复 | 通过轮询或回调解耦请求与响应 | R, PE |
| 声明检查 | 拆分大型消息;单独存储有效负载,并传递引用 | R, PE |
| 编排 | 服务通过事件进行协调,无需中央协调器 | R, OE |
| 竞争消费者 | 多个消费者并发处理共享队列中的消息 | R, PE |
| 消息桥接 | 连接不兼容的消息系统 | R, OE |
| 管道与过滤器 | 将复杂处理分解为可复用的过滤器阶段 | R, OE |
| 优先级队列 | 为请求设置优先级,以便优先处理高优先级任务 | R, PE |
| 发布者/订阅者 | 通过主题/订阅解耦发送方与接收方 | R, PE |
| 基于队列的负载平衡 | 使用队列缓冲请求,平滑间歇性负载 | R, PE |
| 顺序车队 | 按顺序处理相关消息,同时允许并行处理不同组 | R, PE |
可靠性与弹性
| 模式 | 概要 | 支柱 |
|---|---|---|
| 舱壁 | 按工作负载隔离资源,防止故障级联 | R |
| 断路器 | 停止调用故障服务;快速失败以保护资源 | R |
| 补偿事务 | 后续步骤失败时撤销先前已提交的步骤 | R |
| 运行状况终结点监视 | 为负载均衡器和协调器提供运行状况检查 | R, OE |
| 领导者选举 | 通过选举领导者来协调分布式实例 | R |
| 重试 | 通过采用指数退避进行重试来处理暂时性故障 | R |
| Saga | 使用补偿事务管理微服务之间的数据一致性 | R |
| 调度程序代理监督器 | 通过重试和故障处理协调分布式操作 | R |
数据管理
| 模式 | 概要 | 支柱 |
|---|---|---|
| 旁路缓存 | 按需从数据存储加载数据到缓存 | PE |
| CQRS | 分离读写模型,以便独立扩展 | PE, R |
| 事件溯源 | 将状态存储为仅追加的领域事件序列 | R, OE |
| 索引表 | 为数据存储中频繁查询的字段创建索引 | PE |
| 物化视图 | 预先计算数据视图,以实现高效查询 | PE |
| 分片 | 将数据分布到多个分区,以提升规模和性能 | PE, R |
| 静态内容托管 | 直接通过云存储/CDN 提供静态内容 | PE, CO |
| 代客钥匙 | 授予客户端对存储资源的有限直接访问权限 | S, PE |
设计与结构
| 模式 | 概要 | 支柱 |
|---|---|---|
| 大使 | 将横切关注点卸载给辅助边车代理 | OE |
| 防腐层 | 在新系统与旧系统的模型之间进行转换 | OE, R |
| 前端专用后端 | 为每种前端类型(移动端、Web 等)创建独立后端 | OE, PE |
| 计算资源整合 | 将多个工作负载合并到更少的计算实例中 | CO |
| 外部配置存储 | 将配置从部署包中分离出来 | OE |
| 边车 | 将辅助组件与主服务一同部署 | OE |
| 绞杀者无花果 | 通过逐步替换旧系统的部分组件来迁移系统 | OE, R |
安全与访问
| 模式 | 概要 | 支柱 |
|---|---|---|
| 联合身份 | 将身份验证委托给外部身份提供商 | S |
| 守门人 | 使用专用代理验证请求,以保护服务 | S |
| 隔离区 | 在允许使用外部资产之前先将其隔离并验证 | S |
| 速率限制 | 控制消费者对资源的消耗速率 | R, S |
| 节流 | 控制资源消耗,以便在负载下维持 SLA | R, PE |
部署与扩展
| 模式 | 概要 | 支柱 |
|---|---|---|
| 部署戳 | 部署应用程序组件的多个独立副本 | R, PE |
| 边缘工作负载配置 | 为不同的边缘设备配置不同的工作负载 | OE |
| 网关聚合 | 将多个后端调用聚合为单个客户端请求 | PE |
| 网关卸载 | 将共享功能(SSL、身份验证)卸载到网关 | OE, S |
| 网关路由 | 使用单个终结点将请求路由到多个后端 | OE |
| 地质体 | 将后端部署到多个区域,以提供主动-主动服务 | R, PE |
请参阅设计模式参考,了解详细的实现指南。
技术选型
决策框架
对于每个技术领域,请评估:需求 → 约束 → 权衡 → 选择。
| 领域 | 主要选项 | 选择标准 |
|---|---|---|
| 计算 | App Service、Functions、Container Apps、AKS、VM、Batch | 托管模型、扩展能力、成本、团队技能 |
| 存储 | Blob Storage、Data Lake、Files、Disks、Managed Lustre | 访问模式、吞吐量、成本层级 |
| 数据存储 | SQL Database、Cosmos DB、PostgreSQL、Redis、Table Storage | 一致性模型、查询模式、规模 |
| 消息传递 | Service Bus、Event Hubs、Event Grid、Queue Storage | 顺序、吞吐量、发布/订阅还是队列 |
| 网络 | Front Door、Application Gateway、Load Balancer、Traffic Manager | 全局还是区域、L4 还是 L7、WAF |
| AI 服务 | Azure OpenAI、AI Search、AI Foundry、Document Intelligence | 模型需求、数据依据、编排 |
| 容器 | Container Apps、AKS、Container Instances | 运维控制能力与简便性之间的权衡 |
请参阅技术选型参考,了解详细的决策树。
最佳实践
| 实践 | 主要指导 |
|---|---|
| API 设计 | RESTful 惯例、面向资源的 URI、HATEOAS、通过 URL 路径或标头进行版本控制 |
| API 实现 | 异步操作、分页、幂等 PUT/DELETE、内容协商、ETag 缓存 |
| 自动扩展 | 基于指标(CPU、队列深度、自定义指标)扩展、冷却期、预测性扩展、扩展缩减保护 |
| 后台作业 | 使用队列或计划触发器、幂等处理、毒消息处理、优雅关闭 |
| 缓存 | Cache-aside 模式、TTL 策略、缓存失效策略、多实例场景使用分布式缓存 |
| CDN | 卸载静态资产、使用带版本号的 URL 破坏缓存、地理分布、强制使用 HTTPS |
| 数据分区 | 水平(分片)、垂直、功能分区;选择分区键以实现均匀分布 |
| 分区策略 | 基于哈希、范围、目录的策略;重新平衡方法、避免跨分区查询 |
| 保留主机名 | 通过代理/网关保留原始主机标头,以支持 Cookie、重定向和身份验证流程 |
| 消息编码 | 架构演进(Avro/Protobuf)、向后/向前兼容性、架构注册表 |
| 监控与诊断 | 结构化日志记录、分布式跟踪(W3C Trace Context)、指标、警报、仪表板 |
| 瞬时故障处理 | 使用指数退避和抖动进行重试、断路器、幂等性密钥、超时预算 |
请参阅最佳实践参考,了解实现细节。
性能反模式
避免以下常见模式,以免在负载增加时导致性能下降:
| 反模式 | 问题 | 修正方法 |
|---|---|---|
| 数据库负载过重 | 将过多处理工作转移到数据库 | 将逻辑移至应用层,并使用缓存 |
| 前端负载过重 | 在前端请求线程上执行资源密集型工作 | 转移到后台工作线程/队列 |
| 频繁 I/O | 发出许多小型 I/O 请求,而不是较少的大型请求 | 批量处理请求,使用批量 API,并缓冲写入 |
| 获取多余数据 | 检索超出所需范围的数据 | 仅选择必需字段,进行分页,并在服务端筛选 |
| 实例化不当 | 每个请求都重新创建开销较大的对象 | 使用单例、连接池和 HttpClientFactory |
| 单体式持久化 | 所有数据类型都使用同一个数据存储 | 多语言持久化——为每种工作负载选择合适的存储 |
| 没有缓存 | 反复获取未发生变化的数据 | 使用旁路缓存模式、CDN、输出缓存和 Redis |
| 吵闹邻居 | 某个租户耗尽所有共享资源 | 使用隔舱隔离、按租户设置配额并进行限流 |
| 重试风暴 | 激进重试使正在恢复的服务不堪重负 | 指数退避加抖动、断路器和重试预算 |
| 同步 I/O | 因 I/O 操作阻塞线程 | 使用 Async/await、非阻塞 I/O 和响应式流 |
任务关键型设计
对于目标为 99.99% 及以上 SLO 的工作负载,请关注以下设计领域:
| 设计领域 | 关键考虑因素 |
|---|---|
| 应用平台 | 多区域主动-主动、可用性区域、支持区域冗余的 Container Apps 或 AKS |
| 应用设计 | 无状态服务、幂等操作、优雅降级、隔舱隔离 |
| 网络 | Azure Front Door(全局负载均衡)、DDoS Protection、专用终结点、冗余连接 |
| 数据平台 | 多区域 Cosmos DB、区域冗余 SQL、异步复制、冲突解决 |
| 部署与测试 | 蓝绿部署、金丝雀发布、混沌工程、自动回滚 |
| 健康度建模 | 综合健康评分、依赖项健康跟踪、自动修复、SLI 仪表板 |
| 安全性 | 零信任、全面使用托管标识、密钥轮换、WAF 策略、威胁建模 |
| 运维流程 | 自动化运行手册、事件响应预案、演练日、事后复盘 |
详细指南请参阅任务关键型参考。
Well-Architected Framework(WAF)支柱
每项架构决策都应根据全部五大支柱进行评估:
| 支柱 | 关注重点 | 关键问题 |
|---|---|---|
| 可靠性 | 韧性、可用性、灾难恢复 | RTO/RPO 是什么?系统如何处理故障?是否具备冗余? |
| 安全性 | 威胁防护、身份、数据保护 | 是否管理了身份?数据是否已加密?是否设有网络控制措施? |
| 成本优化 | 成本管理、效率、资源规格优化 | 计算资源规格是否合适?是否使用了预留实例?是否存在浪费? |
| 卓越运营 | 监控、部署、自动化 | 部署是否自动化?是否具备可观测性?是否有运行手册? |
| 性能效率 | 扩展、负载测试、性能目标 | 是否支持水平扩展?是否有性能基线?是否使用了缓存? |
WAF 权衡矩阵
| 优化目标…… | 可能影响…… |
|---|---|
| 可靠性(冗余) | 成本(更多资源) |
| 安全性(隔离) | 性能(增加延迟) |
| 成本(整合) | 可靠性(共享故障域) |
| 性能(缓存) | 成本(缓存基础设施)、可靠性(陈旧数据) |
架构评审工作流
评审或设计系统时,请遵循以下结构化方法:
步骤 1:识别需求
Functional: What must the system do?
Non-functional:
- Availability target (e.g., 99.9%, 99.99%)
- Latency requirements (p50, p95, p99)
- Throughput (requests/sec, messages/sec)
- Data residency and compliance
- Recovery targets (RTO, RPO)
- Cost constraints
Step 2: 选择架构风格
根据上方的选择标准表,将需求与架构风格相匹配。
Step 3: 选择技术栈
使用技术选择决策框架。优先选择托管服务(PaaS),而非 IaaS。
Step 4: 应用设计模式
根据已识别的问题,从 44 种云设计模式中选择适用的模式。
Step 5: 处理横切关注点
- 身份与访问 — Microsoft Entra ID、托管标识、RBAC
- 监控 — Application Insights、Azure Monitor、Log Analytics
- 安全 — 网络分段、静态/传输加密、Key Vault
- CI/CD — GitHub Actions、Azure DevOps Pipelines、基础设施即代码
Step 6: 根据 WAF 支柱进行验证
系统地检查每个支柱,并明确记录权衡取舍。
Step 7: 记录决策
使用架构决策记录(ADR):
# ADR-NNN: [Decision Title]
## Status: [Proposed | Accepted | Deprecated]
## Context
[What is the issue we're addressing?]
## Decision
[What did we decide and why?]
## Consequences
[What are the positive and negative impacts?]
参考资料
来源
内容源自 Azure Architecture Center — Microsoft 关于 Azure 云解决方案架构的官方指南。涵盖设计原则、架构风格、云设计模式、技术选择、最佳实践、性能反模式、关键任务设计以及 Well-Architected Framework。
评论
支持 Markdown