@Rays
2017-12-08T16:00:01.000000Z
字数 3330
阅读 1772
架构&设计
摘要: Amazon的CTO Werner Vogels在AWS re:invent 2017大会上做了一个主题演讲,探讨了构建“21世纪架构”所需的核心理念。要点涉及:介绍“云原生”革命性架构中涌现的实践、安全正成为每个人的责任、混沌工程(Chaos Engineering)的优点等。
作者: Daniel Bryant
正文:
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)”白皮书的中提出几点原则:
设计运行于云上的系统时,应遵循一系列的原则。包括:避免揣度容量的需求、在生产规模上测试系统、通过自动化简化架构试验、允许演进架构(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