打磨16年的架构体系,架构师都用“扩展立方”做架构设计!

谈到架构设计,有许多的方法论可以参考,今天和小伙伴们一起来看看“扩展立方”如何帮助我们设计可扩展的架构吧。在架构设计的初期我们会考虑诸如服务,流程,服务对象的问题。针对这些问题我们可以通过“扩展立方”协助思考,而且在公司发展的不同阶段也可以用这个思维帮助我们找到突破口。

什么是扩展立方

在介绍扩展立方之前我们先介绍一下在架构设计的时候我们需要关注的几个要点:我们的客户是谁(服务对象),我们需要交付什么给客户(服务),交付的内容是如何组织的(流程)。如果把这三个方面用三个坐标轴了表示的话,就是X轴(服务),Y轴(流程),Z轴(服务对象)。

如果说在坐标轴的零点,上述三点所做的扩展是零的话,那么随着架构的扩展,这三个值就在不断的增加,分别向三个正方向延伸,最终想成一个类似立方体的东西。这个就是我们要讨论的扩展立方。实际上就是我们在架构扩展的时候需要考虑的三个方面。大家可以回想一下,在做架构设计的时候,我们都是依葫芦画瓢,按照现有的业务逻辑设计一套可以实施的软件系统。岂不知软件系统会随着业务的扩展不断的扩展,大多数的架构师忽略了这个扩展性,感觉先解决眼前的问题再说,以后业务发展了再修改架构。其实,通过扩展立方的思维方式是可以弥补这方面的不足,即使不按照这个方法来进行设计也可以做到有预见性,起码为未来的扩展留下接口。对我们的架构设计和公司未来业务扩展是非常有帮助的。

X轴,服务扩展

服务扩展的定义用一个例子就可以很好的解释。我们现在都在用微服务,例如电商网站的订单业务比较多,需要承载更高的并发量,原来的“单个订单服务”无法满足需求,这个时候我们可以通过横向扩展的方式增加更多的订单服务。这些订单服务从本质上没有什么不同,就是原有服务的复制。用服务的横向扩展(水平扩展)用来抵抗高并发的行为就是在做服务扩展。能够进行服务扩展的服务,都有这样的特点:本身业务较为独立,功能不是很复杂,可以独立管理作为架构师在设计初期可以通过对业务的了解识别这部分的服务,并且对其进行扩展设计。

Y轴,流程扩展

流程扩展的定义我们也举一个电商的例子,假设整个商品的购买流程有“浏览商品”,“放入购物车”,“下单”,“付款”,“发货”,“确认收货”几个步骤,每个步骤都完成一个标准的动作,动作串联起来形成一个完成的流程。我们可以把中间这些可以能够被重复使用的步骤抽离出来形成基础的组件,例如:浏览商品,付款,发货等等。做成通用组件可以作为基础服务提供给其他的业务服务调用。这里的流程扩展就是做这个事情的。实际上在面向对象设计中的抽象也是做的这个事情,在说的流行一点,现在的中台服务也是把企业哪些基础的服务提供给业务服务使用,都是一个道理。这部分的设计,架构师也可以在设计的初期考虑进去,针对不同的服务定义好接口,方便日后“搭积木”。

Z轴,客户请求

在实际应用的开发过程中,请求会来自不同的方面。例如北京用户请求系统,上海用户请求系统,广州用户请求系统。又例如:5000人规模的企业请求系统,500人规模的企业请求系统。实际上针对不同的请求类型,请求地区,访问量,我们可以设计不同的系统边界,分配不同的硬软件资源。甚至用故障隔离的思路来设计系统。例如:服务企业客户的时候,我们需要了解,这个企业是私有云还是公有云,这个企业在中国/世界有哪些分公司,总公司和分公司是如何共享数据和请求的。是否需要对不同区域的公司提供不同访问量的服务,等等问题。

XYZ的设计原则

