在努力运行、运行和运行时,你肯定不希望犯下骑士资本 (Knights Capital) 在 2012 年所犯的那项 4.6 亿美元的错误。这个领先的金融做市商单日的计算机系统故障为整个 IT 界提供了多项教训,其中包括你的系统组件的设计、实现和 DevOps 详细信息至关重要。在这篇两部分的博文中,我将分享一些能够帮助开发团队维护持续集成和持续部署 (CI/CD) 过程防呆措施的想法。尤其是,我将展示如何使用功能切换和功能上下文来管理持续更新以指示代码路由,存储日志数据以方便访问,以及借助 Redis 创建具有快速查找功能的错误数据库。
想象一下,你是一位工程主管,负责管理一个由多位开发者组成的团队,该团队负责一个拥有数千名并发用户的网络应用程序的前端。你的应用程序部署在 AWS 中,并且你每周都会推送更新。业务无法承受任何网络应用程序中断,因此,如果发生错误,你的团队必须立即回滚最近的更新。
你必须迅速识别问题代码,让相应的开发者修复代码,并将更改纳入后续发布的部分内容中。此外,产品团队一直在要求尽快将新功能普遍提供。那么,你如何快速对错误做出反应,并以业务要求的速度安全地部署功能请求呢?
在 2019 年游戏开发者大会 (GDC) 上,我参加了一场描述了一个经过深思熟虑的流程以可靠地执行每周软件发布的会议。该会议的头衔为“大规模调试:7000 万+ 月活跃用户的跨平台稳定性”,由 Roblox 的克里斯·斯维德勒(一位 Redis 客户)共同主持。克里斯对他的团队在遇到生产问题时如何不更改代码就修改应用行为分享了一个有趣的见解。他们使用功能标志,这与 Martin Fowler 的“功能切换”方法 非常类似。
让我们分解一下图 2,该图概述了一种可以成为你 CI/CD 和分类流程一部分的做法。
此策略对以下事项会有帮助
但此方法可以更进一步,帮助分布式开发团队安全地发布新功能,并在需要时以最小的影响进行回滚。
Redis Enterprise适合在需要快速且持久数据库时。其能力包括:
在本系列下一期中,我将提供更多详细信息和代码段,专门展示使用 Redis 构建的功能切换、功能上下文、错误数据库和日志数据库如何使您的 CI/CD 分流过程更有效和高效。