技术文档中的各种架构图该怎么画? by彭文华
这是彭文华的第173篇原创
哎呀妈呀,现在催稿群里的要求越来越高了啊!你看看这哥们的要求,太难了好吗???
不过这还真是系统架构师该干的事情。话说我最近写的东西的确有些偏了,我认真反省,坚决改正!感谢兄弟们。
系统架构,架构啥?
虽然我本硕都是软件工程专业,软件设计是一直在学的,软件架构设计思想也早早的学过,但是很长一段时间都不知道架构到底是个啥东西。刚入行的时候只会写代码,后来变老手了,就开始写项目文档。
一开始还接触不到核心,只是写自己工作内容相关的。之后当项目经理,就能看到完整的项目文档,但是仍然不太明白为啥要那么多架构图。什么总体架构、逻辑架构、数据架构、功能架构、网络架构、运行架构等等。
我反正是一头的雾水,只顾把自己那摊子事儿搞定就完事了。其他的就追着开发那边给画。而且乙方做项目,基本都是先干活,后补文档。后来,随着项目越做越多,学习的知识也越来越丰富,最重要的是文档越写越多,慢慢的我也就明白了。
其实系统架构,说白了,就相当于房子的设计过程。需要一个总体的样子,还得有里面的支撑结构,还要设计好水暖管线,外壳的装饰以及样板房的设计。每一个内容都得要一套图纸,产出结果自然就是各种架构图了。
这些架构图都表达啥?
讲真,要写好这篇文章,得把《系统架构师》的考试内容细细的读一遍才行。
我这糙就糙一些吧,你看个大概,回头我再细化,写的不对的地方,可以加我微信,给我提意见,我给发红包。
总体架构
总体架构呢,就是买房的时候进门看到的那个大沙盘:整个小区有多大,楼有多高、里面的环境是咋样的?都有哪些配套?方方面面看个大概。所以总体架构基本上把下面所有的架构都体现了。下面所有的架构也都是要与总体架构保持一致。
总体架构需要说明几件事情:
1、整个系统的硬件设置是怎么回事?
2、数据大概是从哪里来,怎么采集、存储、处理、交换的?
3、做了哪些功能抽象,以便于支撑上层的应用?
4、提供哪些业务应用?管理、控制等功能有哪些?
5、终端用户怎么访问和使用这些应用?
6、该系统与外部系统是怎么进行对接的?
7、如何保障整个系统的安全、可靠、高质量的建设?
这个整体架构还是比较简单的,复杂的手机上没法看。你打开看个意思就行了。
逻辑架构
其实总体架构有了,逻辑架构也就有了。为啥呢?如果说总体架构是整个小区的沙盘,那逻辑架构就是这栋楼房了。把小区大门、绿地、路等保障小区安全、有序的东西去掉。所以逻辑架构里会去掉各种保障、底层的硬件基础等非软件开发逻辑核心的内容。
所以有很多简单的项目压根就不写逻辑架构,直接用总体架构就行了。复杂的呢,就要把上面总体架构中间分层的逻辑给写清楚一些。
逻辑架构设计的目的就是为了告诉读者,整个系统是怎么产生左右的。所谓的系统架构,主要说的就是这部分。早期的单体架构、后面的各种分层架构、微服务、服务网格等,说的都是在这里进行设计。
在设计的时候,会用到很多种设计模式,比如你看到有一个应用支撑层/服务层之类的,这就是做了一个MVC,把业务逻辑和用户前端分离。而所有的逻辑架构都有数据层,这是最早的MVP,即数据、用户视图和处理逻辑分离。当然,系统越复杂,架构图就越复杂。这里只是给一个简单的图供你参考了。
应用架构
顾名思义,就是应用太丰富了,需要整理整理。内部有哪些应用,怎么对外部提供服务。很多项目都没有这个,因为应用比较少,不值得多废点人工单独写。
技术架构
技术架构要干啥也就很清楚了,就是每一层,我们都用什么组件、什么技术解决什么问题。
数据架构
数据架构其实就是从数据侧描述数据怎么来、怎么存、怎么加工、怎么使用。就像这样:
从数据源开始,数据通过哪些方式集成过来;集成到数仓之后,都存在哪里,数仓怎么分层,每一层都干啥;在数据集市中又怎么存、怎么管;到数据应用层又提供哪些应用。上面所有的一切,都用什么技术,什么组件,解决什么问题。
部署架构
部署架构也叫网络架构,就是底层服务器、网路的设计,提供网络安全、服务可靠性的设计。再简单一些理解,就是你这些应用、数据库都放在那台服务器上,这些服务器都在哪个ip端,怎么进行访问。
功能架构
这个没啥好说的,就是你的前台页面的功能菜单的目录结构。你怎么组织系统的所有功能,给用户提供相应的服务。
运行架构
运行架构其实就是软件内部,这些系统内部是怎么运转的,一般会画很多时序图、状态图、活动图。这玩意可费劲了,我们一般不单独画一个运行架构,而是在概要和详细设计里画。
区别与联系
传统信息系统项目和大数据项目还是有很显著的区别的。从架构层面上来说,该有的肯定都得有,只不过其中的内容会有侧重点。我简单对比一下,您将就着看:
对比项 | 传统IT项目 | 大数据项目 |
重点 | 80%应用 | 80%数据 |
类型 | OLTP事务处理 | OLAP分析处理 |
安全 | 应用安全 | 数据安全、质量、治理 |
总体架构 | 侧重业务应用 | 放大数据层 |
逻辑架构 | 各种SOA、微服务 | 各种DW、OLAP分层 |
技术架构 | 什么Spring、JSP、Ajax | 各种Hadoop生态组件 |
数据架构 | 侧重关系型数据库 | 侧重分布式数据库 |
部署架构 | 一般主从即可 | 集群 |
功能/运行 | 看项目,无偏向 | 看项目,无偏向 |
总结
所有的架构都是基于业务出发的,因此脱离实际业务的架构都是无意义的。
我们在进行架构设计的时候,需要用不同的图形来解释、阐释整个系统运行的肌理。
总体架构涵盖系统的方方面面;
逻辑架构阐述整个系统是如何实现业务需求的;
技术架构则从技术实现的角度阐述系统的构造;
数据架构讲解数据从哪来,到哪里去;
部署架构则讲清楚系统放在那台服务器上,怎么才能访问到;
功能架构用来组织业务功能;
运行架构则解析系统内部运行机理。
扩展阅读:《系统架构设计师考试宝典+各种系统架构图》,公众号“大数据架构师”后台回复“系统架构”即可下载。
我建了一个群,每天分享各种技术文档。加我微信shirenpengwh,咱进群聊~~
配合以下文章享受更佳
下载 | 实时数仓架构设计与选型
干货 | 一口气讲完数据仓建模方法
干货 | 一口气说透中台--给你架构师的视角
干货 | 一口气说穿数据中台-给你架构师的视角
下载 | 贝壳的数据中台工程架构实践之大数据开发平台
我需要你的转发,小小的满足一下我的虚荣心
技术文档中的各种架构图该怎么画? by彭文华相关推荐
- 代码中如何让无序标记的内容并排_英语技术文档中如何正确使用无序列表和有序列表?...
Foreword 之前跟大家分享过英语技术文档中如何正确使用时态和英语技术文档中如何正确使用人称,这一篇再跟大家分享一下如何正确使用无序列表和有序列表. 其实,在技术文档中,除了无序列表和有序列表,另 ...
- md文档中的图片—Github图床自动替换墨滴图床
程序背景 在学习技术的过程中,不乏需要通过写博文或者发博客的形式来记录成长历程,以及撰写技术文章.通常我们会通过搭建图床配合typora来写md文档,但是在发布博客的过程中,会发现github的域名被 ...
- 架构图到底怎么画?老彭带你走一波!
前言 前两天群里有人问,架构图到底怎么画,能不能发来研究一下?手上的架构图其实挺多的,但是大多都涉密,不太方便拿出来. 不过网上公开的资料到处都是啊,随手搜罗几张来给大家分享一下,共3招,告诉你架构图 ...
- 【中文技术文档的写作规范_P03】如何书写标点符号和控制文档体系
通过本文,你将了解到中文技术文档中标点符号和文档体系的写法. 文章目录 标点符号 原则 句号 逗号 顿号 分号 引号 括号 冒号 省略号 感叹号 破折号 连接号 文档体系 结构 文件名 标点符号 原则 ...
- chrome vue.js插件文档_常用web研发技术文档,这里都给你准备好了
研发学习,工作过程中,技术文档是重要的工具之一,但是不少同学使用文档的姿势有点问题,遇到问题就一顿百度,拿着很多不一定对的博客文章翻来翻去还找不到答案,反而浪费了很多时间,我觉得解决日常问题更高效的方 ...
- 使用MATLAB的Kalman Filter做目标跟踪——来自MathWorks网站的技术文档
目录 1.前言 2.正文 2.1 介绍 2.2 目标跟踪的挑战 2.3 使用卡尔曼滤波器跟踪单个目标 2.4 卡尔曼滤波器参数配置 2.5 多目标跟踪 3. 本例中用到的函数 1.前言 本文来自Mat ...
- 技术文档高频英文词汇
摘要 由于笔者本人英语并不好,但经常需要阅读一些英文文档.每次都用谷歌翻译是一件事很头痛的事情.所以平时收录了一些英文技术文档中经常出现的高频词汇供大家来参看,不是很全面,以后会持续更新. 英文简称 ...
- virtualbox中文技术文档_随笔--西门子STEP7中如何寻找技术文档
西门子STEP7软件支持的编程语言除了常用的LAD/FBD/STL,还有SCL/GRAPH等,应该说除了LAD/STL之外,SCL和GRAPH也是比较常用的,至少对我个人来说是这样,但是每种指令在不同 ...
- Markdown *.MD 文件 技术文档 在SDL Trados Studio中翻译
Markdown *.MD 文件 技术文档 在SDL Trados Studio中翻译 Markdown 是一种最新主流的技术文档写作格式,广泛用于API编写,在技术领域十分流行,本篇文档也是在CSD ...
最新文章
- 算法工程师的落地应用公开课
- poj 1236 Network of Schools
- 批量离线下载迅雷快传资源
- Traveling on the Axis (The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online)
- gcc编译python可执行_如何运行Nuitka编译的Python可执行文件
- unity发布成手机app怎么不能被顶_Unity中Android API 28之后无法HTTP请求
- [leetcode sort]56. Merge Intervals
- 【软件体系结构】软件体系结构复杂性
- java jar 启动脚本
- POJ 3668 枚举?
- 阿里云云计算 39在线实验--PolarDB MySQL
- 钉钉直播回放视频的下载方法( fd抓包配合m3u8 )
- jmeter简单使用教程
- 什么是JavaSE/JavaEE/JavaME?
- 国二c语言和南开100题,全国计算机二级C语言题库_南开100题.doc
- ANSYS 有限元分析 接触分析
- python有一对兔子,从出生后第3个月起每个月都生一对兔子
- word里如何在□里打√!框框里打勾!!!!!
- 论文阅读(五):Review of Research on Task-Oriented Spoken Language Understanding
- 百度云服务器BCC中安装pycharm
热门文章
- 斯坦福公开课第6课笔记
- 天府一品茶叶商城平台uni-app开发总结-H5商城
- [CCS 2022] 皇帝没有衣服:用于网络安全的AI/ML
- 正则表达式及常见用法介绍
- 2019上交会即将开幕 思岚科技受邀参展
- C++ QT MYSQL基操
- 亲测89元小度智能音箱,这或许是国民级智能音箱应有的姿态
- 【R】Mac如何配置R和RStudio
- VSCode 配置 C++:VSCode + Clang + Clangd + LLDB + CMake + Git
- android9.0官方下载,vivo正式带来Android 9.0公测版!