「演进架构」架构在实施之前是抽象的

简介: 「演进架构」架构在实施之前是抽象的

网络异常,图片无法展示
|

这是一个思想实验。拿一台计算机,在其上安装主流操作系统,以及各种软件(数据库,应用程序服务器,Web服务器等)。一切正常后,拔下电脑并将其放入壁橱中一年。在这一年过去之后,从它的避风港取回它,将其插入电源和互联网,并启动它。什么是第一件事(或者说,第一套事情)会发生什么?47软件更新可用!新病毒定义!! Office需要关闭所有浏览器才能自行更新!即使壁橱内没有任何改变,整个宇宙仍然继续其无情的步伐。软件世界中没有任何东西是静态的。

软件架构师有责任通过创建具有不同程度排序的图表来阐明系统如何组合在一起的决策。图表周围有一种模糊的确定性,一种飘荡的数学香气。因此,架构师经常陷入将软件架构设想为他们必须解决的等式的陷阱。销售给软件架构师的大部分商业工具都强化了数字化的确定性,用盒子,线条和箭头图表不会说谎!虽然有用,但这些图提供了一个二维视图,一个理想世界的快照,但我们生活在一个四维世界。要充实2D图,您必须具体说明它。2D图上的ORM标签变为Hibernate v4.2.17,演变为世界的三维视图。如果您有计划如何将其投入生产并在六个月内升级到不可避免的Hibernate v4.3.0.1,那么您已经毕业于四维世界。太多的建筑师没有意识到architetcure的静态图片的保质期很短。软件世界存在于不断变化的状态,它是动态的而不是静态的。架构不是一个等式,而是一个正在进行的过程的快照。

持续交付和DevOps运动说明了忽略实施架构并保持最新状态所需工作的缺陷。建模体系结构和捕获这些工作没有任何问题,但实现只是第一步。架构在实施之前是抽象的。换句话说,除非你不仅实现了它,而且还要升级它,否则你无法真正判断任何架构的长期可行性。甚至可能使它能够承受不寻常的事件。

这是一个基于真实客户体验的具体示例。航空公司的架构师使用规范的客户服务创建了基于服务的架构,封装了所有关于客户的知识。这是软件设计的自然本能,DRY(不要重复自己)原则,单一真理来源和其他好(但抽象)的想法。然后,冰岛爆发了一座火山,大大扰乱了航空旅行。该航空公司的客户通过电话向支持中心充斥,询问灾难是否会影响他们的航班。在世界上未受影响的地区持票的人无法登机(因为当然,票务查询涉及到客户)。虽然这种架构具有逻辑意义,但在特殊情况下它却失败了。虽然它可能看起来很浪费甚至可能导致重复(喘气!),但拥有多个客户服务(一个处理客户问题,一个处理登机)将更好地为业务服务。只有考虑架构的操作方面,才能构建更强大的系统,这是微服务架构的目标之一。

微服务架构是DevOps后的第一次革命架构,突出了架构和DevOps必须融合的认识,使运营问题成为建筑设计中的一流公民。传统上,变更是软件架构最令人担忧的事情。Martin Fowler撰写了一篇名为“谁需要建筑师?突出了几个建筑的历史定义,其中一些人说“建筑是必须在项目早期制定的一系列设计决策”。因为架构元素呈现其他一切必须依赖的脚手架,所以对架构的改变通常是耗时且困难的。这种困难的一部分是由于忽视了架构的操作方面。微服务架构假设不断演变,即使在特殊情况下也会降低成本并且容易出错。设计稳健性的一个很好的例子来自参考微服务架构之一NetFlix。许多运营团体将其部署视为脆弱,微妙的事物。Netflix试图通过像Simian Army这样的工具破坏他们的生态系统,旨在以富有想象力的方式强调他们的架构。

您不必一直走到异国情调的微服务架构,看看这种观点转变带来的好处。良好的操作控制对架构的赋权效果的一个很好的例子是将部署与发布分离的持续交付实践。Going Live是传统巨石最可怕的事件之一,因为你必须让所有变化同时发挥作用:数据库,代码,配置,集成等。如果你已经习惯了这个大爆炸世界,那么像连续部署一样的练习疯了:你怎么能一直管理所有变化?秘诀是将部署与功能发布分开。功能切换是一种常见的持续交付实践,允许在基于主干的开发中进行飞行中的功能定义。像Togglz这样的切换库允许您通过过滤器servlet在运行时控制功能展示。因此,您可以将一个组件部署到您的生态系统中,其中包括切换代码,这样您就可以确保(通过监控)已部署的组件对生态系统没有任何不良影响。在选定的时间,您可以启用该功能,继续监控以确保没有任何错误。如果出现问题,请在确定修复时关闭该功能。通过将部署与发布分离,我们将操作问题与开发人员和用户分开。

微服务恰好是第一个完全接受DevOps的架构,但它不会是最后一个架构。架构的操作问题将继续影响我们的设计和决策,我认为这是软件架构成熟过程的一部分。

相关文章
|
2天前
|
监控 安全 Cloud Native
云计算架构设计与实施:构建高效、可扩展的云解决方案
【4月更文挑战第30天】本文探讨了云计算架构的关键要素,包括服务模型(IaaS, PaaS, SaaS)、部署模型(公有云、私有云、混合云)及可扩展性、安全性、可靠性和成本效益。实施策略涉及需求分析、选择云服务商、设计基础设施、自动化、监控和灾备计划。最佳实践推荐模块化设计、微服务、DevOps、CI/CD、多租户支持和云原生应用,以确保高效、安全且成本优化的云环境。
|
5月前
|
缓存 负载均衡 架构师
阿里资深架构师钟华曰:中台战略思想与架构实战;含内部实施手册
最近在读一本书,叫做《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》,在写此文时本书还没有看完,因为担心如果把书全部看完后再来写这篇文章,很多精彩的内容可能已经忘记了,所以中途先写一篇来分享给大家。
|
9月前
|
缓存 负载均衡 架构师
阿里资深架构师钟华曰:中台战略思想与架构实战;含内部实施手册
最近在读一本书,叫做《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》,在写此文时本书还没有看完,因为担心如果把书全部看完后再来写这篇文章,很多精彩的内容可能已经忘记了,所以中途先写一篇来分享给大家。
|
微服务
|
负载均衡 前端开发 网络协议
微服务架构实施原理详解
基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发
微服务架构实施原理详解
|
供应链 微服务
单一的全球IT架构的抽象、创建和整合
单一的全球IT架构的抽象、创建和整合
165 0
单一的全球IT架构的抽象、创建和整合
|
物联网 监控 中间件
浅谈工业级物联网项目架构设计及实施
互联网+和物联网由于发展的侧重点不同,在做架构设计上肯定有所不同。而以中小项目为主的物联网项目,其实更看重的,一是系统稳定可靠,能保证系统长期稳定的运行。本文主要介绍工业级物联网项目的架构设计及实施。
1155 1
|
Web App开发 传感器 监控
浅谈工业级物联网项目架构设计及实施
【说明】这是发表在《程序员》电子刊10月B架构专题文章 网页链接:http://www.csdn.net/article/2015-10-31/2826093 摘要:互联网+和物联网由于发展的侧重点不同,在做架构设计上肯定有所不同。
1340 0