写点什么

Werner Vogels 报告“21 世纪的(云)架构”:可用性、可靠性和恢复能力

  • 2017-12-10
  • 本文字数:2780 字

    阅读完需:约 9 分钟

Amazon 的 CTO Werner Vogels AWS re:invent 2017 大会上做了一个主题演讲,探讨了构建“21 世纪架构”所需的核心理念。要点涉及:介绍“云原生”革命性架构中涌现的实践、安全正成为每个人的责任、混沌工程(Chaos Engineering)的优点等。

在演讲开篇,Vogels 就提出,当前驱动关键技术发展的是数据、物联网(IoT)、基于GPU 的机器学习计算(以 AWS’s EC2 P3 实例为代表)和深度学习。这些趋势的使用,在社会中引发了一系列的创新。例如,在业务内部采用“大数据”做分析,创建“智能环境”等。但是在过去的二十年中,用于与这些系统接口的数字输入和输出设备并未发生太大的改变。Vogels 认为,下一轮技术演进将聚焦于以人为中心的数字接入,尤其是“人人可用的语音解锁数字系统”。

接下来,Vogels 转而开始探讨有效架构设计的需求问题。有效的架构设计为接口支持技术和数据处理系统提供了动力。Vogles 给出了一系列的云架构实例,其中的关键主题(或支柱)就是在 AWS“架构良好框架(Well Architected Framework)”白皮书的中提出几点原则:

  • 卓越运营(Operational excellence);
  • 安全性;
  • 可靠性;
  • 性能效率;
  • 代价优化。

设计运行于云上的系统时,应遵循一系列的原则。包括:避免揣度容量的需求、在生产规模上测试系统、通过自动化简化架构试验、允许演进架构(Evolutionary Architectures)、用数据驱动架构、通过“游戏日”提高等。

系统用户数每增加两个量级,很可能架构就需要做根本上的改进。

Vogels 强调指出,构建一个安全的系统现已成为每个人的责任,包括开发人员、运维人员、应用程序安全及合规性团队。他提出了一系列的安全原则,包括:身份认证(实施强大的身份认同)、侦查性控制(允许可追溯性)、基础设施保护(在所有层面应用安全措施,并自动执行安全最佳实践)、数据保护(保护传输中的数据和静态数据)、事件响应(通过游戏日为安全事件做好准备)。

没有任何借口去回避数据加密。至少要对 PII(个人身份信息,Personally Identifiable Information)加密,并建立威胁模型……

好的安全实践应通过持续交付构建流水线得以强制执行。在流水线和系统中,事件前后均要应用“控制和验证”。架构即代码(IaC,Infrastructure as Code (IaC) )应该存储在版本控制系统(VCS)中,系统代码应尽早做验证,基础架构更改应强制通过模板进行,并在有需要时或是拿不准时阻止事件。在事件发生后,工程师应始终追踪敏感API 的访问情况,并使用SSoT(真实单一事件源,Single Source of Truth)做配置、验证来源,进而决定是否采取补救措施。为助力上述流程的自动化,Amazon 提供了一系列的AWS 服务,例如 AWS CloudTrail AWS Config Rules 以及新发布的 Amazon GuardDuty

Vogels 继续指出,可用性、可靠性和恢复能力是 21 世纪架构的核心原则。可用性的实现借助于以下方面:将系统部署到多个(地理)可用性区域、部署冗余组件、使用微服务体系结构实现系统、专注于面向恢复的计算、遵循分布式系统的最佳实践等。为提高可靠性,工程师必须考虑设计适用的“ N 个 9 量级的高可用性”,并对硬依赖和冗余依赖有一定了解。恢复能力可以通过快速失败(Failing Fast)、流量节流、指数回落(Exponential Fallback)重试,电路熔断(Circuit Breaking)以及使用幂等性标识(Idempotency Tokens)和过滤器等措施实现。

如何实现一个具体的可用性目标,这是一个商业上的决策。AWS 提供了工具,并确定设计和成本。

接下来,Vogels 向听众介绍了演讲者 Nora Jones 。Jones 是一名 Netflix 的高级软件工程师,她在演讲中探讨了恢复能力和混沌工程。大多数组织在使用云技术和微服务架构时,都采用了复杂的分布式系统。构建这样的系统中,尽管单元测试和集成测试也是非常重要的,但是它们尚不足以保证恢复能力。Jones 认为,对于解决一些复杂系统中的固有问题,混沌工程这一新兴学科至关重要。

混沌工程的核心思想是实践一些可在系统内引发失效的实验。工程师可以提出一个会导致系统失效的假设情景,进而设计一个实验去引发或模拟该情景,并以受控的方式开展实验。通过对结果的分析,进而继续循环开展实验。Jones 在演讲中提出了“混沌的力量”,即对系统内恢复能力测试的可能革新,其中包括:良好受控的重启和降级、有目标的混沌工程、级联失效和失效注入。

