写点什么

Gremlin 发布面向混沌实验的应用级故障注入(ALF)平台

  • 2018-10-11
  • 本文字数:3101 字

    阅读完需:约 10 分钟

在旧金山举行的 ChaosConf 大会上,Gremlin 公司发布了其在“故障即服务”领域的第二款产品——应用级故障注入(ALFI)。最初的SaaS 产品旨在帮助工程师在基础设施级创建和运行混沌实验,在此基础上,ALFI 通过本地语言库支持实现了应用程序级的故障注入。目前,仅支持Java/JVM 平台,但很快就会加入其他语言库。

根据 Gremlin 的文档介绍,“操作者考虑请求”,除了希望针对基础设施层尝试注入故障外——如重启一个计算实例,增加网络连接延迟或消耗大量的内存——操作者也希望针对目标应用程序请求注入故障,例如,增加延迟或终止请求。

在将 ALFI 库作为依赖项集成到应用程序之后,工程师可以使用基于 Web 的 Gremlin UI 来运行“攻击”,针对 ALFI 依赖项报告的特定应用程序属性来匹配和限定故障注入的影响。工程师可以创建一个范围精确的破坏实验,例如,只影响特定的客户 ID、位置或设备类型。

选择通过 ALFI 进行故障注入的流量类型(图片来自 Gremlin 的博客

Gremlin 团队声称,由于 ALFI 嵌入到了应用程序中,因此,它可以在任何现有的环境中工作,其中也包括所有的无服务器平台,如 AWS Lambda、Azure Functions 和 Google Cloud Functions。Gremlin 认为,在使用微服务或函数即服务(FaaS)架构方式构建的系统中,许多事件的发生都是由于上游依赖项的某个地方出现了减速或故障。因此,ALFI 可以模拟特定服务、特定 RPC 调用和外部依赖的延迟或全面故障,使工程师可以重现中断,主动发现未知的故障模式,并为多个组件发生故障的更复杂的场景做好准备。

要使用 ALFI,工程师必须将 Gremlin 语言依赖项集成到应用程序中并重新部署。 JVM 安装指南针对当前支持的安装过程提供了一个详尽的步骤(目前只提供了一个 Gradle 依赖示例,很快就会提供一个 Maven 示例)。应用程序重新部署后,必须通过环境变量或属性文件配置一系列 ALFI 参数,比如 Gremlin 团队标识符和凭证

工程师操作的主要 Java 类是 com.gremlin.GremlinService,该类抽象了向 Gremlin SaaS 平台 API 注册、查找和缓存实验以及向 Gremlin API 报告成功所需要的所有功能。GremlinService 类被设计为单例,可以通过依赖注入框架进行管理。文档中提供了将故障注入集成到 Java Apache HTTP 客户端 Amazon DynamoDB NoSQL 数据库客户端的示例。还可以添加自定义扩展

ALFI 的一个重要概念是,每个应用程序都有一组标识属性。这组属性被称为 ApplicationCoordinates,用于确定应用程序何时通过基于 Web 的 UI 匹配攻击请求。gremlin-core 依赖包括在 AWS Lambda 和 Amazon EC2 上运行的集成。在 AWS Lambda 中,将默认设置属性“type=AwsLambda、name 和 region”。在 AWS EC2 中,将设置属性“type=AwsEc2、region、az、instanceId”,例如:

{"type"="AwsLambda", "region"="us-west-1", "name"="event-handler"} 和{"type"="MyServiceType", "region"="us-east-1", "service"="recommendations", "criticality"="2", "userfacing"="true"}。 通过在抽象类 GremlinCoordinatesProvider 中实现这两个方法,还可以定义操作者希望针对的应用程序的其他方面或“坐标”。要创建自定义 ApplicationCoordinates,工程师必须重写 initializeapplicationcoordinate() 方法。自动生成的 ApplicationCoordinates(如果有的话)作为这个方法的参数提供,这意味着,任何自定义的坐标都可以附加到里面。下面是一个自定义 ApplicationCoordinates 的示例:

复制代码
import com.gremlin.ApplicationCoordinates;
import com.gremlin.GremlinCoordinatesProvider;
 
public class MyCoordinatesProvider extends GremlinCoordinatesProvider {
 
@Override
public ApplicationCoordinates initializeApplicationCoordinates(Optional<ApplicationCoordinates> autoDiscoveredCoordinates) {
return autoDiscoveredCoordinates.map(c -> {
c.putField("userfacing", "true");
return c;
}).orElseGet(() -> new ApplicationCoordinates.Builder()
.withType("MyServiceType")
.withField("name", "recommendations")
.withField("userfacing", "true")
.build());
}
}
{1}

然后,可以使用这组 ApplicationCoordinates 来匹配攻击。例如,如果操作者创建了匹配 userfacing=true 的攻击,那么上面示例中列举的应用程序将包含在攻击中。目前,操作者可以指定应该受故障注入影响的请求的百分比,为请求添加延迟或在请求执行线程上导致一个被抛出的异常。

在故障注入领域,也有开源的解决方案,例如(现已退役的) Simian Army Chaos Toolkit ,但是,这些产品需要自托管。运行混沌实验确实需要提前准备和设计,最近有一篇长文“ ChaosConf 问答:混沌工程的好处、挑战和实践”对这些主题都有涉及。

要了解关于 Gremlin ALFI 的更多信息,请查看 ALFI 发布博文 ALFI 帮助页面

查看英文原文: Gremlin Release Application Level Fault Injection (ALFI) Platform for Targeted Chaos Experiments

2018-10-11 19:002694
用户头像

发布了 1008 篇内容, 共 432.9 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论

数据要素如何重构人力资本升级

郑州埃文科技

【AI流程应用】智能知识库搭建与实战应用

JEECG低代码

AI应用 流程编排 JeecgBoot #AIGC AI 大模型

安全可控的AI底座:灯塔大模型应用开发平台全面实现国产信创兼容适配认证

中烟创新

通过群聊、文档、会议等内容即可生成答案,飞书发布AI功能知识问答

ToB行业头条

飞书

从运维告警到业务决策:可观测性正在重新定义企业数据基础设施

观测云

可观测性

乘“4”而上,进取不止|Aloudata 的变与不变

Aloudata

ETL 数据管理 数据生产力

HarmonyOS5云服务技术分享--Serverless抽奖模板部署

莓创技术

HarmonyOS5云服务技术分享--云函数预加载文章整理

莓创技术

HarmonyOS5云服务技术分享--应用预加载提速指南

莓创技术

AI 极客低代码平台快速上手 --生成Python代码

华哥的全栈次元舱

Java Python vuetify 纯血鸿蒙 AIGC低代码平台

AI 极客低代码平台快速上手 -- 生成鸿蒙代码

华哥的全栈次元舱

低代码平台 vuetify 纯血鸿蒙 AI极客 AIGC低代码平台

好用的im即时通讯-企业内部即时通讯软件

BeeWorks

HarmonyOS5云服务技术分享--云缓存快速上手指南

莓创技术

征程 6 J6E/M linear 双int16量化支持替代方案

地平线开发者

自动驾驶; 算法工具链 地平线征程6

从概念走向落地,深圳率先给出新质互联网城市建设路线图

Alter

释放生产力潜能 AI-Hub智能数据中枢引领企业数字化转型

郑州埃文科技

北森酷学院发布新一代AI Learning平台,企业学习开启Agents时代

ToB行业头条

AI SaaS

电脑浓雾之上,一轮鸿蒙之火

脑极体

AI

AI 极客低代码平台快速上手 -- 生成Java代码

华哥的全栈次元舱

Java Python vuetify 纯血鸿蒙 AIGC低代码平台

表答-开启数据分析新范式

梦数技术团队

人工智能 AI 数据分析 爬虫 分析

HarmonyOS5云服务技术分享--云数据库使用指南

莓创技术

HarmonyOS5云服务技术分享--云存储SDK文章整理

莓创技术

HarmonyOS5云服务技术分享--Serverless搭建抽奖

莓创技术

数据要素配置如何驱动城市经济韧性的多元模式

郑州埃文科技

数据要素

HarmonyOS5云服务技术分享--ArkTS调用函数

莓创技术

Spring AI 1.0 正式发布!核心内容和智能体详解

王磊

AI 极客低代码平台快速上手 -- 生成Vuetify代码

华哥的全栈次元舱

Java Python 低代码平台 vuetify 纯血鸿蒙

构建安全护盾:HarmonyOS 应用的数据安全审计与日志管理实战

网罗开发

鸿蒙 HarmonyOS HarmonyOS NEXT

私有化即时通讯软件怎么选?这一款可能适合你!

BeeWorks

即时通讯

HarmonyOS 如何实现传输中的数据加密

网罗开发

鸿蒙 开发工具 HarmonyOS HarmonyOS NEXT 实践分享

HarmonyOS5云服务技术分享--云存储指南

莓创技术

Gremlin发布面向混沌实验的应用级故障注入(ALF)平台_DevOps & 平台工程_Daniel Bryant_InfoQ精选文章