一、架构的作用

可能对于很多的公司,其实架构本身的重要性并不大。大家一定明白这回事,架构在实际的开发,在大多数的场景下其实用处并没有书籍和资料中讲的那样重要,甚至是可有可无。这样讲是不有些可笑?是不是觉得挺意外的?但这就是事实。大家可以看看网上对架构师的一些抨击就明白了。那么为什么会这样呢?有以下几个原因:

  1. 大多数的公司和和大多数的项目都规模较小,架构的优势无法体现或者说体现不明显。这就导致架构的意义无法被大家重视。一个只有几千行代码的小程序,大多数情况下,架构能有多大的优势?
  2. 现实的工期太短。往往很多项目不光规模小,开发时间还特别紧,都不愿意甚至不安排架构设计
  3. 开源的依赖。很多公司,特别是中小公司,往往习惯于找个开源的项目,在上面改改,然后就推出了。开源的架构就是项目的架构(没毛病)
  4. PPT架构师的误导。在一些公司,特别是大厂中,存在着不少的PPT架构师,他们的主要作用就是把各种高大上的技术和架构以及思想杂合(而不是有机的融合),搞一个看上去很炫但实际没啥用的架构。它们的目的不是做设计,是为了做宣传
    那架构到底有没有用呢?当然有用,而且非常大。项目规模越大,软件越是复杂,架构越能体现它的优秀之处。不过,不能因循守旧,僵化应用从而形成本本主义和教条主义。要因地制宜,实事求是来进行架构的选型和设计。

二、架构的选型

假如面临一个项目由自己来确定一个架构,如果这是第一次自主进行架构设计,那么第一件事,就是在需求确定的情况下,如何进行架构的选型。正如上面所分析的,要因地制宜,实事求是的进行选择。这话说得,正确而没啥用。那就说一点有用的,来解释下这句话。

  1. 根据项目的大小来选择
    这个最容易选择,如果一个规模较小的程序,比如几千行代码或功能很少的程序。架构的意义一般来说不大。怎么简单怎么来,怎么方便怎么干。
  2. 要根据需求的特点来选择
    这个很容易理解,以一个网站为例,并发是多少?数据量有多大?数据读多还是写多或者都多等等,从而确定相关的架构选型。举一个简单的例子,公司只是做一个展示形象的网站,那基本就可以不考虑架构,做得漂亮一些就可以了。如果数据量很在并且读多写少,就可以使用缓存架构,使用Redis或其它内存型数据库。
  3. 根据公司的开发人员的情况来选择
    这个就是根据开发人员的现在技术能力和水平和选型,比如都是菜鸟,如无必要就不必上一些微服务之类的复杂的架构。另外使用消息架构时,公司的开发人员更熟悉哪个就用个。最典型的就是网络开发,是使用同步还是异步架构?同步简单但异步对开发人员能力要求高。
  4. 根据适当的扩展预期来选择
    公司的业务在未来两到三年,会有一个什么样的发展,公司的发展方向是什么?就可以适当的选用一些容易扩展的架构来实现设计。比如公司是做软硬件一起的项目,那么软件就需要把未来几年可能的公司的相关的硬件都要预留一些扩展,比如使用工厂+库的架构设计。
  5. 根据项目的总成本确定
    比如公司的可投入的人力成本和时间成本以及相关的软硬件成本等。举个例子,公司开发人员挺多,技术水平也高,但公司只给这个项目一个人,时间还紧,钱也少。就得考虑使用简单的架构先完成功能。然后有时间再进行重构甚至重写。

但实际情况是,往往一个项目不是上面一种条件确定的,它一定是全部或几种共同来确定架构的选型。同时,这其中可能每个条件的权重还有所不同,甚至可能随着时间这些权重还是变化,这就需要架构师来动态进行调整了。

三、选型的原则和验证

