技术文档中的各种架构图该怎么画? by彭文华

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,8核32GB 100GB 1个月
简介: 技术文档中的各种架构图该怎么画? by彭文华

这是彭文华的第173篇原创

哎呀妈呀,现在催稿群里的要求越来越高了啊!你看看这哥们的要求,太难了好吗???

不过这还真是系统架构师该干的事情。话说我最近写的东西的确有些偏了,我认真反省,坚决改正!感谢兄弟们。


系统架构,架构啥?

虽然我本硕都是软件工程专业,软件设计是一直在学的,软件架构设计思想也早早的学过,但是很长一段时间都不知道架构到底是个啥东西。刚入行的时候只会写代码,后来变老手了,就开始写项目文档。

一开始还接触不到核心,只是写自己工作内容相关的。之后当项目经理,就能看到完整的项目文档,但是仍然不太明白为啥要那么多架构图。什么总体架构、逻辑架构、数据架构、功能架构、网络架构、运行架构等等。

我反正是一头的雾水,只顾把自己那摊子事儿搞定就完事了。其他的就追着开发那边给画。而且乙方做项目,基本都是先干活,后补文档。后来,随着项目越做越多,学习的知识也越来越丰富,最重要的是文档越写越多,慢慢的我也就明白了。

其实系统架构,说白了,就相当于房子的设计过程。需要一个总体的样子,还得有里面的支撑结构,还要设计好水暖管线,外壳的装饰以及样板房的设计。每一个内容都得要一套图纸,产出结果自然就是各种架构图了。


这些架构图都表达啥?

讲真,要写好这篇文章,得把《系统架构师》的考试内容细细的读一遍才行。

我这糙就糙一些吧,你看个大概,回头我再细化,写的不对的地方,可以加我微信,给我提意见,我给发红包。


总体架构

总体架构呢,就是买房的时候进门看到的那个大沙盘:整个小区有多大,楼有多高、里面的环境是咋样的?都有哪些配套?方方面面看个大概。所以总体架构基本上把下面所有的架构都体现了。下面所有的架构也都是要与总体架构保持一致。

总体架构需要说明几件事情:

1、整个系统的硬件设置是怎么回事?

2、数据大概是从哪里来,怎么采集、存储、处理、交换的?

3、做了哪些功能抽象,以便于支撑上层的应用?

4、提供些业务应用?管理、控制等功能有哪些?

5、终端用户怎么访问和使用这些应用?

6、该系统与外部系统是怎么进行对接的?

7、如何保障整个系统的安全、可靠、高质量的建设?

这个整体架构还是比较简单的,复杂的手机上没法看。你打开看个意思就行了。


逻辑架构

其实总体架构有了,逻辑架构也就有了。为啥呢?如果说总体架构是整个小区的沙盘,那逻辑架构就是这栋楼房了。把小区大门、绿地、路等保障小区安全、有序的东西去掉。所以逻辑架构里会去掉各种保障、底层的硬件基础等非软件开发逻辑核心的内容。

所以有很多简单的项目压根就不写逻辑架构,直接用总体架构就行了。复杂的呢,就要把上面总体架构中间分层的逻辑给写清楚一些。

逻辑架构设计的目的就是为了告诉读者,整个系统是怎么产生左右的。所谓的系统架构,主要说的就是这部分。早期的单体架构、后面的各种分层架构、微服务、服务网格等,说的都是在这里进行设计。

在设计的时候,会用到很多种设计模式,比如你看到有一个应用支撑层/服务层之类的,这就是做了一个MVC,把业务逻辑和用户前端分离。而所有的逻辑架构都有数据层,这是最早的MVP,即数据、用户视图和处理逻辑分离。当然,系统越复杂,架构图就越复杂。这里只是给一个简单的图供你参考了。

应用架构

顾名思义,就是应用太丰富了,需要整理整理。内部有哪些应用,怎么对外部提供服务。很多项目都没有这个,因为应用比较少,不值得多废点人工单独写。

技术架构

技术架构要干啥也就很清楚了,就是每一层,我们都用什么组件、什么技术解决什么问题。

数据架构

数据架构其实就是从数据侧描述数据怎么来、怎么存、怎么加工、怎么使用。就像这样:

从数据源开始,数据通过哪些方式集成过来;集成到数仓之后,都存在哪里,数仓怎么分层,每一层都干啥;在数据集市中又怎么存、怎么管;到数据应用层又提供些应用。上面所有的一切,都用什么技术,什么组件,解决什么问题。

部署架构

部署架构也叫网络架构,就是底层服务器、网路的设计,提供网络安全、服务可靠性的设计。再简单一些理解,就是你这些应用、数据库都放在那台服务器上,这些服务器都在哪个ip端,怎么进行访问。

功能架构

这个没啥好说的,就是你的前台页面的功能菜单的目录结构。你怎么组织系统的所有功能,给用户提供相应的服务。

运行架构

