由于重大事件破坏了应用程序的可靠性或性能,没有人喜欢在半夜醒来或周末中断。 当某个应用程序真正崩溃并影响业务运营时,很少有人希望获得作战室的压力。 敏捷开发人员应专注于他们的冲刺承诺,并花尽可能少的时间调查重大事件的根本原因。 然而,应对重大事件,提供解决问题的支持以及参与根本原因分析是每个人的责任。
在最佳情况下,运营团队拥有监视系统,该系统可以检测,警告和解决问题。 现实情况是,操作环境可能会遇到所有人无法控制的问题,例如安全漏洞,重大云中断,第三方服务故障或破坏操作的重大基础架构故障。 即使是最强大的敏捷流程,软件开发生命周期或开发最佳实践,也无法确保应用程序无风险且100%可靠。
[ 也在InfoWorld上:如何在敏捷软件开发中脱颖而出 ]
运营和站点可靠性工程师通常可以在不影响开发团队的情况下解决常见问题。 可以通过自动化或维护规定如何解决这些问题的运行手册来解决常见问题。 但是开发人员可能需要帮助解决更复杂或更不频繁的事故,并且他们有很多方法可以帮助防止出现操作问题。
事件管理是关键的业务流程
如今,许多组织都将软件应用程序开发为面向客户的产品,支持业务服务的客户体验或使员工能够完成工作的工作流的一部分。 当这些应用程序出现故障或表现不佳时,可能会对业务产生重大影响,例如收入损失,预算外成本,品牌声誉影响,项目延误以及员工士气低落。
当应用程序遇到频繁或漫长的停机,性能不佳或意外错误时,这也反映在敏捷软件开发团队中。 如果不可靠的应用程序影响人们的工作,则对员工进行调查并衡量客户满意度的IT部门不太可能获得高分。 如果组织认为软件开发团队无法可靠地发布新功能,则IT管理人员也很难获得预算增加,培训,增加的薪酬或其他收益。
开发团队必须采取积极措施来预防问题,在事件发生期间提供支持,参与根本原因的分析并确定解决关键缺陷的工作的优先级。
让我们更详细地了解这些责任。
[ DevSecOps:如何将安全性引入敏捷开发和CI / CD ]
在开发和发布应用程序时优先考虑质量
敏捷开发团队通常将精力集中在开发和发布新功能,增强用户体验以及解决技术问题上 。 建立诸如CI / CD(连续集成/连续交付)流水线之类的开发实践的团队还必须向左移其测试实践,并使大多数测试自动化,以确保新代码不会破坏软件版本,并且自动化测试全部通过。
开发人员和质量保证测试人员应向左转移安全性,并制定编码实践,以确保应用程序的可靠性。 开发团队还应该在基础架构配置,自动化和监视方面与运营团队合作。 最佳做法包括:
- 标准化和集中化应用程序日志记录和异常处理,以确保可跟踪应用程序问题。
- 最小化应用程序和数据库锁定,这可能会造成瓶颈,尤其是在负载较大的情况下。
- 配置应用程序,服务和数据库以获得高可靠性,并在多个云区域中对它们进行负载平衡。
- 集中监视和警报,并主动查找纵向性能差异。
- 根据需要自动执行重新启动,扩展和关闭服务的过程。
最后,记录应用程序的体系结构和代码至关重要,因为未参与应用程序开发的人员很有可能有责任支持它。 即使代码是模块化的或使用微服务,也必须将文档留给开发人员和站点可靠性工程师来解决问题并改进应用程序。
[ 同样在InfoWorld上:如何通过左移测试改善CI / CD ]
准备支持事件响应团队
在事件发生之前,软件开发团队应建立协议和流程,以更好地支持事件响应团队和站点可靠性工程师:
- 确保软件开发人员了解向事件响应团队提供非工作时间支持是他们工作的一部分。 用人力资源制定政策,尤其是在有关于下班时间的规定或需要加班的情况下。
- 发布通话时间表并提供适当的工具和设备,以便在需要时可以与开发人员联系。
- 通过应用程序,服务,数据库和其他软件组件,确定并记录主题专家是谁。
- 规定开发人员应该或不应该采取的行动来解决重大事件。 例如,大多数组织希望开发人员帮助诊断,提出解决方法并解决事件,但是通常不建议或不允许将修复和部署代码作为事件响应的一部分。
- 澄清和标准化事件发生期间和之后,开发人员必须进行哪些沟通,在何处以及如何进行通信。
解决事件并参加作战室
在事件发生期间,软件开发人员应在最短的时间内帮助解决问题并恢复服务。 一旦招募开发人员,就必须假设运营工程师已经检查并可能排除了与基础架构有关的问题,并且站点可靠性工程师已经探索了该应用程序的常见问题列表。
发生重大事件时,事件管理人员通常会建立桥上电话,聊天会话和物理作战室,以组建一个多学科团队,共同解决问题。 被召集的开发人员应该知道并遵循为这些作战室建立的事件响应和通信协议。
在作战室中,开发人员应为应用程序专家。 在查看了监视器,日志文件和其他警报之后,他们应就操作步骤提出建议。 必须使用特定的语言并将事实与推测分开。 尝试避免错误的转向,并在响应团队过度追求最终导致死胡同的症状时增加延迟。
开发人员应参与此协作,直到事件经理解决问题或排除参与的必要性并为之辩解。
[ 通过InfoWorld的App Dev Report新闻通讯了解软件开发中的热门话题 ]
找出根本原因并解决应用程序缺陷
一旦应用程序或服务恢复到正常运行状态,重大事件即告关闭。 此时,在ITIL(信息技术基础结构库)中,为他们分配了问题,以便团队可以确定根本原因。 目标是对所有潜在问题和情况进行全面诊断。 是什么原因导致事件发生? 哪些因素定义了业务影响的严重性和严重性? 解决该问题需要哪些条件(包括工期和费用)?
一旦确定了根本原因,敏捷开发团队应分配一个或多个缺陷,以解决根本原因,降低风险或减轻业务影响。 开发团队可能围绕敏捷过程和软件开发生命周期中的缺陷有不同的定义和过程。 最关键的是,当已知问题反复造成问题或导致重大业务中断时,敏捷开发团队及其产品所有者会收到此反馈并优先进行改进。
毕竟,通过软件提供新功能只是开发人员的职责之一。 确保应用程序可靠,安全,性能良好并具有良好的用户体验是团队真正满足业务需求的地方。
From: https://www.infoworld.com/article/3530276/how-agile-teams-can-support-incident-management.html