QCon 全球软件开发大会(北京站)门票 9 折倒计时 4 天,点击立减 ¥880 了解详情
写点什么

Adrian Cockcroft 谈混沌架构:四个层、两个团队和一个理念

2017 年 11 月 22 日

旧金山QCon 大会上,Adrian Cockcroft 呈现了“混沌架构(Chaos Architecture)”的演讲,并探讨了云原生架构的演化以及如何应用混沌工程来构建更好更安全的系统。有效的混沌架构由“四个层、两个团队和一个理念”组成:基础设施、交换机制、应用程序和人;混沌工程团队和安全团队;“建设性破坏”理念。

AWS 云架构 VP Cockcroft 以软件架构的演化进程为切入点开始了演讲,讲述了从单体应用到微服务再到函数(无服务器架构)的发展过程。面向服务架构(SOA)最先尝试对单体进行拆分,形成了粗粒度的迷你单体,它们通过SOAP 传输大XML 文件实现一般性的交互。微服务的出现催生了服务间频繁的交互,它们一般使用REST 风格的接口,通过HTTP 传输简洁的JSON 或经过二进制编码的内容。

五年前,微服务使用标准构建块进行构建,这些构建块是由云供应商提供的服务和平台,如DBaaS、MQaaS 和NoSQL,而微服务本身则成为业务逻辑组件的粘合剂。三年前出现的FaaS 让这些粘合剂组件变成了函数,因此改变了系统架构的方式——在系统处于空闲时关闭服务,客户不需要为此支付任何费用。

应用程序设计的演化和这种架构的变更被统称为“云原生”。Cockcroft 列出了一系列云原生架构原则:按需支付OPEX,而不是预付费CAPEX;自助服务消费,通过API 进行自动分配;默认全球分布;跨区域及多区域可用性模型;通过健壮的持续交付管道实现不可变代码部署。

演讲进行到一半,Cockcroft 把话题转向混沌工程和混沌架构,他认为混沌的核心是“四个层、两个团队和一个理念”。前面两层是基础设施和交换机制,用户请求被路由到本地服务上,数据拥有复制副本,在发生故障时,请求被重新路由到活跃节点上;交换机制比冗余组件更加可靠。

下一层是应用层,该层的微服务得到良好的设计,减小了事故的影响范围,比如使用回路断路器防止危害扩散。Cockcroft 引用了英国Starling 银行 Greg Hawkings 的话,他说,DITTO(Do Idempotent Things To Others)架构和避免更新及删除的语义让实现弹性系统变得更容易。

第四层是人,人是实现弹性系统的核心组件,纠正应用程序的一些非预期行为需要人的介入,而通常这样会让情况恶化。现实当中的防火演习可用拯救人类的生命,因为人们经过训练,知道如何应对火灾,但在 IT 领域该如何进行“防火演习”?“两个团队”指的是混沌工程团队和安全团队。

混沌工程团队使用各种工具(如 Netflix 的 Simian Army 故障注入测试 ChAP Gremlin ),以游戏日的方式让人们参与演习,演练如何应对灾难故障。安全团队则使用 Safestack AVA Metasploit AttackIQ SafeBreach 等工具,尝试主动攻击系统,强制工程师们在可控范围内做一些破坏性的行为。这两个团队的核心理念就是“建设性破坏”。

在演讲结束之前,Cockcroft 探讨了风险容错问题,以及对于企业来说是宽容的可用性更重要,还是具有一定宕机时间的一致性和安全更重要。“建设性破坏”变成了“安全性破坏”。其他相关资料还有:Todd Conklin 的事故预调查播客、John Allspaw 的 stella.report 以及 Sydney Dekker 的 Drill into Failure 。故障是系统层面的问题,也是人为引起的。

Adrian Cockcroft 的演讲PPT 可以在旧金山QCon 网站上找到,演讲视频将在未来几个月内提供。

查看英文原文 Adrian Cockcroft Discusses Chaos Architecture: “Four Layers, Two Teams, and an Attitude”

2017 年 11 月 22 日 18:00926
用户头像

发布了 321 篇内容, 共 110.7 次阅读, 收获喜欢 109 次。

关注

评论

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

架构师训练营第四周总结

一剑

Week04作业

熊威

架构师训练营第四周作业

大丁💸💵💴💶🚀🐟

扯淡 Spring BeanDefinition

CoderLi

Java spring 程序员 源码分析

架构师 第四周学习总结

冯凯

一题搞定static关键字

Java课代表

Java 面试

架构师 第四周作业

冯凯

【科普】Scrum——从橄榄球争球到敏捷开发

禅道项目管理

Scrum 敏捷开发

架构师训练营 - 作业 -4- 互联网产品问题与架构方案

superman

什么是工程师思维?

尖果爱学习

思维方式

架构师训练营4周总结

邵帅

架构师训练营 第四周 作业

Poplar

计算机操作系统基础(八)---存储管理之内存分配与回收

书旅

php laravel 线程 操作系统 进程

架构师训练营第四周总结

陈靓-哲露

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。

chenzt

我精心整理的 136 页 Excel 数据透视表 PDF 文件!【附获取方式】

JackTian

Python 程序员 数据分析 Excel 数据透视表

分布式系统设计 - 第四周总结

孙志平

架构师训练营第四周总结

sunnywhy

程序员的乐趣,生成自定义二维码,5行Python代码就搞定

程序员生活志

Python 程序员 代码 二维码

架构师训练营 - 第四周总结

牛牛

学习 极客大学架构师训练营

瑞幸商业模式的本质与组合式创新

石云升

创业 瑞幸 组合式创新

架构师训练营作业

邵帅

给“小白”漫画+图示讲解MyBatis原理,就问香不香!

码农神说

Java mybatis

大型互联网应用系统都采用了哪些技术和手段,解决了什么问题?

hellohuan

极客大学架构师训练营

架构师训练营 第四周 总结

Poplar

【架构训练 Week04 作业】

Rex

【week04】总结

chengjing

架构师训练营 - 第四周学习总结

hellohuan

极客大学架构师训练营

架构师训练营第四周作业

陈靓-哲露

架构师训练营 - 命题作业 第 4 周

水边

极客大学架构师训练营

架构师训练营第四周作业

sunnywhy

边缘计算隔离技术的挑战与实践

边缘计算隔离技术的挑战与实践

Adrian Cockcroft谈混沌架构:四个层、两个团队和一个理念-InfoQ