HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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:002187
用户头像

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

关注

评论

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

Apache IoTDB 分布式架构三部曲(二)分片与负载均衡

Apache IoTDB

深入研究区块链数字版权交易

dappweb

区块链数字版权交易

开始报名!龙蜥社区系统安全 Meetup 硬核议程发布

OpenAnolis小助手

操作系统 系统安全 龙蜥社区 eBPF 技术

多云世界中的 API 治理

幂简集成

API 多云 API治理

度安讲 | 第二期「安全左移·业务护航」技术沙龙成功举办

百度安全

Amazon Q Developer 实战:从新代码生成到遗留代码优化(下)

亚马逊云科技 (Amazon Web Services)

人工智能 生成式人工智能

蓝易云 - jenkins教程:sshPublisher示例(Publish over SSH插件)

百度搜索:蓝易云

运维 SSH 服务器 jenkins 免备案服务器

从数据库设计到性能调优,全面掌握openGemini应用开发最佳实践

华为云开发者联盟

数据库 后端 时序数据库 华为云 华为云开发者联盟

Unix套接字进程通信初探【Java版本】

FunTester

蓝易云 - 在C/C++中使用vcpkg

百度搜索:蓝易云

c++ 运维 服务器 云服务器 高防服务器

蓝易云 - maven教程:mvn package -T 2C命令解释

百度搜索:蓝易云

Java maven Linux 运维 云服务器

解析 AI 时代广告素材格局:AppsFlyer 综合报告揭示行业关键数据洞察

财见

昆仑万维开源2千亿稀疏大模型天工MoE,全球首创能用4090推理

新消费日报

构建Python构建自动化测试框架(原理与实践)

我再BUG界嘎嘎乱杀

Python 软件测试 自动化测试

人员身份级的数据中心机房作业随工

鲸品堂

机房 数据中心 机房管理 企业号 6 月 PK 榜

【PMP必考点】2024年PMP敏捷知识必考点

敏捷开发

项目管理 产品经理 pmp 项目经理 PMP考试

万界星空科技数字孪生智慧工厂

万界星空科技

数字孪生 智慧工厂 智能制造 mes 万界星空科技

展示柜透明显示屏的特点简析

Dylan

创新 视频 商品 LED display LED显示屏

告别内存OOM,解决MySQL内存增长问题

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

近期京东开发者最受欢迎的 10 篇文章,内附大量热门岗位招聘

京东科技开发者

李尔将收购西班牙自动化和智能公司WIP Industrial Automation

财见

GRequests: 让 HTTP 服务人类

江湖十年

golang 后端 HTTP http client #go

F5G城市光网,助力“一网通城”筑基数字中国

脑极体

AI 网络

GitHub上新!14个Python项目详细教程(附完整代码)

我再BUG界嘎嘎乱杀

Python 后端 入门 开发语言 零基础

蓝易云 - nginx教程:alias和root的区别

百度搜索:蓝易云

nginx Linux 云服务器 root alias

Python优化、异常处理与性能提升技巧

我再BUG界嘎嘎乱杀

Python 编程 后端 开发语言

数字化时代,API网关为何如此重要?

芯盾时代

网络安全 网关 API网关

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