使用手动、耗时的流程来管理平台成本是非常高的。Michael Jenkins认为,团队可以根据重复工作或由人为错误所损失的时间为他们的管理做一个商业案例,通过引进诸如自动化工具和容器等现代技术来改善流程。这样可以得到一种可预测、可重复的部署流程,只需要很少的人工干预,并提供了更高频次、更可靠的部署能力。
在 Craft 2017 大会中,华特·迪士尼公司的高级系统工程师Michael Jenkins谈到了将现代概念注入到遗留流程中的话题。InfoQ正以问答、综述和文章等形式对大会进行跟踪报道。
首先您可能需要构建一个商业案例,来改变遗留流程。Michael Jenkins在文章“ 将现代概念注入到遗留流程 ”中提供了一些想法,讲述了如何做到这一点:
更好地使用新工具的方式-需要找到一个正确的方法就是考虑痛点。作为开发人员或系统管理员,是什么导致你的工作效率降低了?老有东西出现问题,以致于让修复工作变得很痛苦?这种新工具或者新技术能否解决这些问题?如果可以解决,那又该怎么办呢?
除了专注于粗糙的补丁之外,通过收集度量指标来改进系统。例如,如果手动部署需要几个小时,但是可以使用自动化工具将其缩短到几分钟,这将是多么得具有吸引力。另外度量指标可以作为报告的支撑数据,如果有疑问,可以使用这些指标来解答疑问。
最后,您将需要做一个商业案例,来说明遗留流程为什么需要改变,以及如何改善生产力等问题。
InfoQ采访了Michael Jenkins,在这次访谈中,他向我们介绍了如何将现代技术注入到遗留流程中。
Michael Jenkins:遗留流程主要有两个问题:技术债务和手工工作。在某些情况下,我们的遗留流程常常与某些特定版本的软件或操作系统甚至特定的硬件相关联。这种技术性债务使得流程很难得到改进。此外,在很大程度上,我们的遗留流程需要涉及多个手动交互步骤。在这种情况下,不可避免地会出现人为错误,而这些人为错误还会引发一些自动化工具本可以避免的问题。由于手动流程存在局限性,因此当我们把开发人员和管理员从管理手动任务中解脱出来时,我们也就给了他们更多的时间来创新。
Jenkins: 构建商业案例的最佳方式是将重点放在耗时、收入损失严重的流程部分上。 对于一些开发人员和管理员来说,这可能是困难的,因为如果从公司的账本底线来看,他们可能不知道他们所管理的应用程序或系统的整体价值所在。虽然他们不知道价值所在,但是他们起码要避免在重复性工作或返工上面浪费时间。如果他们能够对管理层发表声明,说明问题重复出现造成了时间的损失,这就是商业案例的基础。管理层应该能够将时间的损失作为公司成本的一个考虑因素。另一方面,如果开发人员或管理员知晓应用离线会造成多大的成本损失,那么他们也就清楚了公司为该应用程序花费了多少成本。
Jenkins:如果活动发起者感觉像是举报者,可能很难让人参与到这种变化中来。但其实没有必要这样!我建议首先使用已经存在的沟通渠道,如团队会议或与领导和管理层进行一对一的会谈。开发者和运维人员可以分享他们的经验与需要解决的问题。实际上,这些问题将成为商业案例的基础。例如,他们可以描述他们花费多少时间来解决重复出现的问题,并说明如何从其他工作中挤出这些时间。如果提出改变的人愿意,也许他们也可以分享商业案例。如果一项工作需要整个团队参与,那么获得队友或同事的意见也是非常有用的。遗留流程也许会影响到观察者日常工作之外的多个领域。如果是这种情况,可能还有其他人或团队可以支持发起者,并可以在多个领域展现价值。无论如何,最好的方法是分享经验和寻找盟友。
在他的博客文章中,Jenkins举例说明了运营和开发应如何协作,以及使用应用性能管理数据(APM)来找出需要改进的地方:
通过APM可以更深入地了解应用程序的运行方式以及服务器的运行方式。如果发生问题并导致宕机,开发人员和运维人员都可以使用APM数据来定位问题,然后采取措施防止同一个问题再次发生。
鉴于APM定位和解决问题的方式,开发人员和运维人员之间更具协作性。
Jenkins:最大的障碍是没有打破当前的构建流程。有些人喜欢把它称为“为行进中的汽车更换轮胎”或类似的东西。事实上,要保证在整个构建过程中不会破坏任何东西的前提下,我们需要弄清楚哪部分流程可以使用自动化,以及如何逐步实现更大范围的自动化。我们从一个小点开始处理这个问题,并找出可以改变的流程部分,同时要确保流程的其他部分保持不变。随着时间的推移,我们能够改变流程的某一部分,然后再改变另一个部分,直到整个流程被重构。例如,对于在三个不同的生产环境中运行的三种不同的应用程序,我们的部署过程是相同的。但是由于服务器名称错误或其他错误,管理员将代码部署到错误的服务器,这种情况并不罕见。要解决这个问题,部署时我们可以通过输入代码库URL使其自动选择服务器。这样就可以解决这个问题了。选择正确的服务器后,部署过程的下一部分就可以自动化了。还有其他一些措施,直到整个过程实现自动化为止。
Jenkins:最大的好处是实现了一种可预测、可重复的部署过程。 就像前面所提到的,部署过程所需要的唯一输入是代码库的URL。由于部署过程中的每个后续步骤都是自动化的,所以基本上消除了人为错误。随着手动交互的减少,由人为错误导致破坏部署的问题也将会被消除。那么我们从中获得的好处就是可以花更少的时间用于修复或回滚部署,并且还拥有了一种更高频次、更可靠的部署能力。正如我前面所提到的,这样就可以让管理员花费更多的时间在其他领域上进行创新、做出贡献。
来源: http://www.tuicool.com/articles/NFBJbe3