为什么我要精读一份"老掉牙"的架构文档
有句话说:“架构不是画出来的,是长出来的。”
但在大型企业里,架构必须先"写出来"——写成一份能让几十人、几百人达成共识的文档,然后才有资格"长出来"。
我最近翻到一份真实项目中的架构设计文档:《营销业务IT架构设计说明书 V1.4》,2011年的版本,出自某大型央企的信息化建设工程。这份文档覆盖了从业务分析到物理部署的完整链条,是一套典型的、按TOGAF思路组织的企业级架构交付物。
你可能会说:2011年的东西,技术栈都过时了吧?
没错,里面提到的J2EE、SOA、ESB,在今天的互联网架构里已经不是主流选型。但文档的组织方式、思考逻辑、各层之间的推导关系,这些东西并不会过时。恰恰相反,今天很多团队写架构文档时犯的毛病——业务和技术脱节、数据架构缺失、部署方案拍脑袋——在这份十几年前的文档里反而处理得更严谨。
这篇文章不讲新技术,就干一件事:逐章节精读这份真实文档,带着批判性思维分析它的写法、优缺点,以及哪些思路至今仍有参考价值。
一、文档全景:八章结构背后的架构思维
先看看这份文档的章节骨架:
| 章节 | 核心内容 | 对应TOGAF ADM阶段 |
|---|---|---|
| 第1章 引言 | 编写目的、适用范围、术语表、参考资料 | 预备阶段 |
| 第2章 总体架构设计 | 设计原则、设计思路、总体框架、部署模式 | Phase A 架构愿景 |
| 第3章 应用架构设计 | 业务分析、应用规划、应用部署 | Phase B/D |
| 第4章 数据架构设计 | 数据建模、数据分类、数据部署 | Phase C |
| 第5章 技术架构设计 | 组件技术、SOA、J2EE、关键技术 | Phase D |
| 第6章 物理架构设计 | 主机、存储、备份、网络、容灾 | Phase D(细化) |
| 第7章 应用集成设计 | 内部集成、外部集成 | Phase D |
| 第8章 安全架构设计 | 安全需求、风险分析、安全设计 | 贯穿各阶段 |
笔记心得:这个结构最大的优点是"分层递进"——先讲原则和总体框架,再分别展开应用、数据、技术三个核心架构域,最后落到物理实现和集成安全。读者跟着章节走,就像跟着架构师做了一次完整的思维推演。
但问题也很明显:没有专门的"现状诊断"章节和"迁移规划"章节。这两块内容散落在各章节的局部描述中,缺少系统性的呈现。如果你要写自己的架构文档,建议在总体设计之前加一章"现状分析与差距评估",在最后加一章"演进路线图"。
二、引言章:别小看"术语表"的力量
2.1 编写目的和适用范围
文档开篇就讲清楚了三件事:写给谁看、管什么范围、用来干什么。
原文是这样写的:
“IT架构设计在借鉴营销多年信息化建设经验的基础上,充分考虑营销业务未来发展需求,旨在营销应用架构、数据部署、软硬件规划、应用集成和安全等方面形成统一设计,为各网省公司的营销业务应用建设提供参考和依据。”
这段话虽然官腔味重,但信息密度很高——它明确了这份文档是**“标准化设计”**的定位,不是某个省公司的个性化方案,而是全系统的统一参考基线。
精读启发:写架构文档,第一段就要回答"这份文档的法律效力是什么"。是强制执行的规范,还是推荐参考的指南?是面向开发团队的实施手册,还是面向管理层的决策依据?很多文档写了半天,读者都不清楚自己该以什么心态来看。
2.2 术语表的隐藏价值
这份文档列了将近40个术语定义,从BICC到WorkFlow,覆盖了通信协议、存储技术、中间件、安全等多个领域。
很多人觉得术语表是"凑页数"的产物,但在大型跨组织项目中,术语表是消除歧义的第一道防线。比如"数据部署"这个词,在总部视角是"集中存储策略",在省公司视角可能是"本地缓存策略"——如果没有统一定义,后面几十页的设计就会出现理解偏差。
笔记心得:术语表还有一个隐性作用——暴露架构师的知识边界。你列了哪些术语,说明你认为读者需要了解哪些领域。这份文档大量列出通信协议术语(SIP、H.248、MGCP),说明呼叫中心集成是一个关键技术难点。
三、总体架构设计:原则写得好,但"为什么"讲得不够
3.1 八条设计原则的"标准化写法"
文档列出了八条设计原则:实用性、标准化、一体化、统一性、适用性、可靠性、安全性、投资保护。
说实话,这些原则放在任何一份架构文档里都成立。它们更像是"行业公约"而非"项目决策"。
| 原则 | 实际指导意义 | 落地检验标准 |
|---|---|---|
| 实用性 | 选用成熟技术,不追新 | 技术选型是否有同行案例 |
| 标准化 | 统一功能规划,统一业务运作 | 是否有标准化设计文档支撑 |
| 一体化 | 纵向贯通、横向集成 | 数据交换和集成平台是否到位 |
| 适用性 | 可配置、可扩展,满足3-5年发展 | 配置项是否可枚举 |
| 可靠性 | 7×24小时不间断运行 | 高可用方案是否具体到组件级 |
| 投资保护 | 继承现有软硬件和数据资源 | 是否盘点了存量资产 |
精读启发:好的架构原则应该可以证伪。“本系统优先选用已在国内电力行业有3个以上落地案例的技术栈”——这就是一条可验证的原则。而"坚持实用性原则"更像是表态,不是决策。
3.2 总体框架的四层结构
文档的总体框架设计把整个系统分成:业务架构、应用架构、数据架构、技术架构四层,外加物理架构、应用集成和安全架构三个横切面。
这个分层方式非常经典,本质上就是TOGAF的内容架构(Content Framework)的中国化表达。它的核心价值在于:让不同角色的读者都能找到自己的"入口"。业务人员看业务架构,开发人员看应用和技术架构,DBA看数据架构,运维看物理架构。
有句话说:“架构文档不是写给自己看的,是写给五个不同部门的人同时看的。” 四层架构加三个横切面的组织方式,本质上是一种"多视角文档设计"。
四、应用架构设计:从业务模型到应用部署的推导链
4.1 业务分析 → 业务模型 → 应用规划
第三章的逻辑链条很清晰:先做业务分析(搞清楚营销业务到底在干什么),再抽象出业务模型(把业务活动结构化表达),最后推导应用架构(哪些业务活动对应哪些应用模块)。
这个推导顺序至关重要。很多团队写架构文档时,直接从"我们要建一个XX系统"开始,跳过了"业务到底需要什么"这一步。结果就是系统设计得很漂亮,但业务人员一看就说"这不是我们干活的流程"。
文档的做法是:
- 分析营销业务涉及的所有业务领域(新装增容、抄表核算、电费收缴、客户服务等)
- 将业务活动按照"业务类-业务项-业务子项"三级结构组织
- 在此基础上划分应用功能模块,明确每个模块覆盖哪些业务活动
4.2 双模式部署设计:务实的妥协
文档最有意思的设计决策之一是:同时设计了"网省集中"和"地市集中"两种部署模式。
这不是架构上的犹豫不决,而是面对现实的务实选择。不同省份的客户规模差异巨大——有的省几千万用户,有的省几百万用户。一刀切地要求全部省级集中,对于小省来说资源浪费;全部地市级部署,对于大省来说管理成本太高。
笔记心得:架构设计不是寻找"最优解",而是在约束条件下寻找"可行解"。这份文档给出两种模式并详细描述各自的适用条件,比那些只画一张"完美架构图"的文档实用得多。
| 部署模式 | 适用场景 | 数据集中度 | 硬件投资 |
|---|---|---|---|
| 网省集中 | 客户规模大、管理要求统一 | 高(省级数据中心) | 集中投入 |
| 地市集中 | 地域辽阔、网络条件差 | 中(地市级数据中心) | 分散投入 |
五、数据架构设计:从概念模型到数据分类的完整链条
5.1 三级数据建模思路
第四章是整份文档中方法论最扎实的部分。它采用了经典的数据建模三级递进:
- 顶层概念模型:回答"有哪些核心数据主题"——客户、产品、资产、账务……
- 数据概念模型:回答"每个主题下有哪些关键实体"——客户主题下有用电客户、联系人、客户档案……
- 数据逻辑模型:回答"每个实体有哪些属性、实体间什么关系"——用电客户与客户档案是一对一,与用电合同是一对多……
这种从粗到细的建模方式,本质上是把业务语义逐步翻译成技术可实现的数据结构。对于跨多个省公司、多个应用系统的大型项目来说,统一的数据模型是避免"信息孤岛"的根本手段。
5.2 数据技术分类:不只是"分个类"
文档在数据建模之后,专门用了一节做"数据技术分类"——把数据按照业务特性和技术特性两个维度进行归类。
| 分类维度 | 具体类别 | 技术含义 |
|---|---|---|
| 业务特性 | 客户数据、产品数据、交易数据、管理数据 | 决定数据归属权和使用权限 |
| 技术特性 | OLTP数据、OLAP数据、归档数据 | 决定存储方案和访问策略 |
精读启发:很多团队的数据架构止步于ER图,缺少对"数据该怎么存、怎么流转、怎么治理"的技术规划。这份文档把数据分类和后续的"数据部署设计"挂钩——不同类别的数据对应不同的物理存储方案和备份策略。
5.3 数据部署:与部署模式联动
数据部署设计同样按照"网省集中"和"地市集中"两种模式分别展开,详细描述了每种模式下:
- 生产数据库如何部署
- 历史数据如何归档
- 数据同步和交换如何实现
这种"数据跟着部署走"的设计思路,确保了应用架构和数据架构之间的一致性。
六、技术架构设计:SOA+组件化的技术底座
6.1 技术选型背后的逻辑
第五章的技术架构设计,核心思路是两个关键词:组件化(Component) 和 面向服务(SOA)。
文档的技术分层是这样的:
|
|
2011年选择J2EE+SOA,在当时是非常主流且稳妥的技术路线。文档不仅说了"选什么",还解释了"为什么选"——组件化是为了支持业务功能的灵活组合,SOA是为了实现跨系统的服务调用和流程编排。
精读启发:技术架构最忌讳的就是"罗列技术名词"。这份文档的优点在于,它把每个技术选择和业务需求挂钩——工作流技术是因为营销业务流程复杂且多变,SOA是因为需要与银电联网等外部系统集成。
6.2 关键技术的深度展开
文档对"工作流技术"和"性能优化技术"做了特别深入的展开。工作流部分详细说明了流程引擎的选择标准、流程定义的规范、以及流程监控的机制。性能优化部分则从数据库优化、应用服务器优化、网络优化三个层面给出了具体措施。
笔记心得:技术架构章节的深度应该不均匀。对于项目的核心技术难点(如本例中的工作流和性能),要花大量篇幅讲清楚;对于标准技术(如HTTP协议、TCP/IP),一笔带过即可。
七、物理架构设计:从逻辑到落地的"最后一公里"
7.1 为什么物理架构要单独成章
在很多架构文档中,物理部署只是技术架构的一个小节。但这份文档用了整整一章来讲物理架构,内容涵盖:
- 物理部署方案(分两种模式)
- 主机系统(数据库服务器、应用服务器的具体配置)
- 存储系统(性能需求、容量估算、配置建议)
- 备份系统(备份策略、技术方案、方案设计)
- 95598呼叫中心平台(接入方式、容量估算、部署设计)
- 网络要求(网络构成、带宽需求、QoS要求)
- 异地容灾(容灾技术选择、建设要求)
- 开发测试环境
- 软件平台规划(操作系统、数据库、中间件、备份软件)
7.2 容量估算:架构文档的"硬核"内容
文档在物理架构部分做了详细的容量估算——根据客户规模推算数据量,根据数据量和交易频率推算服务器配置,根据服务器数量推算存储容量和网络带宽。
这种"业务量→数据量→计算量→硬件配置"的推导链条,是架构文档中最有实操价值的部分。开发人员看到这一章就知道:我这个系统要处理多大的数据、用多高配置的机器、网络带宽够不够。
| 客户规模 | 生产库容量(估算) | 应用服务器数量 | 网络带宽要求 |
|---|---|---|---|
| 500万户以下 | XX TB | X台 | XX Mbps |
| 500-1000万户 | XX TB | X台 | XX Mbps |
| 1000万户以上 | XX TB | X台 | XX Mbps |
精读启发:没有容量估算的架构文档,就像没有配方的菜谱——你知道要放盐,但不知道放多少。一份能指导落地的架构文档,必须回答"多少"这个问题。
八、应用集成设计:系统不是孤岛
8.1 三个集成维度
第七章把集成需求分成三个维度:
- 与企业级集成平台的集成——目录服务、企业门户、数据中心、应用集成平台、流程集成
- 与企业内部其他业务的集成——与财务、物资、人资等兄弟系统的数据和流程交互
- 与外部系统的集成——银电联网(与银行系统的实时交互)、第三方代收等
这种分类方式的优点在于:它把集成的边界画清楚了。哪些集成走企业内部ESB,哪些走外部专线,哪些走互联网通道——不同的通道意味着不同的安全要求、不同的协议标准、不同的性能约束。
8.2 集成设计的"落地细节"
文档在描述银电联网集成时,详细给出了:
- 交互协议(TCP长连接/短连接)
- 报文格式(定长报文/XML)
- 交易码定义
- 超时和重试机制
- 对账和差错处理
精读启发:集成设计最怕"大而化之"——“本系统通过ESB与XX系统集成”。真正能指导开发落地的集成设计,必须给出协议、报文、异常处理的具体方案。
九、安全架构设计:不只是"加个防火墙"
9.1 从风险分析出发
第八章的安全架构设计有一个很好的起点:先做风险分析,再定安全策略。文档列出了营销系统面临的主要安全威胁:
- 非法用户越权访问
- 合法用户滥用权限
- 敏感数据泄露
- 外部网络攻击
- 操作抵赖
然后针对每类威胁,设计对应的防护措施。这种"威胁→措施"的对应关系,比直接罗列安全技术更有说服力。
9.2 六层安全防护体系
文档设计了六个层面的安全防护:
| 安全层面 | 关键措施 |
|---|---|
| 用户认证 | 统一目录服务、LDAP集成、多因素认证 |
| 权限管理 | 基于角色的访问控制(RBAC)、数据级权限 |
| 审计管理 | 操作日志、安全审计、异常行为检测 |
| 数据安全 | 传输加密、存储加密、数据脱敏 |
| 终端控制 | 终端准入、USB管控、屏幕水印 |
| 基础环境 | 物理安全、网络安全分区、系统加固 |
笔记心得:安全架构的关键不在于用多先进的技术,而在于覆盖度——从用户登录到数据落盘,每一个环节都有对应的防护措施。这份文档的安全设计虽然技术手段是2011年的水平,但覆盖面非常完整。
十、配套的架构方法论:三阶段驱动的设计流程
精读完文档本体,再来看配套的《信息化总体架构设计方法论》,就能理解这份文档为什么是这么组织的。
方法论把架构设计分成三个阶段:
阶段一:分析现状
- 审阅已有架构资产
- 发放评估调查问卷
- 与业务和技术人员深入访谈
- 输出:现状评估报告(业务现状、数据现状、应用现状、技术现状、组织现状)
阶段二:设计架构
- 业务架构设计(流程分级、场景定义、流程创建)
- 应用架构设计(功能划分、边界确定、集成关系、应用分布)
- 数据架构设计(概念模型、逻辑模型、数据流转)
- 技术架构设计(技术选型、平台组件、部署方案)
阶段三:制定路线
- 识别差距和优先级
- 制定演进路线图
- 规划分阶段实施计划
笔记心得:这套方法论最大的价值是定义了架构角色和职责分工——企业架构师、业务架构师、应用架构师、数据架构师、技术架构师、项目经理、架构资产管理员,每个角色都有明确的职责和技能要求。这种RACI矩阵式的分工,是大型架构项目不跑偏的组织保障。
十一、批判性审视:这份文档的五个不足
夸完了优点,也该说说不足。带着今天的视角审视,这份文档有几个明显可以改进的地方:
不足一:缺少量化的架构决策记录
文档虽然做了很多设计选择(比如两种部署模式、SOA技术路线),但没有记录"为什么选A不选B"的决策过程。好的架构文档应该包含ADR(Architecture Decision Record),记录每个关键决策的背景、选项、评估和结论。
不足二:非功能性需求不够具体
文档提到了"7×24小时运行"、“满足未来3-5年发展"等要求,但缺少具体的SLA指标:系统响应时间是多少?并发用户数是多少?数据恢复时间目标(RTO)是多少?这些数字应该是架构设计的硬约束。
不足三:演进路线图缺失
文档描述了目标架构,但没有给出从现状到目标的迁移路径。哪些模块先建、哪些后建、过渡期怎么并行运行——这些是项目落地时最头疼的问题,文档里没有回答。
不足四:架构治理机制薄弱
虽然配套方法论提到了"架构遵从"的概念,但文档本身缺少治理机制的描述:谁来审查架构合规性?多久审查一次?发现偏离怎么处理?没有治理的架构,就像没有交警的交通规则。
不足五:成本估算和ROI分析缺失
对于一份要指导投资决策的架构文档来说,缺少成本估算是一个遗憾。两套部署方案分别需要多少硬件投入?SOA改造的人力成本是多少?这些数字是管理层审批项目的关键依据。
十二、可复用的架构文档框架:从这份文档提炼
综合以上分析,如果要写一份能真正指导落地的IT架构设计文档,可以参考以下框架:
推荐的文档结构
|
|
每个章节的核心交付物
| 章节 | 必须回答的核心问题 |
|---|---|
| 现状诊断 | 现在有什么、缺什么、哪里痛 |
| 架构愿景 | 要到哪里去、为什么 |
| 业务架构 | 业务到底在做什么、该怎么做 |
| 应用架构 | 系统怎么划分、模块怎么交互 |
| 数据架构 | 数据怎么组织、怎么流转、怎么治理 |
| 技术架构 | 用什么技术栈、为什么选它 |
| 物理架构 | 需要多少机器、多大存储、多宽带宽 |
| 安全架构 | 面临什么威胁、怎么防护 |
| 迁移规划 | 怎么从现在走到目标、分几步走 |
| 架构治理 | 怎么保证大家按规矩来 |
十三、架构文档的生命力在于"可执行”
精读这份文档,最大的感触是:好的架构文档不是PPT,是施工图。
它有明确的层次推导(业务→应用→数据→技术→物理),有具体的部署方案(两种模式可选),有容量估算(多少机器、多大存储),有集成细节(什么协议、什么报文格式)。开发人员拿到这份文档,虽然还需要做详细设计,但大方向不会跑偏。
相比之下,今天很多"架构文档"其实只是一堆漂亮的架构图加上模糊的原则描述。看起来很高大上,但真要照着做项目时,处处都是坑。
有句话说:“文档的厚度决定了团队沟通的成本。” 架构文档写得越具体、越可操作,后面开发、测试、运维的扯皮就越少。
如果你正在写或即将写一份架构设计文档,记住三个检验标准:
- 开发人员能不能照着做详细设计? 如果不能,说明应用架构和技术架构写得不够细。
- 运维人员能不能照着做资源规划? 如果不能,说明物理架构和容量估算缺失。
- 项目经理能不能照着做项目排期? 如果不能,说明迁移规划和阶段划分不够清晰。
满足这三条,你的架构文档就从"摆设"变成了"工具"——而这,才是一份架构文档存在的真正意义。