如何设计、部署和发布能够生产环境中高可靠运行的软件是每一个开发者、架构师、运维人员都需要思考的事情。接下来的一段时间我将介绍一本书:《Release It!Design and Deploy Production-Ready Software》就是介绍关于如何发布经得起生产环境考验的软件系统。
前言
在这本书中,您将找到如何为复杂的现实世界设计、架构和构建软件(特别是分布式系统)的方法。你将面对一群不合逻辑的用户,他们会做出疯狂的、不可预测的事情。你的软件将在发布的那一刻饱受他们的攻击。它需要经受住不安全的物联网烤面包机所带来的DDoS攻击的巨大压力。您需要仔细研究未能通过测试的软件,并找到确保您的软件能够与现实世界保持和谐的方法。
本书适合人群
网站、web服务以及分布式系统架构师、开发者。因为系统必须可用否则公司就会亏损。这些系统可能是通过直接销售产品获得收入的电子商务系统,或者是员工用于工作的企业内部系统。如果有人因为你的软件停止工作而不得不回家,那么这本书就是为你准备的。
本书结构
本书包含4部分,每一部分都有案例分析。第一部分:稳定性,表明你如何保持你的系统正常运行。尽管通过冗余保证了可靠性,但分布式系统的可用性更像“两个8”,而不是令人垂涎的“五个9”。稳定是任何其他关切的必要先决条件。如果你的系统每天都崩溃,没人会关心其他功能。在这种环境下,短期的补救措施——以及短期的思考——将占主导地位。没有稳定就没有可行的未来,所以第一部分先看看如何建立一个稳定的基础。
稳定之后,下一个要考虑的就是持续操作。第二部分:为生产设计,你将看到运行在生产环境意味着什么。你将处理当今软件所处的生产环境中的复杂情况包括虚拟化、容器化、负载均衡和服务发现等细节。这部分将说明物理数据中心和云环境中的控制、透明度和可用性的良好模式。
第三部分:系统发布,你将考虑软件部署。这个有很多的工具来实现,但这是问题中最简单的部分。在不损害消费者利益的情况下,频繁的修改和发布系统是很困难的。我们将研究部署以及在不停机的情况下进行部署的设计,然后我们将转向跨完全不同的服务的版本控制——这是一个棘手的问题!
第四部分:解决系统问题,作为信息系统的一部分你将检查系统的生命周期。如果1.0版本是系统的诞生,那么您需要考虑它之后的成长和发展。在这部分,你将看到如何构建可扩展的系统。包括架构的演进,跨系统的“知识”共享。最后,您将学习如何通过新兴的“混沌工程”学科来构建抗脆弱系统,该学科使用随机性和压测来改进系统。
网友评论