ServiceMesher社区
ChaosKong演习
图1.1演示了3个区域,每个区域包含4个可用区
让面向失败的设计成为它们构建、交付和管理软件过程中的一个组成部分 失败是正常规律,而不是例外
可以容忍应用程序出现短暂不可用情况的日子已经一去不复返了。世界是始终在线的。没有人希望计划外的停机出现,其影响已经达到了惊人的水平。例如,2013年《福布斯》估计,亚马逊在一次13分钟的意外停机事故中损失了近200万美元。
图1.4用户对软件的需求推动云原生架构和相应管理方式的发展
图1.5从架构和管理方面我们理解了云原生软件的核心特征:它是高度分布式的,必须在不断变化的环境中运行,并且软件本身也在不断地发展、变化
AdrianCockcroft曾经是Netflix的首席架构师,现在是AWS云架构战略(CloudArchitectureStrategy)的副总裁,他曾经谈到过操作一辆汽车的复杂性:作为一名司机,你必须控制汽车在街道上穿行,并且确保不与执行同样复杂任务的其他司机相接触。[7]之所以能够做到这一点,是因为你已经形成了一个思维模型
你们公司一般在什么时候发布软件?是在“休息时间”完成的吗,例如,周六凌晨2点?这种做法之所以普遍,是因为一个简单的事实:部署通常充满危险。在升级期间需要停机或者部署时引起意外停机都是很正常的,而停机的代价是昂贵的
据说平均每一秒amazon.com就会发布一次代码到生产环境中。你可能会质疑在自己的业务中是否需要进行如此频繁的发布。当然,你可能不需要每天进行86000次发布,但是频繁发布能够给业务带来更好的敏捷性和可实施性
图2.7持续交付特性允许由业务部门(而不是IT部门)来决定何时交付软件
图2.11我们期望的结果是能够让运行在标准化环境中的应用程序保持一致。注意,应用程序在所有环境中都是相同的,运行时环境在生命周期的各个阶段中都是标准的
图2.13数据会告诉你如何并行部署应用程序的多个版本。你可以通过数据对访问应用程序的流量
图3.12正确地抽象能够让平台团队和应用程序团队形成自治,每个团队都负责部署、配置、监控、伸缩和升级各自的产品
图7.4最好在启动应用程序的时候应用配置。大多数应用程序的框架都是这样做的
图7.5当应用程序无法同时运行多个版本时(即多个版本不能作为单个逻辑实体来运行),可以使用蓝/绿升级
图7.7在决定使用蓝/绿升级和滚动升级时需要考虑的一个因素是资源需求。请注意,在蓝/绿升级期间,帖子服务API所需要的资源翻了一倍,而滚动升级仅仅略微增加了一点点资源需求
图10.2通过三个状态对断路器的操作进行建模,并定义它们之间相互转换的条件或者事件。当断路器闭合时,流量可以自由通过。当断路器断开时,请求将无法到达服务。半开状态是一种瞬时状态,表示断路器可以被重置为闭合状态
图10.8API网关位于所有服务的前面,是配置和执行策略的地方