Netflix 在 2014 年就建立了一种称为“失效注入测试(FIT,Failure Injection Testing)”的框架。FIT 框架现在已经演变为“混沌自动化平台(ChAP,Chaos Automation Platform)”。ChAP 平台支持工程师自动开展混沌实验。更多细节可参见 InfoQ 在 QCon SF 大会上的相关访谈。Joines 在结束演讲时指出:“混沌(工程)并不会引发系统问题,而是会揭示这些问题”。为进一步探索这些概念,她向听众推荐了一本关于混沌工程的迷你书。这本书是她和Casey Rosenthal、Lorin Hochstein、Aaron Blohowiak 合著的。另外她也推荐去访问 www.principlesofchaos.org 网站。

Vogels 接下来介绍了 AWS 高级技术专家 Abby Fuller ,谈论容器技术在 21 世纪架构中发挥的作用。Fuller 介绍了包括 Segment Capital One 在内的一系列客户案例研究。在这些案例中,容器的打包和部署应用发挥了关键作用。随后,Fuller 简要地介绍了新发布的 AWS 托管 Kubernetes 服务 Amazon Elastic Container Service for Kubernetes( Amazon EKS )和 AWS Fargate 。AWS Fargate 是一种用于 Amazon ECS 和 Amazon EKS 的技术,使得无需托管服务器或集群就可运行容器。Fuller 在演讲中给出了一个重要信息,即 AWS 提供的托管服务使客户可以“只聚焦于工作负载”,而不必去做管理底层基础架构的“千篇一律的繁重工作”。并且只要保证系统架构的正确,应用程序就可以安全、可扩展并可靠地执行。

在结束 21 世纪体系结构的演讲前,Vogels 让听众构想一下未来软件应用程序开发的情形。他提出,在不远的将来,编写代码将完全是用于实现业务逻辑。Vogels 认为,随着“无服务器”架构(“功能即服务”和托管服务)的日益普及,这一愿景的实现可能会早于许多人的预想。

AWS re:invent 2017 大会中产品发布和公告的详细内容,可参见 InfoQ 的相关新闻报道:

更多 AWS re:invent 大会信息,可访问此次大会的官方主页。

查看英文原文: Werner Vogels on “21st Century [Cloud] Architectures”: Availability, Reliability and Resilience


感谢罗远航对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-12-10 18:002085
用户头像

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

关注

评论

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

GetX代码生成IDEA插件,超详细功能讲解(透过现象看本质)

小呆呆666

带你认识数据库视图对象,下次不要再认成“表”了

华为云开发者联盟

数据库 sql 对象 视图 GaussDB(DWS)

朋友圈架构设计

XP

架构实战营 - 模块七作业

Julian Chu

架构实战营

【LeetCode】分割平衡字符串Java题解

Albert

算法 LeetCode 9月日更

Vue进阶(壹佰):当前页面刷新并重载页面数据

No Silver Bullet

Vue 9月日更

TLS协议分析 (三) record协议

OpenIM

直播预告:京东云DevOps与JFrog制品库的融合

京东科技开发者

DevOps 制品库管理 运维开发

模块(三)如何设计出合理的架构

我是一只小小鸟

从 CI_CD 到 DevOps

飞算JavaAI开发助手

DevOps 自动化 基础软件

TLS协议分析 (五) handshake协议 证书与密钥交换

OpenIM

【Flutter 专题】54 图解基本生命周期

阿策小和尚

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

Retrofit源码解读HTTP

Changing Lin

android 9月日更

TLS协议分析 (四) handshake协议概览

OpenIM

终于,基础软件领域的行业盛会来了!

Jessie

开源 云原生 基础软件 中间件 #数据库

微型博客开发项目,手动创建导航组件的新增页面

梦想橡皮擦

9月日更

学习Linux tar 命令:最简单也最困难

华为云开发者联盟

Linux 文件 Linux tar tar命令 存档

使用GO语言实现Mysql数据库CURD

Regan Yue

数据库 Go 语言 9月日更

学会这5种JS函数继承方式,前端面试你至少成功50%

华为云开发者联盟

面试 大前端 js 继承 函数继承

模块七作业

秀聪

架构实战营

如何在AI工程实践中选择合适的算法?

博文视点Broadview

从分子层面雕刻肌肉,新数学模型预测锻炼肌肉最优方式

脑极体

Vue进阶(九十九):页面锚点至顶部

No Silver Bullet

Vue 9月日更

解读顶会ICDE’21论文:利用DAEMON算法解决多维时序异常检测问题

华为云开发者联盟

华为云数据库 时序数据 深度神经网络算法 DAEMON 轨迹分析

【VueRouter 源码学习】第五篇 - 两种路由模式的设计

Brave

源码 vue-router 9月日更

百度清风算法再次升级:必须严打低质下载站

石头IT视角

初恋永远想不到的性能架构(朋友圈)

人工智能~~~

LeetCode题解:897. 递增顺序搜索树,栈,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

从源码角度分析 MyBatis 工作原理

vivo互联网技术

sql mybatis JDBC ORM

Rust从0到1-高级特性-宏

rust 高级特性 Macros

颇具年代感的《JMeter中文操作手册》

FunTester

Jmeter 性能测试 自动化测试 接口测试 FunTester

Werner Vogels报告“21世纪的(云)架构”:可用性、可靠性和恢复能力_架构_Daniel Bryant_InfoQ精选文章