047 架构学习③设计文档【技术】

1 需求介绍

[需求介绍主要描述需求的背景、目标、范围等]

性能问题,耦合问题,效率问题……基于以上背景,我们需要XXX。

2 需求分析

[需求分析主要全方位地描述需求相关的信息]

5W:Who、When、What、Why、Where

Who:需求利益干系人,包括开发者、使用者、购买者、决策者等。

When:需求使用时间,包括季节、时间、里程碑等。

What:需求的产出是什么,包括系统、数据、文件、开发库、平台等。

Where:需求的应用场景,包括国家、地点、环境等,例如测试平台只会在测试环境使用。

Why:需求需要解决的问题,通常和需求背景相关。

8C:指的是8个约束和限制,即Constraints,包括性能Performance、成本Cost、时间Time、可靠性Reliability、安全性Security、合规性Compliance、技术性Technology、 兼容性Compatibility

注:需求中涉及的性能、成本、可靠性等仅仅是利益关联方提出的诉求,不一定准确;如果经过分析有的约束没有必要,或成本太高、难度太大,这些约束是可以调整的。

性能:需要达到Kafka的性能水平。

成本:参考XX公司的设计方案,不超过10台服务器。

时间:期望3个月内上线第一个版本,在两个业务尝试使用。

可靠性:按照业务的要求,消息队列系统的可靠性需要达到99.99%。

安全性:消息队列系统仅在生产环境内网使用,无需考虑网络安全;如消息中有敏感信息,消息发送方需要自行进行加密,消息队列系统本身不考虑通用的加密。

合规性:消息队列系统需要按照公司目前的DevOps规范进行开发。

技术性:目前团队主要研发人员是Java,最好用Java开发。

兼容性:之前没有类似系统,无需考虑兼容性。

复杂度分析

[分析需求的复杂度,复杂度常见的有高可用、高性能、可扩展等]

备选方案

[备选方案设计,至少3个备选方案,每个备选方案需要描述关键的实现,无须描述具体的实现细节]

备选方案1:直接引入开源Kafka。[此处省略方案描述]

备选方案2:集群 + MySQL存储。[此处省略方案描述]

备选方案3:集群 + 自研存储。[此处省略方案描述]

备选方案评估

[备选方案360度环评。注意备选方案评估的内容会根据评估会议的结果进行修改,也就是说架构师首先给出自己的备选方案评估,然后举行备选方案评估会议,再根据会议结论修改备选方案文档]

3 架构设计

[备选方案评估后会选择一个方案落地实施,架构设计文档就是用来详细描述细化方案的]

总体方案

[总体方案需要从整体上描述方案的结构,其核心内容就是架构图,以及针对架构图的描述,包括模块或者子系统的职责描述、核心流程]

架构总览

[架构总览给出架构图以及架构的描述]

核心流程

消息发送流程。[此处省略流程描述]

消息读取流程。[此处省略流程描述]

详细设计

[详细设计需要描述具体的实现细节]

高可用设计

消息发送可靠性

消息存储可靠性

消息读取可靠性

高性能设计

可扩展设计

安全设计

身份识别

队列权限

其他设计

[其他设计包括上述以外的其他设计考虑点,例如指定开发语言、符合公司的某些标准等,如果篇幅较长,也可以独立进行描述]

部署方案

[部署方案主要包括硬件要求、服务器部署方式、组网方式等]

4 架构演进规划

[通常情况下,规划和设计的需求比较完善,但如果一次性全部做完,项目周期可能会很长,因此可以采取分阶段实施,即:第一期做什么、第二期做什么,以此类推]

你可能感兴趣的:(047 架构学习③设计文档【技术】)