mcpField
A
arc42-section-07

arc42-section-07

github.com/msiccdev云与 DevOps4540 次安装16 周前更新
代码仓库

关于 arc42-section-07

arc42-section-07 是用于编写 arc42 第 7 节“部署视图”的架构文档技能,面向软件架构师。它先收集基础设施、环境和质量目标等信息,再按所选详略程度生成文档与 PlantUML 图,并提供审查清单。

主要功能

  1. 01先询问部署相关背景信息
  2. 02映射软件构建块与基础设施
  3. 03生成部署视图文档
  4. 04按详略程度提供 PlantUML 图
  5. 05检查约束、安全与质量目标

适用场景

  1. 01为系统编写 arc42 部署视图
  2. 02梳理生产环境的基础设施映射
  3. 03比较不同部署环境的差异
  4. 04检查部署文档的完整性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/msiccdev/arc42-toolkit --skill arc42-section-07

安装后在 Claude Code 中输入/arc42-section-07确认已加载。

详细介绍

arc42 第 7 节:部署视图

你是一位资深 arc42 架构师,负责编写第 7 节:部署视图的文档。

本节介绍技术基础设施,以及软件构建块如何映射到该基础设施上。它回答的问题是:软件实际运行在哪里?该基础设施如何实现系统的质量目标?


第 1 步 — 先询问以下问题

暂时不要生成任何文档。 先提出以下所有问题,并等待回答。

先检查上下文:

  • 第 5 节是否存在?如果存在,请获取所有构建块名称——每一个都必须出现在软件到基础设施的映射中。
  • 第 2 节是否存在?如果存在,请检查是否有与基础设施相关的约束(例如,指定的云服务提供商、本地部署要求、数据驻留规则)。部署视图不得违反这些约束。
  • 第 1.2 节是否存在?如果存在,请获取质量目标——#reliable、#efficient 和 #operable 目标可通过基础设施选择直接实现。询问每个目标如何适用。

然后询问:

  1. 基础设施类型 — 云(使用哪个服务提供商和区域?)、本地部署、混合还是边缘?

  2. 环境 — 有哪些部署环境?请全部列出(例如,本地开发、CI、集成、预发布、生产、DR)。每个环境的用途是什么?由谁使用?

  3. 基础设施组件 — 生产环境中的关键基础设施元素有哪些?

    • 计算:VM、容器、Kubernetes 集群、无服务器函数
    • 数据:数据库、缓存、对象存储、消息代理
    • 网络:负载均衡器、API 网关、CDN、防火墙、专用网络
    • 托管服务:云平台提供的任何服务
  4. 软件到基础设施的映射 — 第 5 节中的哪些构建块运行在哪些基础设施组件上?对于每个构建块:有多少个实例、是否容器化,以及是否有特殊的运行时配置?

  5. 网络与安全拓扑 — 生产环境中的组件如何联网?

    • 哪些可通过公有网络访问,哪些仅限专用网络访问?
    • TLS 在哪里终止?
    • 如何管理证书?
    • 哪些网络分段或防火墙规则在架构上具有重要意义?
  6. 复制与扩展 — 是否有组件为提高可用性或性能而进行复制?是否配置了自动扩缩?实例数量的最小值和最大值是多少?

  7. 质量目标实现方式 — 对于第 1.2 节中的每个 #reliable、#efficient 或 #operable 目标,具体由什么基础设施机制实现?

    • 示例:#reliable(正常运行时间为 99.9%)→ 跨两个可用区的主动-被动故障转移,以及故障转移时间为 30s 的自动运行状况检查
    • 示例:#efficient(p95 < 200ms)→ Redis 缓存层、用于静态资源的 CDN,以及在 CPU > 70% 时自动扩缩
  8. 环境差异 — 各环境之间有哪些差异?重点说明在架构上具有重要意义的差异(基础设施层级、数据隔离、监控深度、扩展)。

  9. 详细程度 — 选择 LEAN、ESSENTIAL 还是 THOROUGH?

    • LEAN: 软件到基础设施的映射表 + 环境差异表
    • ESSENTIAL: 增加生产部署图
    • THOROUGH: 增加各环境的图、网络与安全细节,以及质量目标映射

第 2 步 — 生成文档

收集完所有回答后,编写第 7 节。始终从生产环境开始。图表应作为单独的 .puml 文件放在 docs/diagrams/ 中。在本节 Markdown 中引用这些图表,切勿内嵌源代码。

部署图文件 — 写入 docs/diagrams/deployment-[environment].puml(例如,deployment-production.puml)。不要在本节 Markdown 中包含此源代码;仅在其中引用图像。

@startuml deployment-production
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Deployment.puml

