阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

利用 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:521787

评论

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

外包学生管理系统架构文档

看,有只猪

架构实战营 模块八 作业

一雄

作业 架构实战营 模块八

架构实战营模块三作业 - 外包学生管理系统的架构文档

李焕之

【Flutter 专题】44 图解矩阵变换 Transform 类 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

如何对技术视频转换文章投稿进行二次创作

孙叫兽

技术社区 投稿 引航计划

边缘计算如何实现海量IoT数据就地处理

孙叫兽

物联网 边缘计算 引航计划

疯狂复习20天卷土从来,2021Java笔试题总结

Java 程序员 后端

学习心得 - 架构训练营 - 第三课

Fm

《鸿蒙理论知识01》HarmonyOS概述之技术特性

孙叫兽

鸿蒙 鸿蒙开发 引航计划

《鸿蒙理论知识02》HarmonyOS开发平台和工具

孙叫兽

鸿蒙 HarmonyOS 鸿蒙系统 引航计划

架构设计系列三 详细架构设计文档编写

nydia

详细架构设计文档 架构设计文档

样式的书写顺序到底能影响渲染性能吗,css中定位到底有几种方式

你好bk

CSS 大前端 性能分析

手撸二叉树之恢复二叉树

HelloWorld杰少

9月日更

28分钟完成一款Python游戏,《客服戏翻总裁牌》

梦想橡皮擦

9月日更

成为更好的 Go 开发者的七个主题

baiyutang

Go 语言 9月日更

疯狂复习半个月,全栈系统化的学习路线

Java 程序员 后端

《鸿蒙理论知识03》HarmonyOS概述之系统安全

孙叫兽

鸿蒙 鸿蒙开发 鸿蒙系统 引航计划

极客时间【架构实战营】第二期 模块三作业

Geek_91606e

架构实战营

疯狂复习20天卷土从来,tomcat原理及优化

Java 程序员 后端

疯狂复习半个月,rocketmq原理面试题

Java 程序员 后端

疯狂涨知识,spring全方位深入探索,

Java 程序员 后端

《鸿蒙理论知识05》HarmonyOS概述之下载与安装软件

孙叫兽

鸿蒙 鸿蒙系统 引航计划

系统的可靠性 Reliability

BlockQuant

MySQL 稳定性 可用性 可靠性

疯狂复习20天卷土从来,Java面试真题解析火爆全网

Java 程序员 后端

Apache APISIX 社区周报 | 2021 8.30-9.12

API7.ai 技术团队

Apache 开源 API网关 APISIX 社区周报

再见了,我的散装研发管理平台;再见了,4台ECS!

阿里巴巴云原生

云计算 阿里云

乘着汽车智能化的浪潮,“汽车人”职业方向的选择(一)

SOA开发者

软件 职业成长 汽车

【LeetCode】链表中的下一个更大节点Java题解

Albert

算法 LeetCode 9月日更

疯狂复习半个月,三面蚂蚁金服(交叉面)定级阿里P6

Java 程序员 后端

《鸿蒙理论知识04》HarmonyOS概述之系统定义

孙叫兽

鸿蒙 鸿蒙系统 引航计划

我理想中的任务调度系统

分布式 任务调度 scheduler

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