在 IstioCon 2021 上,Istio 社区确定了 2021 年的社区的工作重点是 Day-2 Operation,很多人问我这个词是什么意思。我查了下中文互联网上,没有对这个词的解释,我在网上找到了一些解释,我发现大部分文章的源头都指向了这篇 Defining Day-2 Operations。因此,在此我将问翻译一下,同时再加上一些我自己的见解。

  • 发布于 :2021/03/20
  • 随笔
  • 10 分钟
  • 最后更新于 :2024/04/25
点击查看目录

在 IstioCon 2021 上,Istio 社区确定了 2021 年的社区的工作重点是 Day-2 Operation,很多人问我这个词是什么意思。我查了下中文互联网上,没有对这个词的解释,我在网上找到了一些解释,我发现大部分文章的源头都指向了这篇 Defining Day-2 Operations 。因此,在此我将问翻译一下,同时再加上一些我自己的见解。

下面是笔者对 Day-2 Operation 的理解。

假如将开发一个系统比作种下一棵树,那么 Day-2 Operation 就是系统开花后结果的过程。我们要不断改进这颗树的基因,以实现效益最大化。Day-2 Operation 就是对这个系统优化改进的过程。

Day-2 Operation 的定义

Day-2 Operation 不一定是指第 2 天的行动。一旦“某物“进入行动,“Day-2 Operation“是指在这个“某物“没有被杀死或被“其他东西“取代之前的剩余时间段。如下图中展示的软件的生命周期中,从软件被安装之后到被卸载之前的那段时间。

image
Day-2 Operation

当我们审视一个业务流程、应用程序或 IT 基础设施生命中的各个阶段时,有些人喜欢把它们描绘成一个循环过程。我相信这是因为人们倾向于使用“应用程序的生命周期“这个词,并以某种方式陷于相信图中必须循环回到起点。各个阶段通常是在时间上向前推进的,而不是把你带回起点。

假定“X“称为一个组织或实体所需要的东西,可能是一个业务流程,一个应用程序,或者是一些 IT 基础设施。从技术上讲,每当有人设想 X 的时候,总会有一个起点 —— 我们称它为“零日”(这是高中物理的管理,时间的起点通常是 T0)。Day-Zero 可能不是一天:它是提出并记录一套完整的 X 需求所需的时间段,这些活动可能包括高层设计、记录并向某人推销利益、撰写商业案例、寻求资金等。

这个过程的下一步是构建和部署。Day-1 包括所有活动,从详细(或底层)设计开始,到构建、测试、提出任何所需的流程和人员,以支持 X,使组织受益。在许多情况下,这里可能还涉及一些采购活动。一旦它被安装、设置、配置和批准(“好的开始”),X 就被认为是“上线“或“开放业务”。

从这一点开始,直到 X 退役、死亡或被替换,我们有 Day-2 操作。这包括保持 X 运行的一系列活动,照看和支持 X,使其以最佳状态运行,确保 X 的运行和交付结果符合最初的意图和期望。监控利用率、确保可用性和成本优化是在通常的内务管理活动基础上增加的,以保持 X 以“最佳“的方式运行。

随着我们周围世界的要求发生变化,组织要决定对 X 的调整或升级,这些都是必然需要的,是被称为整个大修还是仅仅是升级。如果是整体大修,我们可以假设 X 已经退役并被新的系统 Y 所取代。如果新的 X 只是比以前的 X 有了更大的改进,那么 Day-2 Operation 将继续进行,并包含了所有的活动,以逐步改进 X。

一个简短的补充说明:“不可变系统“的概念,即人们倾向于通过不允许变化但总是部署新系统来提高可用性,这与上述概念并不冲突。管理不可变系统的过程成为 Day-2 Operation 的一部分。

对于大多数企业来说,Day-2 Operation 是重复性的。但这是系统为组织产生结果的地方。因此,在 Day-2 Operation 中不断寻求改进,一个能带来最大效益的改进应该是很自然的。

评论

Day-2 Operation 目前在中文中暂无统一翻译,我暂且将其翻译为“Day-2 运营”,这样可能会看起来更像是个敏捷词汇,跟“精益运营”比较像。这个命名方式可能来自物理(T0,T1,T2,这样来划分时间段),也可能是来自军事术语。Day 0/Day 1/Day 2 - the software lifecycle in the cloud age 这篇文章中对云时代的软件生命周期 Day0、Day1、Day2 做了比较完整的解释。

在 IT 领域,Day0、Day1、Day2 指的是软件生命周期的不同阶段。在军事术语中,Day0 是训练的第一天,新兵进入成长阶段。在软件开发中,它代表着设计阶段,在这个阶段,项目需求被指定,解决方案的架构被决定。

Day1 涉及开发和部署在 Day0 阶段设计的软件。在这个阶段,我们不仅要创建应用程序本身,还要创建它的基础设施、网络、外部服务,并实现这一切的初始配置。

Day2 是产品发货或提供给客户的时间。在这里,大部分精力都集中在维护、监控和优化系统上。分析系统的行为并做出正确的反应是至关重要的,因为由此产生的反馈循环会一直应用到应用程序的寿命结束。在云时代这三个阶段跟云之前有很大的不同。

软件准备好后,就开始上线,客户开始使用。Day2 从这里开始,介绍包括软件维护和客户支持在内的内容。软件本身要不断发展,以适应不断变化的需求和客户的要求。在 Day2,主要关注的是建立一个反馈循环。我们监控应用的运行情况,收集用户的反馈意见,并将其发送给开发团队,开发团队将在产品中实现并发布新版本。军事术语 Observe-Orient-Decid-Act 恰好能体现这一阶段的工作内容。

  • 观察:从监控系统中获取信息(资源使用和指标、应用性能监控)。
  • 定位:对问题进行根本原因分析。
  • 决定:找到解决出现的问题的方法。
  • 行动:实施解决方案。

如同在作战过程中,这个循环不断重复,正如下图中展示的那样。

image
Day 2 Operation 流程

监控程序是基于服务水平协议(SLA)中定义的要求。SLA 基于服务水平目标(SLO),它代表了我们的服务水平指标(SLI)的状态。自动化和监控是解决第 2 天责任的关键。

有几类工具可以帮助完成 Day2 的工作。应用性能监控(APM)类组软件,帮助 IT 管理员监控应用性能,从而提供高质量的用户体验。在这里我们可以说出 Datadog、Dynatrace、SignalFX 或 Nutanix Xi Epoch。还有一些自动化和编排工具,如 Ansible 或 Kubernetes,它们有助于管理应用环境。这些工具的应用与 Day1 的工作相重叠。最后,JIRA 或 GItHub 系统处理客户服务,使用户能够报告与他们正在运行的应用程序有关的问题。

参考