大数跨境
0
0

一个好的架构,如何来支持业务、技术和运维

一个好的架构,如何来支持业务、技术和运维 鲁班搭软件
2025-11-27
0
导读:软件系统的架构,核心作用定位就是要支持好当前业务能力的实现、未来业务能力的可扩展以及便捷的维护。
软件系统的架构,核心作用定位就是要支持好当前业务能力的实现、未来业务能力的可扩展以及便捷的维护。
一个好的架构,要从上述定位中,具体演化到如何对业务、技术、运维等不同维度上的支持,具体如:
1、支持业务场景、业务逻辑的灵活调整
    这就是要组件可装配以及配置可见;
2、让技术工作高效展开
    这就是要业务模块组件化、开发并行、组件可见、组件可第三方交付等;
3、让系统在生产环境中,可准确地发现故障、统计各方面数据、可扩展模块部署等。
    这就是要架构可见以及架构上要具有相应的配套模块;
4、考虑经济性
    对于系统资源的开销、业务组件可客观定价、各模块的低成本替代能力等。

所以,在之前的文章就阐述到:把软件架构作为一个软件主板,围绕着这样的主板来定义和完善。
一个架构,基本具有4个方面:
1、基础服务模块
基础服务模块是各个服务基本都需要用到的,也往往是市面上比较成熟的软件系统。比如:
  •     数据库服务:mysql、oracle、mongoDB等;
  •     内存数据服务:如redis;
  •     消息服务:ActiveMQ、RocketMQ等;
  •     大模型服务:DeepSeek、通义千问等;

2、业务服务模块
各个业务功能服务,比如:
  •     用户服务;
  •     文件服务;
  •     待办服务;
  •     表单服务;
  •     数据抓取、分析服务;
  •     MCPServer服务;

3、配套服务模块
对系统服务和业务服务做相关的配套的服务,不同的架构的特点,在这方面会有相关大的差别;这里面的服务模块,有部分是市面上已有的,有部分可以是特定研发的,比如:
  •     微服务的注册、发现配套服务,如Nacos;
  •     MCP服务的注册、发现配套服务;
  •     MQ服务的统一中转、侦听服务;
  •     模块状态监控服务;
  •     业务对象模型服务;
  •     弹性无状态服务调用服务;
  •     ESB服务;
  •     用户统一鉴权服务;

4、对外接入服务模块
通过接入服务模块,让外部各种软件、硬件能够便捷接入,比如:
  •     外部网页程序访问接入服务,如Nginx;
  •     外部程序订阅/推送接入服务,如Netty;
  •     物联网设备接入服务;
  •     文件对外访问服务;
  •     视频流对外推送服务;

一个软件架构是很多软件的集合,但需要通过合理的区隔、规划,达到特定的目标。
下图是我们设计的支持组件化能力的一款架构主板:

架构本身没有止境,可以有很多版本,对应不同的功能侧重和性能。但是日常中,经常看到IT团队在架构和开发上理解错位的地方:
1、架构工作与业务开发工作应该不直接相关
    许多IT团队,架构师实际上是资深开发工程师的定位,把业务上的模块分解、算法结构等,作为了“架构”工作,这个是不对的。
    一个业务,其用户量、主要的终端类型、业务模式确定后,一个架构基本就可以确定了。产品经理与技术团队沟通讨论之后,就能够形成模块清单出来,这反而是项目前期工作的核心。具体各个模块中的算法要求、功能要求,由相关负责人去解决。
    架构的作用就是让开发工程师清楚交付物的标准是什么、会安装在什么位置、会有哪些基础服务和配套服务来支持。
2、下面的图,实际不是架构图:
上面的图,只能是“结构说明图”,不是真正的架构图:
1、这样的图,没有反映出系统真实的全貌;
2、图上的模块不是实际的程序模块,只是逻辑上的概念模块;
3、这样的图,反映不出系统的复杂度、需要的投入等;

一个软件团队或者项目组,需要很好的架构才能有效支撑产品开发或者项目交付,但架构能力确实是软件领域的稀缺能力,并不是相关的团队就能够有能力很强的架构师,了解越多的产品开发或者项目交付实例,就越知道架构的缺失而导致的高成本和低质量。希望有更多的同行,一起聚力,研发出成熟的架构主板,让更多的企业和团队直接受益。

【声明】内容源于网络
0
0
鲁班搭软件
分享、交流关于软件的组件化架构的思考、方法和实践,聚集同行、朋友,为行业在组件化、产业化的发展共赋绵薄之力。
内容 14
粉丝 0
鲁班搭软件 分享、交流关于软件的组件化架构的思考、方法和实践,聚集同行、朋友,为行业在组件化、产业化的发展共赋绵薄之力。
总阅读3
粉丝0
内容14