zoukankan      html  css  js  c++  java
  • 高层架构设计之落地设计

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

     

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

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

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

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

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

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

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

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

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

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

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

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

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

     

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    (1)交互方式

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

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

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

    (2)交互频次

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

    (3)交互数据量

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

    (4)交互限制和约束

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

    二:如何确定系统边界

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

     

    1:首先是找到相关系统

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

    2:确定系统边界

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

     

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

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

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

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

    作者:Leo_wl
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    版权信息
  • 相关阅读:
    Leetcode -- Day 45
    基于session的登录权限控制及redis缓存引入
    CountDownLatch 和 CyclicBarrier
    join()介绍及三个线程顺序输出实现
    BigDecimal 和 BigInteger 介绍
    62. Unique Paths
    678. Valid Parenthesis String
    172. Factorial Trailing Zeroes
    数据库事务
    75. Sort Colors
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/15782670.html
Copyright © 2011-2022 走看看