【建议收藏】手把手教你画一个项目的技术架构图
本文相关资料下载识别下方二维码,回复【架构】,获得下载链接。
之后会持续整理一些可下载的学习资料分享给大家,大家记得将公众号设置星标哦!更多资料获取、学习交流后台回复【加群】
系统架构,架构啥?
虽然我本硕都是软件工程专业,软件设计是一直在学的,软件架构设计思想也早早的学过,但是很长一段时间都不知道架构到底是个啥东西。刚入行的时候只会写代码,后来变老手了,就开始写项目文档。
一开始还接触不到核心,只是写自己工作内容相关的。之后当项目经理,就能看到完整的项目文档,但是仍然不太明白为啥要那么多架构图。什么总体架构、逻辑架构、数据架构、功能架构、网络架构、运行架构等等。
我反正是一头的雾水,只顾把自己那摊子事儿搞定就完事了。其他的就追着开发那边给画。而且乙方做项目,基本都是先干活,后补文档。后来,随着项目越做越多,学习的知识也越来越丰富,最重要的是文档越写越多,慢慢的我也就明白了。
其实系统架构,说白了,就相当于房子的设计过程。需要一个总体的样子,还得有里面的支撑结构,还要设计好水暖管线,外壳的装饰以及样板房的设计。每一个内容都得要一套图纸,产出结果自然就是各种架构图了。
这些架构图都表达啥?
讲真,要写好这篇文章,得把《系统架构师》的考试内容细细的读一遍才行。
我这糙就糙一些吧,你看个大概,回头我再细化,写的不对的地方,可以加我微信,给我提意见,我给发红包。
总体架构
总体架构呢,就是买房的时候进门看到的那个大沙盘:整个小区有多大,楼有多高、里面的环境是咋样的?都有哪些配套?方方面面看个大概。所以总体架构基本上把下面所有的架构都体现了。下面所有的架构也都是要与总体架构保持一致。
总体架构需要说明几件事情:
1、整个系统的硬件设置是怎么回事?
2、数据大概是从哪里来,怎么采集、存储、处理、交换的?
3、做了哪些功能抽象,以便于支撑上层的应用?
4、提供哪些业务应用?管理、控制等功能有哪些?
5、终端用户怎么访问和使用这些应用?
6、该系统与外部系统是怎么进行对接的?
7、如何保障整个系统的安全、可靠、高质量的建设?
这个整体架构还是比较简单的,复杂的手机上没法看。你打开看个意思就行了。
逻辑架构
其实总体架构有了,逻辑架构也就有了。为啥呢?如果说总体架构是整个小区的沙盘,那逻辑架构就是这栋楼房了。把小区大门、绿地、路等保障小区安全、有序的东西去掉。所以逻辑架构里会去掉各种保障、底层的硬件基础等非软件开发逻辑核心的内容。
所以有很多简单的项目压根就不写逻辑架构,直接用总体架构就行了。复杂的呢,就要把上面总体架构中间分层的逻辑给写清楚一些。
逻辑架构设计的目的就是为了告诉读者,整个系统是怎么产生左右的。所谓的系统架构,主要说的就是这部分。早期的单体架构、后面的各种分层架构、微服务、服务网格等,说的都是在这里进行设计。
在设计的时候,会用到很多种设计模式,比如你看到有一个应用支撑层/服务层之类的,这就是做了一个MVC,把业务逻辑和用户前端分离。而所有的逻辑架构都有数据层,这是最早的MVP,即数据、用户视图和处理逻辑分离。当然,系统越复杂,架构图就越复杂。这里只是给一个简单的图供你参考了。
应用架构
顾名思义,就是应用太丰富了,需要整理整理。内部有哪些应用,怎么对外部提供服务。很多项目都没有这个,因为应用比较少,不值得多废点人工单独写。
技术架构
技术架构要干啥也就很清楚了,就是每一层,我们都用什么组件、什么技术解决什么问题。
数据架构
数据架构其实就是从数据侧描述数据怎么来、怎么存、怎么加工、怎么使用。就像这样:
从数据源开始,数据通过哪些方式集成过来;集成到数仓之后,都存在哪里,数仓怎么分层,每一层都干啥;在数据集市中又怎么存、怎么管;到数据应用层又提供哪些应用。上面所有的一切,都用什么技术,什么组件,解决什么问题。
部署架构
部署架构也叫网络架构,就是底层服务器、网路的设计,提供网络安全、服务可靠性的设计。再简单一些理解,就是你这些应用、数据库都放在那台服务器上,这些服务器都在哪个ip端,怎么进行访问。
功能架构
这个没啥好说的,就是你的前台页面的功能菜单的目录结构。你怎么组织系统的所有功能,给用户提供相应的服务。
运行架构
运行架构其实就是软件内部,这些系统内部是怎么运转的,一般会画很多时序图、状态图、活动图。这玩意可费劲了,我们一般不单独画一个运行架构,而是在概要和详细设计里画。
区别与联系
传统信息系统项目和大数据项目还是有很显著的区别的。从架构层面上来说,该有的肯定都得有,只不过其中的内容会有侧重点。我简单对比一下,您将就着看:
对比项 | 传统IT项目 | 大数据项目 |
重点 | 80%应用 | 80%数据 |
类型 | OLTP事务处理 | OLAP分析处理 |
安全 | 应用安全 | 数据安全、质量、治理 |
总体架构 | 侧重业务应用 | 放大数据层 |
逻辑架构 | 各种SOA、微服务 | 各种DW、OLAP分层 |
技术架构 | 什么Spring、JSP、Ajax | 各种Hadoop生态组件 |
数据架构 | 侧重关系型数据库 | 侧重分布式数据库 |
部署架构 | 一般主从即可 | 集群 |
功能/运行 | 看项目,无偏向 | 看项目,无偏向 |
总结
所有的架构都是基于业务出发的,因此脱离实际业务的架构都是无意义的。
我们在进行架构设计的时候,需要用不同的图形来解释、阐释整个系统运行的肌理。
总体架构涵盖系统的方方面面;
逻辑架构阐述整个系统是如何实现业务需求的;
技术架构则从技术实现的角度阐述系统的构造;
数据架构讲解数据从哪来,到哪里去;
部署架构则讲清楚系统放在那台服务器上,怎么才能访问到;
功能架构用来组织业务功能;
运行架构则解析系统内部运行机理。
--end--
扫描下方二维码添加好友,备注【交流】
可私聊交流,也可进资源丰富学习群更文不易,点个“在看”支持一下????
【建议收藏】手把手教你画一个项目的技术架构图相关推荐
- Azure 深入浅出[3]: 如何在MS Visio里面画专业的Azure技术架构图?
1.前言 笔者最近在研究Azure,需要画Azure的技术架构图:画Azure架构图的方法很多,有在线的工具,有基于Azure的PPT模板,同时也有笔者这样选择用最传统的微软的工具:MS Visio来 ...
- 画一个客户画像系统架构图
好的,我会尽力用中文为您画出一幅客户画像系统架构图. 首先,客户画像系统通常由以下几个部分组成: 数据收集和存储:这一部分负责从各种来源收集客户数据,并将这些数据存储在数据仓库或数据库中.常见的数据来 ...
- 七夕整活?没有难度!手把手教你画个戒指送给ta!
七夕了,整点浪漫的!虽然没有对象,但是该浪的还是得浪起来(手动狗头)! 那就送个戒指吧!看着这些好看的戒指,是不是有内味了,走起,手把手教你画一个! 一.准备工作 一款三维软件,我用的是Solidwo ...
- 手把手教你做一个物联网视频监控项目(三)流媒体方案实现
往期文章 手把手教你做一个物联网视频监控项目(一) 介绍 手把手教你做一个物联网视频监控项目(二)MJPG-streamer方案实现 文章目录 前言 一.软硬件准备 二.流媒体方案的实现之FFmpeg ...
- 手把手教你完成一个数据科学小项目(7):经纬度获取与BDP可视化
前言 请先阅读"中国年轻人正带领国家走向危机",这锅背是不背? 一文,以对"手把手教你完成一个数据科学小项目"系列有个全局性的了解. 本系列代码统一开源在Git ...
- 手把手教你完成一个数据科学小项目(9):情感分析与词云
前言 请先阅读"中国年轻人正带领国家走向危机",这锅背是不背? 一文,以对"手把手教你完成一个数据科学小项目"系列有个全局性的了解. 本系列代码统一开源在Git ...
- 手把手教你实现一个canvas智绘画板
手把手教你实现一个canvas智绘画板 下载地址 前言 本文主要介绍: 项目介绍 项目效果展示 一步步实现项目效果 踩坑 一.项目介绍 名称: 智绘画板 技术栈: HTML5,CSS3,JavaScr ...
- 手把手教你撸一个Web汇率计算器
手把手教你撸一个Web汇率计算器 前言 前段时间刚接触到前端网页开发,但是对于刚入门的小白而言,像flask.Django等这类稍大型的框架确实不太适合,今天这个Dash是集众家之长于一体的轻量化We ...
- 还没理解微前端?手把手教你实现一个迷你版
大厂技术 高级前端 Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 最近看了几个微前端框架的源码(single-spa[1].qiankun[2].micro- ...
- PWA入门:手把手教你制作一个PWA应用
摘要: PWA图文教程 原文:PWA入门:手把手教你制作一个PWA应用 作者:MudOnTire Fundebug经授权转载,版权归原作者所有. 简介 Web前端的同学是否想过学习app开发,以弥补自 ...
最新文章
- 基于多准则决策分析的多因素降维方法检测基因基因相互作用 Multi-factor dimensionality reduction method based on multi-criteria dec
- Selenium Web 自动化 - 如何找到元素
- vue过渡和animate.css结合使用
- Java 8 的 JVM 有多快?Fork-Join 性能基准测试
- STM32单片机工作日记
- 24岁博士毕业,受聘211高校副教授,90后开挂背后是自律和坚持
- 微服务开发及部署_基于 Kubernetes 的微服务部署即代码
- ISO 9001质量管理体系标准概述
- 基于OpenCV实战:动态物体检测
- ARM9开发板实验笔记(1)
- Spectre V1理论与实践
- python sin_Python入门之三角函数sin()函数实例详解
- 分治算法 循环比赛日程表
- Mac 系统下java端口占用
- 什么是交互设计,为什么要进行交互设计
- GHGL项目-其他问题锦集
- fgetc php,php fgetc函数怎么用
- docker查看内部tcp长连接
- 小程序 订阅消息 wx.requestSubscribeMessage 允许 拒绝 情况的返回 结果
- 黑马程序员机器学习Day2学习笔记
热门文章
- 【论文阅读】深度学习与多种机器学习方法在不同的药物发现数据集进行对比
- gis 联合 融合_GIS空间数据融合方法
- theano安装教程 linux,Ubuntu安装Theano+CUDA
- Astah Professional三维图,网络上轻松上传图表
- oracle12162错误,ORA-12162: TNS:net service name is incorrectly specified报错问题如何解决?...
- 【转】MapGIS K9基础系列(二)
- MongoDB 下载地址列表
- coturn NAT穿透服务器搭建
- 数据分析师出品丨采购周报模板
- html5网页及Cocos中生成二维码