前面讲到了架构师在高层架构设计阶段要做的事情,以及基本的方法。

接下来具体地看看如何把设计落地:

首当其冲的就是要确定系统边界,

下面就来聊一聊确定系统边界要做什么,以及如何确定系统边界。

一:确定系统边界,架构师需要做什么,包含但不限于:

1:明确系统该做什么,而不做什么

这个非常重要,清晰的边界,有助于整个系统的架构设计和开发实现,能更好地帮助我们达成软件建设的目标。

比如我们的系统,只需要做到下完订单过后生成出货单,后续的业务就不需要我们的系统来处理了,可能就是推送出货单到ERP或WMS(仓储管理系统)等第三方系统就可以了。

那我们就不能瞎做,把出货单后面的业务也做了,美其名曰业务闭环,胡做一通,该做的没做好,不该做的做了一大堆,浪费人力、物力、财力和时间。

这就是说,我们必须明确的知道,系统该做什么,而不做什么。

2:明确系统与周边系统的关系

系统与周边系统的关系,指的就是我们的系统和相关的第三方系统,相互调用、交互的关系。

架构师成长系列:高层架构设计之落地设计第一步(方法经验总结)_架构设计

比如上面提到的例子,我们的系统负责生成出货单,然后推送ERP,那么ERP就要有相应的接口,并且给出数据结构的要求,也就是说我们生成的出货单,里面需要哪些数据,要组织成什么形式,都是由ERP来决定的。

同样,调用ERP接口过后,我们需要获取返回的结果,一种是同步等待,另一种是异步获取,那我们就需要提供异步回调的接口,并规定好需要返回哪些数据,以及数据的组织形式,这个是由我们系统来决定的。

我们的系统并不是孤立的,可能只是大业务场景中的一个环节,必然要和其它相关系统进行交互,否则很多业务也就无法完成了。

所以,我们系统和所有协作完成业务的第三方系统,之间的这种交互关系,是一定要明确出来的。

3:明确系统在整个大业务场景下的定位

这个就是要理解,在用户整个业务场景中,我们的系统,承载的是那一部分。

客户的业务,可能有生产的、设计的、制造的、销售的、客服的、物流的、财务的等等大业务场景。

我们做的系统,假设是电商系统,那么实际上做的就是销售这个大业务场景里面的一部分,那么这里面就不会涉及什么生产、设计、制造等业务。

就算在销售这个大业务场景,可能我们做的也只是其中的一部分,比如客户的销售又分成线上销售和线下销售,线上又有to B的、to C的、B2B平台销售等等的,而我们可能只是做了其中to B的部分。

大家可以看到,明确系统到底在哪个大业务场景下,具体承载哪部分功能,对于我们理解系统的业务,明确系统的边界,都是非常有帮助的。

4:明确系统的运行环境以及前置条件

我们需要知道,未来我们的系统运行在什么环境下,比如:部署环境、服务器多少、软硬件情况、网络带宽的多少、其它配备的资源的多少等。

这直接影响到我们架构设计的选型,还有对质量约束中的一些关键元素的达成,比如性能、稳定性等等。

另外,我们还需要知道,要让我们的系统正常运行起来,需要哪些系统,因为我们的系统只是整个大业务场景中的一部分,需要从第三方系统去获取一些数据,也需要把一些数据传递给第三方系统,否则业务是无法完成的。

因此,我们需要明确系统的运行环境以及前置条件。

5:明确系统与相关系统的交互:

(1)交互方式

是同步调用还是异步调用,是我们去调用相关系统,还是相关系统调回来。

同步方式是采用数据库同步,或者是采取异步消息同步,还是采用OpenAPI的形式等。

这些交互的方式都要明确下来。

(2)交互频次

多长时间交互一次,有些可能是实时交互,有些可能是定时交互,比如一天交互一次等,这些都要明确下来。

(3)交互数据量

每次交互,大概会有多大的数据量,最大数据量可能是多少,需要进行压缩、加解密等处理吗,这些也是要明确的,这对架构设计是有影响的。

(4)交互限制和约束

跟其它系统交互,有没有什么限制,比如一分钟最多交互次数,最大传输的数据量,每次交互处理最长的时间等,这些也是会影响到架构设计的,都需要确定下来。

二:如何确定系统边界

架构师成长系列:高层架构设计之落地设计第一步(方法经验总结)_架构设计_02

1:首先是找到相关系统

这个相对比较简单,在需求调研或需求分析的时候,通过分析业务功能的实现,以及涉及的数据来源和去向,就能容易地找到相关系统。

2:确定系统边界

找到相关系统后,就按照前面讲的需要明确的内容,一个一个交互功能点的去细化,把所有的内容都确定好过后,基本上咱们系统的边界也就确定好了。


差不多到这儿,我们就能确定好系统边界了,终于迈出了高层架构设计落地的第一步,恭喜恭喜!

有问题或者意见、建议,请评论留言或者私信,大家一起探讨,一起进步!

当然,如果你觉得本系列文章还不错,能够给你一些启发和思考的话,请关注、点赞、收藏加转发,让更多的朋友加入到我们的行列,谢谢啦!

更多架构师之路干货文章,已在路上,稍后就到!

架构师成长系列:高层架构设计之落地设计第一步(方法经验总结)_java_03