在上面分析了很多架构选型的方法,那么如何应用他们呢?有以下几个原则,当然这个原则是个人推荐,不是书籍资料上的公认的,算是私有原则:
1、如果架构选型可大可小,就选小
比如开发一个网站,从单体架构到垂直架构到分布式到微服务等等,选择的话,在条件允许的情况下,越简单越好。不要问为什么。
2、如果架构选型可保守可适度可激进,尽可能选择保守。
这里说的是实际的项目而不是一些实验性质的或半实验性质的。说白了就是能简单则简单,不要自己给自己找麻烦。等多做几次架构设计就都明白了
3、如果对未来扩展模楞两可,尽量不选扩展型架构
这种事情,不多说,明白的都明白,不明白的做几回就明白了。说句真心的,大概率是用不上的
4、如果可控范围内,设计者想选用新架构新技术就用
老人常说:“谁拿锄谁定苗”,想怎么舒服就怎么来
5、如果多种选择可选择,哪个方便哪个简单选哪个
不要自己难为自己,也不要难为手下兄弟们
当然,这些私有原则不能拿到台面上,但实际是很有用处的,至于对错,见仁见智吧。

最后,如何能够认为选型是正确的呢?其实就是项目完成的复盘结果,如果基本达到项目的目的,选型就算成功了。对,基本达到项目要求,或者说达到项目最低要求就算成功了。很多项目,包括大公司也一样,在整个开发过程,它们的架构会有一个不断调整的过程。所以,如一个架构基本能坚持到最后并达到了基本的需求,就算成功了。

四、总结

越是抽象,越是灵活。所以做为架构的选型和调整,目的都只有一个,服务于最终的项目成果。架构选择既要灵活又要符合实际情况,如果能找一个整体的平衡点顺利的实现架构目标,那么这个架构就是一个不错的架构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93689.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93689.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93689.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vba学习系列(12)--反射率通过率计算复杂度优化25/8/17

系列文章目录 文章目录系列文章目录前言一、反射率通过率1.整体通过率2.整体通过率3.客户工艺匹配4.机台通过率分析5.镜片通过率罩次分析分析1.1分析1.26.镜片通过率圈数分析分析1.1分析1.28.镜筒通过率圈数分析分析1.1分析1.29.镜筒通过率罩次分析分析1.2总结前言 一、反射率通…

Microsoft WebView2

运行效果 代码如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Form…

GitCode 疑难问题诊疗:全方位指南

一、问题诊断与解决框架1.1 通用问题排查流程在面对 GitCode 问题时,遵循一套科学的排查流程至关重要。首先,详细记录问题出现时的具体操作步骤与相关报错信息,这有助于精准定位问题根源。例如,若在执行git push命令时出现错误&am…

AMD Ryzen AI Max+ 395四机并联:大语言模型集群推理深度测试

本文介绍使用四块Framework主板构建AI推理集群的完整过程,并对其在大语言模型推理任务中的性能表现进行了系统性评估。该集群基于AMD Ryzen AI Max 395处理器,采用mini ITX规格设计,可部署在10英寸标准机架中。 Jeff Geerling大佬还开发了名…

深度学习·GFSS

GFSS General Few-Shot Segmentation 任务实现方式与zero-shot有所不同本篇论文只涉及同一个模态(图像),训练过程中,novel class有几个图像提供,提供k个就称之为k-shot。先从图像中提取class prototype,然后这个原型向量作为查询&…

Transformer架构的数学本质:从注意力机制到大模型时代的技术内核

系列专栏推荐:零基础学Python:Python从0到100最新最全教程 深入浅出讲解神经网络原理与实现,从基础的多层感知机到前沿的Transformer架构。包含完整的数学推导、代码实现和工程优化技巧。 写在前面:为什么理解Transformer如此重要…

最新微信小程序一键获取真实微信头像和昵称方法

使用公开免费插件,快速实现获取用户头像和昵称,已附uniapp、微信开发工具开发详细教程。前言为了保护用户隐私,wx.getUserInfo、wx.getUserProfile都没法获取到用户头像和昵称了,只能通过设计用户主动选择/输入形式,操…

路由器配置之模式

文章目录配置路由器时,有一个模式选择最佳实践各个选项的区别11b only11g only11n only11bg mixed11bgn mixed配置路由器时,有一个模式选择 最佳实践 • 追求速度:选 11n only(需所有设备支持)。 • 兼容性优先&…

评测系统构建

合成数据更“科研驱动”,强调 controllability 和 generalization evaluation: 之前往往直接采用经典数据集如OGB和OGB-large提供的经典数据集和数据划分思路 该思想从现有真实数据中学习参数,再构造类似但分布略异的数据集,验证模…

【计算机网络面试】TCP/IP网络模型有哪几层