运行架构其实就是软件内部,这些系统内部是怎么运转的,一般会画很多时序图、状态图、活动图。这玩意可费劲了,我们一般不单独画一个运行架构,而是在概要和详细设计里画。


区别与联系

传统信息系统项目和大数据项目还是有很显著的区别的。从架构层面上来说,该有的肯定都得有,只不过其中的内容会有侧重点。我简单对比一下,您将就着看:

对比项 传统IT项目 大数据项目
重点 80%应用 80%数据
类型 OLTP事务处理 OLAP分析处理
安全 应用安全 数据安全、质量、治理
总体架构 侧重业务应用 放大数据层
逻辑架构 各种SOA、微服务 各种DW、OLAP分层
技术架构 什么Spring、JSP、Ajax 各种Hadoop生态组件
数据架构 侧重关系型数据库 侧重分布式数据库
部署架构 一般主从即可 集群
功能/运行 看项目,无偏向 看项目,无偏向


总结

所的架构都是基于业务出发的,因此脱离实际业务的架构都是无意义的。

我们在进行架构设计的时候,需要用不同的图形来解释、阐释整个系统运行的肌理。

总体架构涵盖系统的方方面面;

逻辑架构阐述整个系统是如何实现业务需求的;

技术架构则从技术实现的角度阐述系统的构造;

数据架构讲解数据从哪来,到哪里去;

部署架构则讲清楚系统放在那台服务器上,怎么才能访问到;

功能架构用来组织业务功能;

运行架构则解析系统内部运行机理。

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
510特辑 | 读懂阿里日,也就读懂了阿里
510特辑 | 读懂阿里日,也就读懂了阿里
514 0
|
Java 程序员 数据库
黄山归来不看岳:《Java开发手册(黄山版)》新增 11 条规约
黄山归来不看岳:《Java开发手册(黄山版)》新增 11 条规约
5667 0
黄山归来不看岳:《Java开发手册(黄山版)》新增 11 条规约
“阿里味”GitHub新春上新NO.1软件架构设计与业务架构融合手册
软件架构设计的本质,是对问题域空间反复运用演绎、抽象、归纳等方法,进而找到适合当前阶段的设计方案的过程。既要考虑软件随业务发展的纵横向扩展性,也要考虑软件自身的可行性、稳定性和可维护性等技术因素。
|
新零售 人工智能 缓存
泰山众筹(阿凡达4.0)系统开发详细及方案丨泰山众筹(阿凡达4.0)开发源码及平台
新零售是指个人、企业以互联网为依托,通过运用大数据、人工智能等先进技术手段并运用心理学知识,对商品的生产、流通与销售过程进行升级改造,进而重塑业态结构与生态圈,并对线上服务、线下体验以及现代物流进行深度融合的零售新模式。
阿凡达(泰山众筹)开发原理丨阿凡达(泰山众筹)系统开发(详情开发)丨阿凡达及泰山众筹源码案例部署
交易是否能够结束的关键计算在SwapMath.computeSwapStep中完成,这里计算了交易是否能在目标价格范围内结束,以及消耗的tokenIn和得到的tokenOut.这里摘取此函数部分代码进行分析
|
存储 编译器 区块链
泰山众筹阿凡达开发(升级版)丨泰山众筹阿凡达系统开发(案例及开发)丨泰山众筹阿凡达开发源码及部署
 The blockchain social new retail system is a decentralized platform to create a new trading model.Blockchain technology is a marketing system that can decentralize sales.Through it,an open marketing ecosystem is built for businesses to promote the sales ecological cycle.Through the blockchain mall
|
新零售 大数据
阿凡达泰山众筹4.0开发功能丨阿凡达泰山众筹4.0系统开发详细及逻辑方案丨阿凡达泰山众筹4.0系统源码案例部署
新零售指的就是新型零售商业模式,将线上与线下进行融合,消费者可以从线上进行选物,然后到线下门店进实际体验,另外还可以通过大数据来了解消费者的消费习惯,从而提供更加完善的服务。
|
弹性计算 运维 监控
20 张图搞懂「分布式事务」 | 🏆 技术专题第五期征文(上)
20 张图搞懂「分布式事务」 | 🏆 技术专题第五期征文(上)
20 张图搞懂「分布式事务」 | 🏆 技术专题第五期征文(上)
|
SQL 消息中间件 算法
20 张图搞懂「分布式事务」 | 🏆 技术专题第五期征文(下)
20 张图搞懂「分布式事务」 | 🏆 技术专题第五期征文(下)
20 张图搞懂「分布式事务」 | 🏆 技术专题第五期征文(下)
|
测试技术 API Android开发
[雪峰磁针石博客]软件测试专家工具包3移动端
UI Automator UI Automator提供了一组API来构建基于交互UI的测试。API允许你执行操作,如打开设置菜单,非常适合黑盒自动化测试,在测试代码不依赖于应用的内部实现 uiautomatorviewer提供了一个方便的图形用户界面进行扫描和分析在Android设备上当前显示的UI组件。