惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
Martin Fowler
Martin Fowler
P
Palo Alto Networks Blog
MongoDB | Blog
MongoDB | Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
博客园_首页
量子位
小众软件
小众软件
F
Full Disclosure
Vercel News
Vercel News
爱范儿
爱范儿
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
博客园 - 聂微东
V
V2EX
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客
WordPress大学
WordPress大学
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
L
Lohrmann on Cybersecurity
H
Hacker News: Front Page
Spread Privacy
Spread Privacy
AI
AI
C
Cyber Attacks, Cyber Crime and Cyber Security
C
CERT Recently Published Vulnerability Notes
D
Docker
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Recorded Future
Recorded Future
L
LINUX DO - 热门话题
Microsoft Azure Blog
Microsoft Azure Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Latest news
Latest news
W
WeLiveSecurity
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 司徒正美
博客园 - 叶小钗
T
Threat Research - Cisco Blogs
P
Privacy International News Feed
O
OpenAI News
Help Net Security
Help Net Security
aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
博客园 - Franky

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19) 使用 Velero 备份 Kubernetes 集群 Kubernetes Cheat Sheet 开发 Tips(18) 如何构建一个 Java 工程 开发 Tips(17) KubeSpray 安装 Kubernetes 报错 ip in ansible_all_ipv4_addresses 基于 Kubernetes 和 Jenkins 搭建自动化测试系统 在 Kubernetes 上动态创建 Jenkins Slave 使用 Jenkins 进行服务拨测 开发 Tips(16) Kubernetes 签发 Ingress 证书及日常故障运维 Kubernetes 中 Deployment 的基本操作 Kubernetes 中的证书 如何使用 KubeBuilder 开发一个 Operator Kubernetes 1.6.0 安装问题汇总 镜像管理工具 -- Harbor 开发 Tips(15) Docker 如何拉取镜像 开发 Tips(14) 使用 Helm 安装 harbor 开发 Tips(13) 使用 S2I 构建云原生应用 在 Kubernetes 中使用 emptyDir、hostPath、localVolume 开发 Tips(12) 开发 Tips(11) 代码质量分析工具 SonarQube 使用 Kubeadm 安装 Kubernetes 集群 一起来学 Go --(4)常用函数 Kubernetes 中的 Ceph Kubernetes 之 Volumes Kubernetes 之 Labels、Selectors 开发 Tips(10) 开源正在重构商业模式 Kubernetes 之网络 Kubernetes 之 API 使用 Helm 和 Operator 快速部署 Prometheus Kubernetes 复杂有状态应用管理框架 -- Operator Kubernetes 的包管理器 -- Helm 一起来学 Go --(3)Go Modules 如何一步一步地优化博客方案 kubectl 实用指南 Kubernetes 中的基本概念 搭建远程 Kubernetes 开发环境 大公司和小公司的 ToB 思路 开发 Tips(9) Go 入门指南 一起来学 Go --(2)数据与逻辑结构 如何预防 Web 富文本中的 XSS 攻击 django-xss-cleaner 云工作时代 一起来学 Go --(1)背景与特点 SaaS 开发团队的不同阶段 你不知道的 Git 使用技巧 输出既服务 微服务设计 继续奔跑 开发 Tips(8) 从账户安全到二次验证 Django 性能之数据库查询优化 Django 性能之分库分表 敏捷开发之研发流程 打造一致性的团队 开发 Tips(7) Pytest 进阶学习之 Mock PaaS 部署之 buildpack Go 开发配置 领域输出才是 PaaS 的核心竞争力 Pytest 入门学习 开发 Tips(6) 如何使用 Jenkins、Docker、GitLab 搭建 Django 自动化部署流程
使用事件总线改造运维体系
微信公众号 · 2023-02-17 · via 陈少文的网站

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 等任意自动化形式快速消费事件,即可高效地运维。