使用事件总线改造运维体系

2023年 4月 12日 46.5k 0

1. 积重难返的运维服务体系

针对明确的运维诉求,开发相应的运维服务以供运维、业务用户使用,本无可厚非。但如果仅满足于此,很容易出现下面的情况:

用户频繁地寻找各个系统的入口,在各个系统之间来回跳转,忙于寻找各种按钮、拷贝参数。
一旦这样的运维服务多起来,形成一个运维服务体系之后,更是积重难返。想变更,耦合太深,成本很高;想重构,缺少动力,风险很大。
能不能用?可以用!
好不好用?不太好用!
这样一个运维体系,是很难自救的,几乎不可能依靠内部的迭代完成升级。我指的升级,是指达到一个更先进的运维平台水平。
怎样的运维平台更先进?可以从以下几个方面考虑:

  • 能不能让业务团队比同类公司生产效率更高
  • 能不能复用更多以往的领域经验
  • 能不能避免重复开发、人力浪费
  • 能不能更多自动化替代人工

运维围绕的是安全、稳定、高效、成本。成本不受运维平台控制,安全、稳定是运维平台的及格线,真正能使得上力气的其实只有效率。
运维平台的最终目标是支撑业务,获得更大的比较优势。好的方面是公司竞争的赛点是不断切换的,去年是 VR,今年是 OpenAI,这样就会对平台不断地提出新要求。需要思考的是,运维平台能不能快速地满足当前业务的运维诉求?
竞争对手需要 3 个月上线,如果你只需要 2.9 个月,那么公司就多了 0.1 个月的先发优势,逐步积累就能走得更远。
相关平台建设的论述在之前的博文中已经有很多,在此不再过多讨论。
回到刚才提到的积重难返的运维服务体系,这种情况下,只能借助外力破局。引入一个外部的运维体系产品,从外部招一批带着先进生成技术和理念的人,还需要负责人极大的魄力,才有可能实现平台飞跃。

2. 使用事件总线破除 SaaS 的信息壁垒

用户在不同的运维体系之间切换、操作时,到底在做什么?
是事件的触发,事件的流转,只不过,这些都是人工完成的。

是人在支撑着,完成了各个 SaaS 之间的信息流转。这样的运维体系下,用户使用很累,不得不来回切换,学习各种领域知识;平台开发更累,服务之间集成很难,安全风险大,还得教会用户使用、传输各种领域知识。
但只有引入外部系统,引发内部系统崩溃,重建运维体系一条路吗?
当然不是只有一条路线。如果是早期,体量不大时其实可以考虑基于某个成熟的运维平台体系进行开发。一旦业务体量达到一定程度,必然不会接受外部产品全盘接收核心运维体系。
这里提出的另外一条路线就是事件总线。

用户需要一个新的工作台 SaaS,用于产生各个子系统需要的事件并下发到事件总线,再推送到各个子 SaaS 系统。每个运维系统都应该对接事件总线,既消费事件,也产生事件。
为此,除了实现事件总线,基本的路由、过滤等功能,还需要能快速接入旧的 SaaS 。如下图:

为了快速接入,需要实现两个核心的对接,一个是各系统需要的 API Middleware,以便于产生事件;另一个是,API Action,以便 SaaS 能根据事件通过 API 执行动作。
最终,在统一的事件协议(例如 CloudEvents)整合下,实现系统之间的松耦合,再也不用考虑依赖的 SaaS 接口发生变更导致的各种集成问题了。

3. 事件总线更适合人的工作方式

技术是为人服务的,人不应为技术所累。如果累,那么你就应该反思,是不是合理的,能不能改进,有没有机会。
事件总线实现了关注点分离,是适合人的工作方式。
每个系统只需要关注事件总线的消息,而不用关注其他系统的可用性,可靠性。每个系统的研发人员,也只需要专注于自己维护的系统。
实时性高的场景,可以让事件总线主动 push 消息;其他场景,各个系统可以 pull 订阅的事件消息,各自完成任务,然后将结果事件写回到事件总线。
更为重要的是,事件总线为运维演进提供了合适的方向。

基于事件总线的运维体系,既能够满足业务早期人工的诉求,也能够满足后期自动化需求。
业务早期体量小,为了能够快速上线,会有大量人工运维操作。通过事件总线,可以很好的将任务进行分类,以 TodoList 的面板形式展示给人工运维。
业务走向成熟后,必然走向运维的自动化。此时只需要通过脚本、命令行工具、SaaS 等任意自动化形式快速消费事件,即可高效地运维。

相关文章

KubeSphere 部署向量数据库 Milvus 实战指南
探索 Kubernetes 持久化存储之 Longhorn 初窥门径
征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
那些年在 Terraform 上吃到的糖和踩过的坑
无需 Kubernetes 测试 Kubernetes 网络实现
Kubernetes v1.31 中的移除和主要变更

发布评论