通常来说X轴扩展(服务)成本相对较少,可以马上看到效果。比较适合刚刚起步的企业,小而美的设计总是受人青睐的。Y轴扩展(流程)成本就略高了,需要对流程本身理解比较透彻并且是经过长时间的打磨的,最好架构师和业务专家共同定义流程基础组件。一般是公司发展到了一定规模了,才建立自己的流程比如中台系统。Z轴扩展(客户响应)成本就更高了,他需要针对不同的客户区域,请求类型,访问量来设计系统。对硬件软件的要求都很高,比较适合大型的企业和互联网公司。比如阿里,腾讯在中国各地甚至世界各地都有机房,提供服务。小伙伴们可以根据自身公司的规模和发展方向酌情设计架构,做到因地制宜,因人而异。当然,在设计方面我们是希望XYZ三个扩展方向是齐头并进的,哪个快一些哪个慢一些,取决于公司所在的环境和发展的速度,最终的目的还是平衡发展。

总结:扩展立方的XYZ设计思路给架构设计提供了很好的思路。针对服务,流程,客户请求设计出来的系统会更加接地气,做到有的放矢。

(0)

相关推荐

  • 分布式事务 DDD 负载均衡 服务治理,微服务搞懂这些就够了?

    最近有看到"微服务,分久必合.合久必分"的言论,我同意,微服务不是架构演变的终点,细说还有Serverless.FaaS等方向.但纠结要不要拆分是没有必要的,拆往往是随着业务变化不 ...

  • 架构实践全景图

    业务架构是跨系统的业务架构蓝图,应用架构.数据架构.技术架构是解决方案的不同方面. 多年来,全球业界已在业务架构.应用架构.数据架构.技术架构方面积累了大量经验. 近几年,数字化转型呼唤"懂 ...

  • 基于golang分布式爬虫系统的架构体系v1.0

    基于golang分布式爬虫系统的架构体系v1.0 一.什么是分布式系统 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统.简单来说就是一群独立计算机 ...

  • 架构师成长之路——什么是架构师

    哲学家常思考的问题:' 我是谁?'' 我从哪里来?'' 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知. 如果我们要成为架构师,我们自己要面临的三大问题: 找准自己定位:我是谁?在哪里 ...

  • IT系统架构及架构体系详解

    公众号回复'架构'获取架构师电子书及视频课程 完整PPT版本获取方式:

  • 良好的知识架构体系,有助于提高自己的思维能力

    在智能制造相关领域(包括工业4.0.智能制造.互联网+制造等方面)做过多次演讲,与听众做过多次互动,但在9月22日的一次智能制造的课堂上,第一次学员问我如何提升思维能力?这对我而言真的是一个好问题. ...

  • 为什么CTO、技术总监、架构师都不写代码,还这么牛逼?

    文|技术领导力 常常会被问到这样的问题:CTO.技术总监.架构师很少写具体代码,为什么还很牛逼的样子,拿这么高工资? 其实,这个问题本身就错了.就好比问:导演.制片人为什么不懂演戏,还能指导演员,好像 ...

  • 不懂就问,CTO、技术总监、架构师都不写代码,却还这么牛逼?

    慕课网 程序员的梦工厂 作者 | Mr.K 来源 | 技术领导力 常常会被问到这样的问题:CTO.技术总监.架构师很少写具体代码,为什么还很牛逼的样子,拿这么高工资? 其实,这个问题本身就错了.就好比 ...

  • 不会做架构永远不能称得上是优秀的花艺师

    经常听到有人这样说 制作花艺架构浪费很多时间,有什么意义呢? 架构花艺太难了--学习架构花艺没用,不能赚钱 可我想说,不会做架构你就永远也体会不到架构花艺的乐趣所在 永远不能称得上是优秀的花艺师 架构 ...

  • 书店图书架构体系与图书选品优化方案

    书店图书架构体系与图书选品优化方案 1.不同书店的图书分类比较,讲述不同的案例:万圣书园&单向空间&西西弗书店 2.书魔方理念 JBOOK=a×b×cn 一本书是一个点,一个书系是一条 ...

  • 《发现夏朝》是一种组织信息史料的升维带来的认知架构体系

    编者注:觀鳳网友这个<发现夏朝>读后感,高度概括浓缩,既全面又精炼,又有很多金句,尤其是贯穿历史与未来的继续推演发挥,别具一格.你有什么感想呢?欢迎留言,欢迎投稿. <发现夏朝> ...