写点什么

利用 Redis 来优化功能部署和错误分类

  • 2019-12-09
  • 本文字数:1377 字

    阅读完需:约 5 分钟

利用 Redis 来优化功能部署和错误分类

为了让系统运行更流畅,又避免 Knights Capital 在 2012 年犯下的 4.6 亿美元的错误,一家领先的金融市场制造商的单日计算机系统故障给 IT 社区提供了一些教训,包括系统组件的设计、实现,和 DevOps 的重要性。在这个由两部分组成的博客中,我将分享一些想法,以帮助开发团队保持其持续集成和持续部署(CI / CD)流程的安全, 特别的,我将展示如何使用特性开关和特性上下文来来管理持续更新,如何创建一个容易访问的日志数据库,一个可以快速查找的错误信息数据库–所有这些都借助 Redis。


想象一下,您是一名工程总监,管理着一个由多个开发人员组成的团队,这些开发人员负责具有数千个并发用户的 Web 应用程序的前端。您的应用程序已部署在 AWS 中,您需要每周推送新的版本,公司无法承受因 Web 应用程序带来的任何破坏,因此如果发生错误,您的团队必须立即回滚到最近更新的版本。


您必须快速识别出问题代码,让开发人员对其进行修复,并在后续对外发布,而且产品团队总是要求尽快提供新功能,因此您如何迅速对错误做出反应,并以业务需求的速度上线新功能?


在 2019 年游戏开发者大会(GDC)上,我参加了一个主题为“大规模调试:每月活跃用户超过 7 千万的跨平台稳定性”的议程,由 Redis Labs 客户 Roblox 和 Chris Swiedler 共同主持,描述了一种可以可以支撑每周更新的软件发布过程。克里斯分享了他的团队如何在 Roblox 上修改应用程序行为而不改变代码,这样可以减少现网问题的发生。他们使用特性标记,这与 Martin Fowler 的“特性开关”方法非常相似。

总结新功能发布的示例 CI / CD 流程


让我们分解图 2,其中概述了可以作为 CI / CD 和分类过程的一部分的方法:


  1. 开发人员开始研究新功能;

  2. 开发人员和产品管理团队决定哪些场景将使用新功能(可能仅针对部分用户);

  3. 开发人员提出了一种切换策略,其中新代码和旧代码由“ if and else”块分隔;

  4. 一旦开发人员完成新功能代码的开发,他们便将 Canary 版本发布到生产环境(借助 DevOps);

  5. 人们在使用该应用程序中,根据其角色和切换,可以执行新代码或者旧代码;

  6. 如果出现问题,可以将切换开关设置为 false,以将所有用户转移到旧代码;

  7. 一段时间后,该功能将升级为正式发布版本(GA)。


此策略可有助于:


  1. 将 canary 版本发布到生产中,以实时流量和真实用户(而不是模拟)进行测试;

  2. 在不回滚任何代码的情况下即时禁用功能;

  3. 通过切换特性开关启用功能或功能组合;

  4. 可通过特性开关中的元数据轻松识别(对于大型开发团队而言)负责的开发人员。


但是可以将这种方法前进一步,以帮助分布式开发团队安全地发布新功能,并在需要时以最小的影响回滚新功能。

Redis Enterprise 的 CI / CD


您需要快速,持久的数据库时,Redis Enterprise 非常适合。其功能包括:


  • 具有永久网络存储的完全托管的 Redis 数据库即服务,可防止实例数据存储丢失;

  • 跨多个 RedisEnterprise 群集创建的无冲突可复制的数据库,这些集群位于各地的不同数据中心,这提供高可用的双活和主备部署。

  • 强大的搜索功能(通过 RediSearch 模块)可跨数据库集群运行搜索查询。



为了让您的 CI/ CD 分流过程更加有效,在本系列的下一部分中,我将提供更多详细信息和代码段来具体展示如何使用 Redis 构建特性开关、特性上下文、错误数据库和日志数据库。


本文转载自公众号中间件小哥(ID:huawei_kevin)。


原文链接:


https://mp.weixin.qq.com/s/OH_JlBEBwMXYxcfYfbom8A


2019-12-09 13:522782

评论

发布
暂无评论
发现更多内容

API 数据接口:使用操作流程与安全指南

Noah

AB Micro850笔记 使用ccw粗略了解PLC信息

万里无云万里天

自动化 PLC 工厂运维

一种绕过Rust借用检查和不可变性的方法

SkyFire

rust 借用检查

6.1K Star,简简单单的看直播

GitHub指北

dart

网页也能跑大模型?

蛋先生DX

AI 浏览器 webassembly 大模型 onnxruntime-web

MES系统如何实现生产车间的实时监控、精准调度

万界星空科技

工业互联网 mes 工业自动化 万界星空科技mes MES、

AB Micro850笔记 热电阻热电偶扩展模块 2085-IRT4

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 上传与下载

万里无云万里天

自动化 PLC 工厂运维

速速收藏!这些2024年上映的AI电影与短剧,申请加入你的国庆假期宅家计划!

可信AI进展

PLC笔记 知识点汇总 day3

万里无云万里天

PLC

5.8K Star,Microsoft 官方开源电商平台

GitHub指北

C#

5.3K Star,轻量级联想拯救者工具箱

GitHub指北

C#

AB Micro850笔记 使用ccw了解扩展与插件信息

万里无云万里天

自动化 PLC 工厂运维

架构误区系列21:模型的边界和流式处理

agnostic

领域模型 模型边界

8.9K Star,开源自托管离线翻译引擎

GitHub指北

Python

高效开发Maven架构设计图解/掌握项目工程自动化技巧(精通篇二)

肖哥弹架构

maven 效能

万界星空科技 MES数据的集成平台

万界星空科技

系统集成 mes 万界星空科技mes 生产管理MES系统

AB Micro850笔记 485串口插件 2080-SERIALISOL

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 更新固件版本

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 工程应用经验总结

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 三种编程方式 梯形图 功能块 结构化文本

万里无云万里天

自动化 PLC 工厂运维

PLC笔记 知识点汇总 day2

万里无云万里天

PLC 电工

利用 Redis 来优化功能部署和错误分类_文化 & 方法_中间件小哥_InfoQ精选文章