Skip to main content
9、持续集成、快速反馈

9、持续集成、快速反馈

持续集成(Continuous Integration, CI)不仅是技术实践,更是构建高质量软件和高效团队协作的基石。它通过频繁的代码集成、自动化构建与测试,将开发过程中的风险前置,为持续交付奠定了坚实的基础。以下结合书中观点与个人思考,思考持续集成的意义、挑战与启示。

一、持续集成的核心:频繁集成,快速反馈

书中指出,持续集成的核心原则是开发人员每天多次将代码集成到主干,并通过自动化构建和测试快速验证代码的正确性。这一过程打破了传统开发中“各自为战”的模式,将分散的代码变更整合为一个稳定、可运行的整体。


Y-aong...About 5 mindevopsdevops
8、流水线是持续交付的心脏

8、流水线是持续交付的心脏

在阅读《持续交付2.0》的过程中,书中对“流水线的部署”的阐述让我深刻意识到:自动化部署流水线不仅是技术工具,更是持续交付体系的“心脏”。它将开发、测试、交付等环节串联为一个无缝衔接的价值流,是实现“持续交付是大家的事”这一理念的核心载体。

一、流水线部署:持续交付的“技术骨架”

书中指出,流水线的部署是验证环中的关键环节,它通过自动化将代码从开发到生产环境的路径标准化、可重复化。这一过程本质上是将“交付”从手工操作转化为机器可执行的流程,从而消除人为失误、缩短交付周期、提升可靠性。


Y-aong...About 5 mindevopsdevops
7、持续交付是大家的事

7、持续交付是大家的事

一、持续交付不仅仅是工程师的事

阅读《持续交付2.0》后,我深刻意识到,持续交付绝不仅仅是一个技术方案或流程工具,而是一场需要全员参与的组织文化革命。我建立了流水线就是持续交付了吗?我建立了完整的开发测试运维团队就是devops了吗?写了自动化就是devops了吗?

“持续交付双环模型”涉及企业内多个部门与角色的合作,需要相适应的企业文化。企业领导者必须成为这一变革的领导者,建立与之相适应的企业文化。说白了,如果一个工程师有很多的想法,如果领导保守不允许失败,那么这件事是必然失败的。

  • **失败是安全的:**组织应建立允许失败的文化,试验结果不应该用于直接评判个人,否则会使组织成员在设计方案时倾向于“为了证真而设计”,而非“为了证伪”。
  • **相互信任:**相互信任是高效合作的基础,也是组织凝聚力和成员士气的基础。如果组织成员之间缺乏信任,那么很容易出现相互猜忌、相互指责的现象,用不了多久,就会影响成员在组织内的安全感,降低工作效率。
  • **持续改善:**持续改善文化的特点是“人人参与”和“时时改善”。“人人参与”是指“持续改善”不应该只是组织中某个角色的责任,而应该是所有人的责任。“时时改善”是指“持续改善”应该是一项日常工作,而不应该只在特定时间或条件下才发生。

Y-aong...About 6 mindevopsdevops
6、持续交付中的探索验证环

6、持续交付中的探索验证环

一、什么是持续交付

《持续交付2.0》是一本由乔梁所著的书籍,它深入探讨了如何在现代软件开发环境中实施持续交付。

持续交付是建立在“可持续地快速发布软件服务”和“最小化可行产品”两种理念基础之上,强调要以业务为导向,从一开始就将业务问题进行分解,并通过不断的科学探索与快速验证,减少浪费的同时,快速找到正确的业务前进方向。其涉及组织中的多个团队,需要各个团队之间紧密合作。

“持续交付”的4个核心工作原则是坚持少做、持续分解问题、坚持快速反馈和持续改进并衡量。只有这样,才能不断缩短持续交付“8”字环的运行周期,提升用户反馈速度,从而提高业务的敏捷性。这要求管理者跳出原有软件交付管理思维模式,摆脱“害怕失败”的恐惧感,拥抱“科学探索—快速验证”思维方法,快速试错,提升持续交付能力,进而发展现有业务,并快速开创新业务。


Y-aong...About 6 mindevopsdevops
2、devops告警模块的设计

2、devops告警模块的设计

一、告警事故频发

最近几年,互联网大厂的服务不可用案例频繁出现在公众视野中,这些事件不仅影响了用户体验,还对公司的声誉和经济效益造成了不同程度的影响。

  1. 阿里云多次故障,在2023年11月12日产品控制台访问及API调用出现异常,直至晚上7点20左右恢复正常。
  2. 滴滴出行长时间瘫痪,2023年11月27日晚间,滴滴App发生了全国大面积崩溃,服务无法正常使用。
  3. 语雀8小时的服务中断事件,2023年10月23日,语雀经历了长达近8小时的服务中断事件。

Y-aong...About 12 min模块设计告警设计告警
10、python状态机的使用

10、python状态机的使用

我在自己的工作流中之前使用到队列作为状态的转换,后面使用状态机来实现流程的状态控制。

状态机(State Machine)是一种用于描述系统行为的数学模型,它通过状态、事件和转换规则来定义系统的逻辑流程。在实际开发中,状态机常用于游戏开发、工作流引擎、自动化控制等场景。本文将介绍如何使用 transitions 这个 Python 库快速构建和管理状态机,并通过示例展示其核心功能。

一. 什么是状态机?


Y-aong...About 4 min状态机transitionstransitions
4、Flask Socket的使用

4、Flask Socket的使用

Flask-SocketIO 是一个扩展 Flask 应用以支持 WebSocket 通信的库。它使得在 Flask 应用中实现实时双向通信变得简单,非常适合用于需要实时更新的应用场景。我在自己的项目中也应用到socket连接这个功能,这里简单总结一下。由于网上使用的方式都是前端使用html的方法来实现,现在很多都不直接使用html加js的实现方式了。所以我这里提供的是前端使用vue来实现socket。

一、什么是socket

Socket(套接字) 是计算机网络编程中的一个核心概念,它提供了一种在不同设备或同一设备上的进程之间进行网络通信的机制。简单来说,Socket 是网络通信的端点,允许应用程序通过网络协议(如 TCP、UDP)发送和接收数据。


Y-aong...About 4 minflasksocketflasksocket
1、定时任务的设计和思路

1、定时任务的设计和思路

一、Python中定时任务模块

1. Celery

Celery 是一个分布式任务队列,它不仅支持简单的任务调度,还可以处理复杂的任务工作流。对于已经使用了Celery的项目来说,可以很方便地添加定时任务功能。然而,对于不需要分布式处理能力的小型应用或项目来说,可能显得过于重量级。

  • 优点:支持大规模的任务调度,拥有良好的社区支持。
  • 缺点:配置相对复杂,需要额外的消息中间件(如RabbitMQ, Redis)来协调任务分发。

Y-aong...About 8 min模块设计定时任务定时任务
2
3