参考: 2.1 TCP/IP 网络模型有哪几层? | 小林coding | Java面试学习 以下为自己做的笔记 应用层 专注于为用户提供应用功能,如HTTP、FTP、Telnet、DNS、SMTP等。应用层不关心用户是怎么传输的,当两个设备间的应用需要通信时&…

3 种方式玩转网络继电器!W55MH32 实现网页 + 阿里云 + 本地控制互通

目录 1 前言 2 项目环境 2.1 硬件准备 2.2 软件准备 2.3 方案图示 3 例程修改 4 功能验证 5. 总结 1 前言 HTTP(超文本传输协议,HyperText Transfer Protocol)是一种用于分布式、协作式、超媒体信息系统的应用层协议, 基于 TCP/IP…

第四篇:科技封锁与文化渗透篇——T-501 与 M-208 双引擎布局(节奏增强版)

科技封锁与文化渗透篇——T-501 与 M-208 双引擎布局(节奏增强版) 引子 在全球竞争中,光有资本和市场远远不够。 • 科技封锁(T-501):通过技术标准、专利网络、供应链控制,让对手进入成本极高的…

python实现梅尔频率倒谱系数(MFCC) 除了傅里叶变换和离散余弦变换

语音识别第4讲:语音特征参数MFCC https://zhuanlan.zhihu.com/p/88625876/ Speech Processing for Machine Learning: Filter banks, Mel-Frequency Cepstral Coefficients (MFCCs) and What’s In-Between https://haythamfayek.com/2016/04/21/speech-processing-…

springBoot+knife4j+openapi3依赖问题参考

pom文件附带版本<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.12</version></parent><dependencies><!-- SpringDoc starter --><d…

XML DOM 高级

XML DOM 高级 引言 XML DOM(Document Object Model)是用于解析和操作XML文档的一种标准,它允许开发者通过编程方式访问和修改XML文档的内容。本文将深入探讨XML DOM的高级特性,包括XML解析、节点操作、事件处理以及性能优化等,帮助读者全面理解并掌握XML DOM的高级应用。…

「第18讲 内容生成应用场景与多语言支持」AI Agent开发与应用:基于大模型的智能体构建

第18讲核心内容概述内容生成应用场景营销文案生成&#xff1a;基于产品特征自动生成广告语、社交媒体文案&#xff0c;支持个性化推荐和A/B测试优化。新闻报道辅助&#xff1a;快速生成财经、体育等领域的结构化新闻摘要&#xff0c;结合实时数据更新内容。教育内容定制&#x…

金融业务安全增强方案:国密SM4/SM3加密+硬件加密机HSM+动态密钥管理+ShardingSphere加密

国密SM4/SM3 SM4&#xff1a;对称加密算法&#xff0c;分组长度128位&#xff0c;密钥长度128位&#xff0c;适用于数据加密&#xff08;如数据库字段、通信报文&#xff09;】 加密存储&#xff1a;用户身份证号、银行卡号等敏感字段&#xff08;配合ShardingSphere等中间件自…

Chaos Vantage 2.8.1 发布:实时探索与材质工作流的全新突破

作为行业领先的实时光线追踪渲染器&#xff0c;Chaos Vantage再添利器。2.8.1版本更新聚焦材质工作流、硬件效率与API拓展&#xff0c;为建筑可视化、动画制作等领域带来更流畅的操作体验与更深层的定制化可能。 一、核心功能更新&#xff1a;让创作更顺畅 完整V-Ray材质节点支…

【集合框架List接口】

&#x1f449; 用 ArrayList 存数据&#xff0c;结果插入时卡住了&#xff1f; &#x1f449; 想删除某个元素&#xff0c;却发现索引错乱了&#xff1f; &#x1f449; 不知道该用 ArrayList 还是 LinkedList&#xff0c;选错了导致性能瓶颈&#xff1f;一、List 是什么&#…

《棒球百科》奥运会取消了棒球·野球1号位

⚾️ 奥运会棒球消失&复活之谜&#xff01;深度揭秘全球体育权力游戏 ⚾️❌ 2008年为何被踢出奥运&#xff1f;(Why Removed in 2008?)MLB的致命抵制➤ 奥运赛期撞车MLB常规赛白热化阶段&#xff01;➤ 球队老板拒放巨星&#xff1a;2000年悉尼奥运美国队仅剩"替补阵…