QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

使用混沌工程增强 API 的可恢复性

  • 2018-05-28
  • 本文字数:1343 字

    阅读完需:约 4 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Gremlin 团队在博客上给出了一种简单的混沌实验,可用做验证一个组织的API 是否具有可恢复性的方法。与适当地使用此领域中涌现的商业和开源工具一样,使用混沌工程的原则以及运行“游戏日”(可看成是IT 系统和人员的消防演练)等技术同样可体现出自身的价值。

在这篇由Gremlin 首席站点可靠性工程师 Tammy Butow 撰写的博客帖子中,一开篇就指出,尽管很多组织通过基于 Web 的 API 提供自身的服务(以及提供核心商业价值),但是从作者的经验看,这些 API 及相关的架构常被看成是“二等公民”。随着组织规模的扩张,这种方式存在着一些风险,例如可导致用户体验降级的 API 层失败,甚至是非常严重的事故。在与之相关的运行模式中,增加API 的使用将会增大相关后台系统的压力,并且由请求数量增加而产生的负载可能并非与性能和可靠性呈线性关系。因此,工程师应该制定并运行一些试验,了解负荷增加、系统退化和基础设施失效的影响情况,并最终设计出可降低风险的系统。

Butow 建议,使用“混沌工程”原则和“游戏日”是形成上述理解并设计实验的最好方式。对于不熟悉“游戏日”概念的读者,Adrian Cockcroft 在QCon 旧金山大会将其比喻为“ IT 领域的消防演练”。出乎意料的应用行为或架构失败,常会导致工程师的人为介入,这会使情况变得更糟。在日常生活中,消防演习可训练人们接受如何应对火灾,进而在真正发生火灾的情况下挽救生命,IT 游戏日发挥了同样的作用。

该 Gremlin 博客帖子中,给出了一个针对典型 API 网关重度负载情况的例子脚本,并介绍了如何使用 Gremlin 的“可恢复服务”SaaS 商业平台实现在运行 API 网关的计算实例上注入失败(例如,高 CPU 或内存使用率,或者完全终止)。Butow 在博客帖子中强调指出(她同样也曾在先前的 QCon 伦敦大会演讲中提及),在开始运行混沌实验之前,对监控和可观察性的需求是至关重要的。

“在着手测定 API 可恢复性之前,你应该做的一件事情就是在一致的基础上运行混沌实验。确保你具有良好的可见性(监控),并增加回退覆盖率,所有这些将有助于强化你的系统。”

混沌工程原则正逐渐被主流大众所采纳。这一方面是在 Gremlin 等商业混沌工具和服务业务的驱动下,另一方面的驱动力也来自于一些该领域的先驱者(例如 Netflix ,早期 chaos monkey 的创立者)、一些由社区牵头的工作(例如 Chaos Toolkit )以及一些企业组织(例如 Expedia 和 Bloomberg。后者发布了专用于 Kubernetes 的开源混沌工具“ PowerfulSeal ”)。

随着混沌工程日渐广为采用,这正引导组织考虑是否应构建或购买相关工具,Gremlin 团队推荐工程师应在一些权衡上做出考虑,包括:构建自身混沌实验平台的TCO(总体拥有成本,Total Cost of Ownership)、将内部系统暴露给外部SaaS 平台的能力(以及可取性),以及团队当前技能集及团队在平台路线图方面对控制的需求。一些领域引领者,例如Adaptive Capacity Labs 的联合创始人 John Alspaw ,也提醒说不应忽视可恢复工程中人的因素,这事实上要比相关的工具更为重要。

更多信息,提供在 Gremlin 官方网站上,首届混沌大会将于2018 年9 月28 日在旧金山举行。

查看英文原文: Increasing the Resilience of APIs with Chaos Engineering

2018-05-28 15:401792
用户头像

发布了 391 篇内容, 共 142.2 次阅读, 收获喜欢 257 次。

关注

评论

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

甲方日常 44

句子

工作 随笔杂谈 日常

Polkadot系列(二)——混合共识详解

QTech

区块链 polkadot

开源技术够用了么?我的 NAS 选型与搭建过程

LeanCloud

开源 NAS

一期二班 - 吴水金 - 第五课作业

吴水金

国内外互联网大厂工程师联合推荐:程序员三门课+151个建议

小Q

Java 学习 编程 程序员 开发

vivo 云服务海量数据存储架构演进与实践

vivo互联网技术

数据库 架构 云服务 数据存储

推进AI融合 2020 LF AI & DATA DAY(AI开源日)即将召开

23张图!万字详解「链表」,从小白到大佬!

王磊

Java 数据结构与算法

TensorFlow 篇 | TensorFlow 数据输入格式之 TFRecord

Alex

tensorflow keras dataset tfrecord

Linux高级编程常用的系统调用函数汇总

哒宰的自我修养

Linux 线程 网络编程 进程 MySQL数据库

Spring Boot 如何快速实现定时任务

田维常

springboot

社会正在惩罚不读书的人!这份程序员进阶书单,值得收藏~

田维常

程序员 电子书

刷了LeetCode的链表专题,我发现了一个秘密!

Simon郎

Java 面试 链表

面经手册 · 第16篇《码农会锁,ReentrantLock之公平锁讲解和实现》

小傅哥

Java 面试 小傅哥 ReentrantLock 公平锁

【原创】SpringBoot快速整合Thymeleaf模板引擎

田维常

springboot

看完这篇你还能不懂C语言/C++内存管理?

C语言与CPP编程

c c++ C语言 内存管理 编程开发

高防服务器是什么?

德胜网络-阳

如何将MySQL查询优化到极致?

冰河

MySQL sql 性能优化 查询优化 查询

Redis-缓存雪崩,缓存击穿,缓存穿透

topsion

redis

第一届“多模态自然语言处理研讨会”精彩回顾(免费获取PPT)

京东科技开发者

人工智能 自然语言处理

【原创】Spring Boot终极篇《下》

田维常

springboot

设置Vmware中的Ubuntu为桥接模式

jiangling500

ubuntu vmware 桥接

【原创】Spring Boot一口气说自动装配与案例

田维常

springboot

【原创】Spring Boot 过滤器、监听器、拦截器的使用

田维常

springboot

【原创】Spring Boot 如何手写starter

田维常

springboot

【原创】Spring Boot终极篇《上》

田维常

springboot

JDK8中的新时间API:Duration Period和ChronoUnit介绍

程序那些事

java8 jdk8 新特性 程序那些事 时间API

面试官:Java装箱与拆箱的区别?

田维常

springboot

送你4句口诀 云存储选型不再犯难

京东科技开发者

云存储

追风人与笃行者:云手机的2020风云录

脑极体

C++中的vector和Java中的ArrayList的构造函数的区别

jiangling500

Java c++ ArrayList vector

使用混沌工程增强API的可恢复性_DevOps & 平台工程_Daniel Bryant_InfoQ精选文章