
34
|
第
3
章
设计持续交付的架构
云平台中的绝大多数
I/O
操作都通过网络进行。例如,看上去是本地的弹性块存储通常
由一个存储区域网络(
SAN
)提供,性能特征差异很大。如果你在本地计算机上开发一
个应用程序,包含三个频繁访问数据库的服务,那么你就会发现,同样是访问
localhost
回环网络和直接访问
SSD
块存储的操作,本地环境和云平台上的性能差异很大。这甚至
可以决定一个项目的成败。
大多数云计算的基础设施天生就是短暂的,与本地环境的硬件相比,也更容易出现故障。
结合我们大多数人在设计分布式系统时所遵循的原则,你必须设计出能够容忍服务消失
或者被重新部署的系统。当许多开发人员在考虑如何测试这类故障时,脑海中都会浮现
出
Netflix Simian Army
和
Chaos Monkeys
工具。但是,这类测试通常是在生产环境中进
行的。在开发
CD
构建管道时,你还需要实现一个有限的但是功能相当的混乱测试,只
不过在故障类型和效果方面更加可控。
Release It!
开发人员必读资料
虽然已经发布了第
2
版,但是
Michael Nygard
的
Release It!
(Pragmatic Bookshelf)
(
https://pragprog.com/book/mnee2/release-it-second-edition
)仍然经常被开发人员
所忽视,因为他们没有意识到本书的主题是什么。但是,这是一本介绍如何设计
和部署高可用、可容错的生产级软件的首选参考手册。在我们看来,这对于任何
一名正在创建服务化应用程序或者在(分布式的)云平台上部署的 ...