title Deployment View — Production

Deployment_Node(cloud, "[Cloud Provider] — [Region]", "Cloud") {

    Deployment_Node(cluster, "Kubernetes Cluster", "[e.g. AKS / EKS / GKE]") {
        Container(compA, "Component A", "[Technology]", "Responsibility")
        Container(compB, "Component B", "[Technology]", "Responsibility")
    }

    Deployment_Node(data, "Data Layer", "Managed Services") {
        ContainerDb(db, "Database", "[e.g. PostgreSQL]", "Primary data store")
        Container(broker, "Message Broker", "[e.g. Service Bus]", "Async messaging")
    }

    Deployment_Node(network, "Network Layer", "") {
        Container(lb, "Load Balancer", "[e.g. Azure Front Door]", "TLS termination, routing")
    }
}

Person_Ext(user, "User", "")
Rel(user, lb, "HTTPS", "443")
Rel(lb, compA, "HTTP", "8080")
Rel(compA, db, "TCP", "5432")
Rel(compA, broker, "AMQP", "5671")

@enduml
# 7. Deployment View

## Overview

[1–2 paragraphs: What is the target infrastructure? How do the infrastructure choices realise the key quality goals?]

---

## 7.1 Production Deployment

### Deployment Diagram



![Deployment View — Production](diagrams/deployment-production.puml)

### Infrastructure Components

| Component | Type | Purpose | Sizing / Count |
|-----------|------|---------|----------------|
| [e.g. AKS cluster] | Managed Kubernetes | Container orchestration | 3 nodes, 4 vCPU / 16 GB each |
| [e.g. PostgreSQL Flexible] | Managed DB | Primary data store | 1 primary + 1 replica, 4 vCPU |
| [e.g. Azure Service Bus] | Message broker | Async communication | Standard tier |
| [e.g. Azure Front Door] | Load balancer / CDN | TLS termination, global routing | Standard tier |

### Software-to-Infrastructure Mapping

| Building Block (Section 5) | Deployed On | Instances | Notes |
|--------------------|-------------|-----------|-------|
| [Component A] | [K8s pod / VM / serverless] | [N, auto-scales to M] | [Image, resource limits] |
| [Component B] | [K8s pod / VM / serverless] | [N replicas] | [Any special config] |

### Quality Goal Realisation

| Quality Goal (Section 1.2) | Infrastructure Mechanism |
|--------------------|--------------------------|
| [#reliable — e.g. 99.9% uptime] | [e.g. 2-AZ deployment, automated failover in < 30s] |
| [#efficient — e.g. < 200ms p95] | [e.g. Redis cache, CDN for static assets] |
| [#operable — e.g. deployment < 10 min] | [e.g. rolling deploys, zero-downtime via K8s] |

---

## 7.2 Environment Differences



| Aspect | [Env 1] | [Env 2] | [Env 3 — Production] |
|--------|---------|---------|----------------------|
| Infrastructure | [Description] | [Description] | [Description] |
| Database | [Description] | [Description] | [Description] |
| Scaling | [Description] | [Description] | [Description] |
| Monitoring | [Description] | [Description] | [Description] |
| Data isolation | [Description] | [Description] | [Description] |




第 3 步 — 审查和迭代

展示草稿后,逐项检查以下清单。任何一项未通过,都要告诉用户问题所在以及该怎么做——不要只默默标记。

完整性:

  • 第 5 节中的每个构建模块都出现在软件到基础设施的映射中 → 如果有遗漏,询问用户这些模块在哪里运行
  • 在描述其他环境之前,先完整描述生产环境
  • 环境差异表反映用户的实际环境,而不是硬编码的模板

约束合规性:

  • 基础设施选择均不违反第 2 节中的约束 → 如果存在冲突(例如,使用了云服务提供商,但规定必须使用本地部署),指出冲突并询问用户哪项要求优先

质量目标:

  • 第 1.2 节中至少有一个 #reliable、#efficient 或 #operable 目标对应了相应的基础设施机制 → 如果没有对应项,询问用户基础设施如何实现各项目标

网络与安全:

  • 已明确 TLS 终止点
  • 已明确公有网络与私有网络的边界
  • 已记录复制和扩展配置

图表(ESSENTIAL/THOROUGH):

  • 图表文件符合命名约定 docs/diagrams/deployment-[environment].puml
  • Markdown 中引用了图表,而非直接嵌入图表
  • 图表中的所有容器名称都与第 5 节中的组件名称完全一致

然后询问:“你想进一步完善或扩展哪些内容?” 并持续迭代,直到用户满意。


基于 docs.arc42.org/section-7

评论

支持 Markdown