DevOps 文字培训
如何在日常 DevOps 工作中推动组织学习?
你和团队从 DevOps 中掌握的一项主要原则是,在日常工作中持续学习,并把学习成果转化为整个组织都能复用的资产。
利用聊天室传播知识
利用聊天室记录并创建组织知识。构建与聊天室集成的机器人,快速执行运维任务。例如,在聊天室向机器人发送下面这条消息,可以将 FrontEndApp 应用安装到 TestServer-9 环境,并将命令执行结果发回聊天室,效果就像在命令行界面运行该命令一样。
@bot install FrontEndApp TestServer-9
借助这一机制,团队中的每个人都能迅速掌握工作进展。信息不会埋没在私人即时消息和电子邮件中。这能培养协作文化,也让工作保持透明,是将局部知识转化为组织学习成果的一种有效方式。
同样重要的是,共用聊天室能加快 DevOps 团队或公司的新成员融入,使他们很容易看到团队大部分工作是如何开展的。可以考虑为不同的产品、服务、组件、工具、库或集成设置独立聊天室,这样更容易查找系统中某个元素的历史活动。
重点放在可执行内容上
尽量把知识和专业经验转化为可执行的标准与流程,不要仅写进文档或 Wiki。要在 DevOps 组织中建立和共享知识,最佳方式之一是创建可复用的工具,并存入代码版本控制系统,让任何有需要的人都能找到。静态文档可能因读者不同而被误解或产生不同解释。将标准和工作方式表达为可执行代码,可以加快并简化业务,只要至少配有一份简要文档说明代码如何处理需要满足审计与合规要求的流程,也能帮助 DevOps 组织通过各种审计和合规检查。
对于无法自动化的工作、流程和标准,创建可复用的用户故事,列出清晰、可区分的步骤和核对清单。这样,DevOps 组织中的每个人都能复用这些资产并从中受益。借助这些资产,不同团队可以用一致的方式完成类似工作。他们也会像持续评审、复用并改进代码库一样,不断完善这些资产。
创建可复用的软件蓝图
为组件、应用、服务和微服务创建可直接使用的蓝图,在设计中纳入非功能性需求。这样一来,开发人员每次编写新代码时,就不用重新考虑这些需求。
此外,组织可以在整个应用技术栈中一致地实现同一组非功能性需求。在设计中内置这些非功能性特性,也会简化软件在测试和生产平台运行时的部署、监控、故障排查和一般运维工作。这类非功能性需求的示例如下:
- 遥测指标。
- 运行时配置。
- 功能开关。
- 能够跟踪依赖关系。
- 能够追踪用户发起的请求。
- 具备韧性和容错能力的服务。
- 可以按需平稳降级的服务。
- 能够搜索日志消息。
- 向后和向前的版本兼容性。
- 数据归档和生产数据集管理。
- 日志管理和归档。
全面的自动化测试应成为代码蓝图的一部分。自动化测试可以明确代码的用途,说明怎样最有效地使用可复用代码,并加快为基于可复用代码蓝图构建的自定义应用编写自动化测试。
使用单一代码存储库
为确保所有人都能共享全部经验和工作成果,除了源代码,还应在同一存储库中保存部署工具、用于构建和运行部署流水线的代码、自动化测试、用于构建和集成遥测的代码,以及标准、教程、文档、Wiki、辅助工具和平台配置标准。
这样,所有资产都会透明地与 DevOps 组织中的每个人共享,可以避免重复,以及同一制品、组件和第三方工具存在多个版本。单一存储库也让你可以在运行时编译、链接和构建所有内容,并在开发、测试和部署软件时始终使用最新版本。
制定技术标准,同时保持灵活
如果希望 DevOps 团队中的每个人都能阅读、评审和修复彼此的代码,请制定开发和运维团队成员都能学习与使用的主流技术标准。你需要一门编译型语言、一门脚本语言,以及一门用于图形用户界面的语言。同时,仍应让大家自由探索感兴趣的技术,使团队持续学习和实验。如果不探索和检验处于前沿的技术,下次又如何凭借创新取胜?
总结
本章总结了一些被广泛接受的 DevOps 方法,使组织能够在日常工作中学习并创建资产。利用这些方法,整个 DevOps 组织积累的经验和专长,将为每位成员的专业能力和工作质量提供支持。
祝你的 DevOps 旅程顺利!
