软件架构编年史:单体架构

架构 2023-07-05 17:29:38
541阅读

 

文中转载微信公众平台「逸言」,创作者覃宇。转截文中请联络逸言微信公众号。

混沌初开,单个始现……

默认设置的构架设计风格便是搭建一个单个。我的意思是,最初应用软件就只有一个文档,随后应用软件逐渐由好几个文档构成,从 20 新世纪 90 时代逐渐才发生由其他应用软件构成的运用(虽然二十世纪八十年代就开始了最开始的试着)。

单个自身也在产生变化。当应用软件逐渐应用好几个文件创建时,实际上并沒有过多的思索,都没有过多思索的必需,由于应用软件都非常简易。当应用软件逐渐澎涨越来越愈来愈繁杂时,才会必须反复推敲应用软件身后有什么文档必须建立,他们又该怎样关系。

模块化设计开发软件

模块化设计程序编写是 20 新世纪 60 时代末到 70 时代间明确提出的计划方案。它是以类到更细粒度编码模块的确立界定的演变。计算机语言应用不一样级别的具体性来完成模块化设计。

比如,JAVA 在类这一等级的由此可见性有默认设置等级和 public 等级,默认设置等级代表着类只在它隶属的 package (控制模块)内由此可见,而 public 等级代表着这一类在 package (控制模块)内和 package (控制模块)外都由此可见。

组件化开发软件

部件是另一种模块化设计设计风格。如我以前一篇文章(译)上述,部件是依照行业定义区划的控制模块。理想化状况下,他们是能够构成运用的单独的“应用软件”。老调重弹的事例是在 Unix 系统软件中普遍应用的管路和过滤装置构架,比如我们可以应用那样的指令ps -ef | grep php。此外的事例便是 Netflix 将微服务架构做为运用的部件。

编码的机构设计风格和模块化设计开发软件一样,早在 20 新世纪 60 时代末就早已存有了。

当代的单个

如今,单个构架设计风格便是简易地代表着全部运用编码被布署并运作在单一连接点的单一过程中。大家觉得它会采用控制模块和部件,虽然客观事实通常并不是这样。

这里有2个关键字“布署”和“连接点”要好好了解。第一个词“布署”的意思是运作时编码的机构方法,不管编码在物理学上是储存在一个或是好几个代码库当中。而第二个词“连接点”的意思是就算是在横着拓展的状况下大家将运用布署到好几个网络服务器,它仍然是一个单个。

在单一连接点的网络服务器上,单个的全部控制模块都被集中化到同一个运行内存印象里,做为单一连接点上的单独过程运作。根据规范过程启用在同一个栈和堆内开展控制模块间的通讯。单独的运行内存印象让运用变成了单个。假如控制模块在不一样的过程中运作,通讯就变成了 IPC (过程间启用)。因为控制模块进入了不一样的过程界限,你即将遭遇分布式计算的挑戰。这就进入了微服务架构的范围。(谢谢dban的意见反馈)。

虽然这类设计风格声名狼藉,但它仍然能够在大中型运用中工作中得非常好。仅仅下边这种标准下主要表现得不充足好:

  • 不一样的行业部件必须单独可伸缩式;
  • 不一样的部件必须不一样的计算机语言来撰写;
  • 单独可布署,由于大家的公布頻率比一个代码库的持续交付生产流水线要快,因为必须等候其他公布的布署造成 本身公布的布署减缓,或是造成 布署序列提高太快没法立即回应。

这时候,大家必须将单个依照朝向服务项目的构架设计风格(下面的文章内容里将详解)拆分为不一样的应用软件。

反方式:大泥球/意大利肉酱面构架

“大泥球”又被称为意大利肉酱面构架,是这类设计风格的反方式。这类反方式中,包构造和关联十分模糊不清,结构型的内聚力和封裝彻底沒有或非常少,依靠没什么标准,分系统难以辨别,也难以改动和重新构建。系统软件晦涩难懂、黏滞、敏感、凝滞:便是一个大泥球!

引入来源于

  • 1997 – Brian Foote, Joseph Yoder – Big Ball of Mud
  • 2012 – Len Bass, Paul Clements, Rick Kazman –Software Architecture in Practice
  • 2017 – Herberto Graça – Microservices architecture: What the gurus say about it
  • 2017 – Herberto Graca –Software Architecture Premises
  • 2017* – Wikipedia –Modular programming
  • 2017* – Wikipedia –Component-based software engineering

覃宇,Android开发人员/ThoughtWorks技术性教练员//译员,热衷研究开发软件的各个方面,从端到云,从专用工具到实践活动。喜爱根据汉语翻译来学习培训和共享专业知识,译者有《Kotlin实战》、《领域驱动设计精粹》、《Serverless架构:无服务器应用与AWS Lambda》和《云原生安全与DevOps保障》。

the end
免责声明:本文不代表本站的观点和立场,如有侵权请联系本站删除!本站仅提供信息存储空间服务。