首页>参考读物>计算机科学与技术>综合

解决方案架构师修炼之道
作者 : [印]所罗伯·斯里瓦斯塔瓦(Saurabh Shrivastava),[印]内拉贾利·斯里瓦斯塔夫(Neelanjali Srivastav) 著
译者 : 陈亮 王磊 周训杰 万学凡 译
丛书名 : 架构师书库
出版日期 : 2021-11-08
ISBN : 978-7-111-69444-1
定价 : 119.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 336
开本 : 16
原书名 : Solutions Architect's Handbook
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书首先介绍解决方案架构的基本原理、设计原则和属性,这些内容将帮助你理解解决方案架构如何使跨企业的软件项目受益。你将了解云迁移和应用程序现代化框架,并将使用微服务、事件驱动、基于缓存和无服务器模式来设计健壮的架构。然后,你将探索架构设计的主要考量,包括性能、可伸缩性、成本优化、安全性、卓越运营和DevOps。此外,你还将学习与大数据、机器学习和物联网相关的先进概念。书末,你将掌握架构设计文档和成为更好的解决方案架构师所必需的软技能。

图书特色

郑金伟 吉利集团IT中心CTO   沈旸 神州数码集团副总裁兼CIO
王博 阿迪达斯中国数字化中心高级总监   张岳 汇丰软件交付总监
亲笔作序推荐

图书前言

本书介绍云环境下的解决方案架构和下一代架构设计,引导读者创建健壮、可伸缩、高可用且容错的解决方案。本书首先阐述对解决方案架构的理解,以及它如何适应敏捷的企业环境。通过介绍关于设计理念、高级设计模式、反模式以及现代软件设计的云原生方面的详细知识,带领读者完成解决方案架构设计的历程。
本书对安全性、基础设施、DevOps、灾难恢复的自动化以及解决方案架构的文档等方面均提供了深刻的解释。读者可以深入探究解决方案设计中的性能优化、安全性、合规性、可靠性、成本优化和卓越运维。此外,读者还将了解云平台(如Amazon Web Services(AWS))中的各种架构设计,以及如何最好地利用云平台来满足解决方案设计、现代化和迁移的需求。
本书还阐述了面向未来的架构设计与数据工程、机器学习和物联网(Internet of Things,IoT)的联系。此外,本书还将提供软技能方面的知识,帮助你提升解决方案架构技能和持续学习技巧。读完本书后,你将获得成为解决方案架构师所必备的技能,开启职业生涯的新篇章。
目标读者
本书适合从事IT行业的软件开发人员、系统工程师、DevOps工程师、架构师和团队负责人,以及有志于成为解决方案架构师并热衷于设计安全、可靠、高性能和高性价比的架构的人阅读。
本书涵盖的内容
第1章主要定义解决方案架构并解释其重要性。本章诠释了采用解决方案架构的各种益处,并探讨了在公有云上的架构设计。
第2章讲述不同类型的解决方案架构师角色,以及他们如何融入组织结构。本章详细探讨了解决方案架构师的各种职责,并进一步说明了解决方案架构师在敏捷组织中的作用及如何与敏捷流程相适应。
第3章揭示解决方案架构的各种属性,如可伸缩性、韧性、灾难恢复、可访问性、可用性、安全性和成本。本章解释了这些架构属性的共存和使用原则,以创建高效的解决方案设计。
第4章讲述创建可伸缩、韧性和高性能架构的设计原则。本章通过应用安全性、克服约束、应用变更以及测试和自动化方法解释了什么是有效的架构设计,并通过探索面向服务的架构和采取数据驱动的方法来研究架构原则,从而有效地使用设计思维。
第5章解释云的优势和设计云原生架构的方法。本章阐述了对于不同云迁移策略和迁移步骤的理解,讨论了混合云设计,并探讨了受欢迎的公有云供应商。
第6章通过实例探讨各种架构设计模式,如分层、微服务、事件驱动、基于队列、无服务器、基于缓存和面向服务等模式。本章展示了解决方案架构属性和原则的适用性,以根据业务需求设计最佳架构,并解释了AWS云平台中的各种参考架构。
第7章阐述应用程序性能提升的关键属性,如延迟、吞吐量和并发性。本章解释了在多个架构层级提高性能的各种技术选型,包括计算、存储、数据库和网络,以及性能监控。
第8章讨论适用于保护工作负载安全的各种设计原则。安全性需要应用于架构的每一层和每一个组件,本章有助于了解正确的技术选型,以确保架构的每一层级都是安全的。本章探讨了适用于架构设计的行业合规性准则,并通过共享安全责任模型解释了云中的安全问题。
第9章对促使架构可靠的设计原则进行讨论。本章探讨了各种用于确保应用程序的高可用性的灾难恢复技术,以及用于业务流程连续性的数据复制方法,解释了最佳实践和云在应用程序中实现可靠性的作用。
第10章论述在应用程序中实现卓越运维的各种流程和方法。本章解释了适用于应用程序设计、实现和后期生产全流程的最佳实践和技术选型,以提高应用程序的可运维性,还探讨了云工作负载的卓越运维。
第11章讨论在不影响业务敏捷性的情况下优化成本的各种技术。本章解释了用于监控成本和成本控制治理的多种方法,有助于读者理解云服务使用的成本优化。
第12章解释DevOps在应用程序部署、测试和安全方面的重要性。本章探讨了DevSecOps及其在应用程序的持续部署和交付流程中的作用,讲述了DevOps的最佳实践以及实现这些实践的工具和技术。
第13章讲述如何设计大数据和分析架构。本章概述了创建大数据流水线的步骤,包括数据摄取、存储、处理和可视化,帮助读者理解物联网所涉及的概念和技术,本章还探讨了有关机器学习、模型评估技术的详细信息,并对各种机器学习算法进行了概述。
第14章讲述遗留系统的各种挑战和现代化驱动因素。本章解释了对遗留系统进行现代化改造的策略和技术。对许多组织来说,使用公有云正在成为首选策略,因此本章还探讨了遗留系统的云迁移。
第15章讨论解决方案架构文档及其结构以及所需的各种细节。本章研究了各种IT采购文档(解决方案架构师需要参与其中以提供反馈)。
第16章讲述胜任解决方案架构师所必需的各种软技能,有助于读者了解如何获得战略技能(如售前和高层沟通)、发展设计思维以及个人领导技能(如大局观和主人翁意识)。本章探讨了将自己打造成领导者并不断拓展自身技能的技巧。
充分利用这本书
有一定软件架构设计经验将有助于你读懂本书。但是,理解本书并不需要特殊的先决条件。各个章节中贯穿了详尽的实例和相关说明。本书将带你深入理解解决方案架构设计的深层概念,你不需要具备任何特定编程语言、框架或工具的知识。
下载彩色图像
本书中屏幕截图或图表的彩色图像可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
排版约定
本书中使用了一些排版约定。
代码体:表示文本中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄。例如,“你可以在传输和静止时应用数据加密。当推送到代码存储库(git push)时,它会对数据进行加密,然后将其存储。当从存储库提取(git pull)时,它会解密数据,然后将数据发回给调用者。”
粗体:表示新术语、重要词语或屏幕上显示的内容。例如,菜单或对话框中的词语会以粗体出现在文中。例如,“Jenkin Master在超载的情况下,会将构建分配到从属节点实例。”
表示警告或重要说明。
表示提示和技巧。

上架指导

计算机

封底文字

本书是一本非常好的解决方案架构师手册,因为它系统、全面,并且与时俱进。这本手册涵盖了SOA、云迁移和混合云、无服务器、微服务、基于队列、事件驱动、大数据等架构设计模式,对性能、安全性、可靠性、运维、成本等进行了全方位考量,也涉及云原生架构、DevOps、数据工程和机器学习等一些崭新领域,从架构师的角色和职责开始,逐步深入探讨设计原则、设计模式及其实践。我相信,它会成为架构师的案头必备。
—— 朱少民
《架构之道:软件构建的设计方法》译者
《敏捷测试:以持续测试促进持续交付》作者QECon大会发起人
成为一名优秀的解决方案架构师绝非一日之功,这本书好比一位向导,指引大家成为一名优秀的解决方案架构师。
—— 张尧 凯捷中国首席架构师
强烈推荐这本经典著作,阅读这本书会帮助你成为一名出色的综合型技术人才。
—— 黄勇
《架构探险:从零开始写Java Web框架》作者
本书从弹性、安全、灾备、DevOps、云迁移及混合云等若干重要维度展开,以架构设计的视角进行详细阐述。同时,结合这样的环境,对架构的含义、原则、模式和方法进行了再归纳和再升华。本书对于投身数字变革中的架构师来说是非常有益的给养。推荐大家阅读、参考。
—— 马徐 腾讯云高级战略专家
《服务设计方法与项目实践》译者
解决方案架构师的重要性越来越受到行业的关注。……很高兴看到这本书出版,它能为这个新角色的定义与发展提供指导。
—— 王健 Thoughtworks首席咨询师
“白话中台战略”系列文章作者
解决方案如何解释?……强烈推荐几位好友联手翻译的这本书,它一定能帮到你。
—— 吴瑞诚 小米业务中台武汉负责人
本书先从“道”出发,帮助读者理解这个时代下架构师面临的挑战以及架构设计原则。然后,进一步洞察了架构师的“法”和“术”,分享了云时代的架构设计模式、设计框架和方法。此外,本书也对优秀架构师的软技能和实战工具选择提出了期待。
—— 笪磊 Thoughtworks BeeArt产品负责人
《EDGE:价值驱动的数字化转型》
《领域驱动设计精粹》译者
我的几位朋友翻译的这本书为有志于成为解决方案架构师的读者提供了系统性的指导。
—— 周柯 Thoughtworks中国区首席信息官
本书作者从全球视角出发,经过多年沉淀积累,总结出一套科学、严谨的解决方案架构师参考指南。
—— 方强 旺米科技创始人

图书序言

技术领域的发展日新月异,IT专业人员为了自身的职业发展,必须与时俱进地掌握新技能。然而,在过去的十年中,这种快速变化的趋势已经在云计算领域中占据主导地位,成为“新常态”。现在,几乎每天都有云供应商发布新的公告、功能和服务更新,因此有必要建立持续学习的文化。与此同时,开发人员、数据库管理员、安全专业人员、构建/发布工程师等常规角色之间的典型界限逐渐变得模糊,这也导致了新角色的出现,这些角色需要着眼全局来把握端到端的完整流程。其中之一就是“解决方案架构师”,该角色从行业中现有的“应用架构师”和“IT架构师”等角色演变而来,现在已经成为主流。随着专业方向的不同,这个角色也发生了一些变化。最常见的是“云解决方案架构师”(Cloud Solutions Architect),该角色本身就相当动态。
通常,IT专业人士希望能转换角色,但是他们缺乏在这条道路上取得成功的指导。本书正是围绕着从现有IT角色到解决方案架构师的有效转换展开,并以一种非常合理的方式说明了开启这段转换之旅的步骤。首先,本书简洁而贴切地说明了这个角色需要什么,以及它与其他类似角色有什么不同。之后,讲到了成为成功的解决方案架构师要具备的技术技能和各方面的知识。本书从基本的设计理念和架构原则(包括高可用性、可靠性、性能、安全性和成本优化)开始,对其中的每一方面进行深入探讨。本书还涵盖了有关云原生架构、DevOps以及数据工程和机器学习领域(现代架构的基石)的一些关键概念。
我个人曾经历了从开发团队负责人变为解决方案架构师的历程,Saurabh也是如此,当年我们一直希望能够有一本手册指导我们转型。正是为了填补这方面的重大空白,Saurabh编写了这本非常详细的书。这本书基于个人经验和所学知识编写而成,这使它对于不同背景的人来说都非常有亲和力。强烈建议大家阅读这本书,并把它作为一份便利的参考资料一直留存,因为在书中你会发现非常重要的知识点,而这些知识将帮助你成为成功的解决方案架构师并开启一个充满无限可能的新世界!

Kamal Arora
AWS解决方案架构高级经理
AWS解决方案架构负责人以及Cloud-Native Architectures和Architecting Cloud-Native Applications(https://www.amazon.com/Kamal-Arora/e/B07HLTSNRJ)的作者

译者序

本书由我与陈亮、王磊、周训杰几位好朋友共同翻译完成。因为在多年的共同工作、生活中建立了深厚的信任和默契,整个翻译过程非常顺利且愉快。陈亮、王磊和周训杰都是资深技术专家,在各自的团队中担任着重要的职责,他们不仅作为技术领导者带领团队通过软件技术为客户解决具体的业务问题,也以解决方案架构师的身份为大型企业提供专业的架构咨询服务。在翻译本书期间我担任一家知名互联网公司的解决方案架构师,这份工作让我有机会真正去了解我的客户,了解如何通过数字化的方式来解决客户的核心诉求,使我沉下心来深刻理解如何推进变革——从产品思维转向解决方案思维,进而为客户打造定制化的解决方案。
我们共同翻译本书的一个非常重要的原因,是为了在自己深耕的领域持续学习。解决方案的内涵很广,本书从组织、技术、流程和工具等各个方面讲述了解决方案架构的精髓,可以让我们快速扩宽知识广度,全面搭建解决方案架构师知识体系。本书或许无法让我们深入探知所有架构模式或工具的细节,但是它结构化地呈现了解决方案架构师需要了解的方方面面,让很多未知的未知问题转换为已知的未知问题。它是一本手册,让我们在需要的时候,只要随手翻开,阅读相应的章节,就可以获取需要的知识;它也是一份指南,看似平铺直叙,却向我们娓娓道来解决方案架构师的进阶之路。
在过去的十年中,软件行业发生了很大的变化,技术实践日新月异。在敏捷实践被广泛应用的基础上,CI/CD流水线已经被建立起来;虚拟化、大数据、云计算模式已逐渐成为主流,一切看似欣欣向荣。然而我们认为,这仅仅只是开始。本书翻译完成的时候,新冠肺炎病毒(Delta变异毒株)再次冲击了我们的工作与生活。我们对解决方案的理解以及数字化转型的紧迫性有了更深刻的体会:解决方案架构师需要具备更强的使命感——不仅需要广泛的知识来应对各种问题,必要的时候还需要深入了解某项技术来确保方案的可行性和投入产出比,必须以客户价值为中心,采取先进的技术实践和正确的企业架构,不断追求管理创新和技术创新。
结合业务理解提出定制化的解决方案,其实是一件很有趣的事情。我们正在用精心设计的解决方案去表达自己的想法,进而解决客户的实际问题。在数字化时代,整个行业都可以用数字化的方式重构一遍。那么,我们的解决方案如何才能帮助更多的人?如何让现代生活中的弱势群体生活得更好?这是解决方案的核心价值,也是我们这些解决方案架构师前行的方向。
希望各位读者喜欢我们精心翻译的这本书。道阻且长,行则将至,与诸位共勉。

万学凡
2021.8.24

推荐序

推荐序一 Recommendation
回顾企业信息化建设的数十年,我们经历了从商业化到部分自主研发的发展阶段,随之而来的企业级数字化应用越来越多、越来越复杂,因此技术架构的需求也日益凸显。企业信息化建设开始将注意力放在企业架构上,也开始从互联网行业学习企业架构——这是因为随着企业建设的项目越来越多,系统越来越不稳定,性能越来越差,交付时间也越来越长,很多企业的IT团队都深受其扰。
企业信息化的过程,也是在各种方案间之中不断“权衡”,进而选择出最优或最合适的“答案”的过程。然而,传统企业往往缺少具备这种能力的专业人员,也就是缺少解决方案架构师这样的角色。
解决方案架构师的工作就是在面对千变万化的业务需求和用户场景时,定制化地设计出各类解决方案。更困难的是,他们需要在企业高速发展的同时,提炼出适合企业发展的技术规范。在面对不同的需求重点时,解决方案架构师的工作职责也会有所不同:基础架构方案团队的侧重点是快速部署、资源可清晰划分、成熟的运维体系;面对客户的交付团队则将重点聚焦于业务蓝图、业务流程、业务生态以及用户体验,等等。
解决方案架构师还需要具备跨领域的思维,即拥有“横向”和“纵向”两种能力:横向是跨业务领域的知识广度,纵向是在某一领域的沉淀深度。他们经常会在方案设计过程中遇到跨多个领域的综合分析与设计。这极具挑战,也最具价值。
解决方案架构师在技术人员眼中是颇具神秘色彩的角色,也是众多技术人员努力的目标,大家都希望有一天由自己来规划整体设计。本书从架构设计理念、设计原则和策略、架构的核心要点等方面系统地阐述了解决方案架构师所需掌握的知识和核心思想,本书的几位译者也是业内的资深解决方案架构师,我向各位读者隆重推荐这本书,祝各位阅读愉快。

——郑金伟,吉利集团IT中心CTO


Recommendation 推荐序二
我们都听过这样一个说法:一名优秀的战斗机飞行员的培养成本比飞行员等重的黄金价值还要高。飞行员培养成本高,主要是因为其训练环境极其复杂。同样,在IT领域里,解决方案架构师的培养成本也是极高的,架构的优劣决定着企业IT的建设和运营成本,架构设计上的漏洞可能会给企业带来巨大的损失。一名优秀的解决方案架构师在成长的道路上,要学习各类IT知识,在项目中摸爬滚打,总结经验教训,从实践中提炼方法论。
在阅读本书的过程中,我非常自然地联想到了著名的旅行系列丛书——“Lonely Planet旅行指南系列”。对于旅行者来说,该丛书既有对于一个地方的整体概述,又有对其特色之处的有趣描述,它不仅能帮旅行者规划好行程,还能激发旅行者的探索欲望。正如这本关于IT架构的书,它完美地平衡了全局和细节,既介绍了常见IT架构的方方面面,包括软件开发、网络、数据、安全和存储,也提供了对于日常工作的全面和快速的指导。
本书的两位作者本身就是云计算的实践者和布道师,他们结合自己的经验,对云原生架构、DevOps和云迁移等实战工作做出了非常详尽的指导。翻译本书绝对不是简单的工作,译者需要具备极其全面的IT领域知识,并且熟悉国内外技术和IT架构体系上的差异。几位译者有着开发、交付、解决方案咨询和敏捷培训等工作经历,也是资深的解决方案架构师,他们为本书的翻译工作付出了大量的心血。
“解决方案架构师是在实践中学习的构建者。一个原型胜过一千张幻灯片。”对书中的这句话,我感同身受。我曾经在中国、欧洲和美国做了10年的企业IT专业咨询,为上百家世界500强企业提供过产品、项目、优化和架构设计的咨询服务。之后我加入了一家科技公司,作为CIO主导企业的数字化变革,深度参与了企业IT基础和应用架构向分布式、云原生、开源和SaaS方向转型的过程。在咨询项目中,可能50%的交付物是通过PPT来完成的。但是在企业架构实践中,更看重原型设计,在工作中我同样希望合作伙伴和开发团队以方案原型的方式来交流工作。基于对架构和原型的理解,我们也在Github上开源了一个基于容器的应用架构设计工具DrawDocker。在我看来,解决方案架构师就是企业IT的“神笔马良”,用自己的知识和实践为企业IT勾画出完美的图景。

——沈旸,神州数码集团副总裁兼CIO



Recommendation 推荐序三
非常荣幸受邀作序。第一时间浏览了目录和自己重点关注的章节内容,感觉酣畅淋漓!本书从什么是解决方案架构、解决方案架构的意义起步,首先,讲解了“是什么”与“为什么”的问题;然后,描述了架构师的角色、类型、职责等,回答了“我是谁”的问题;接着,拆解解决方案架构的各种属性,进而深入每一个领域进行讨论,展开本书的核心部分;最后,落脚于架构师软技能的讨论和分享,这部分篇幅虽短,但是却极其重要。
作为一名非科班出身的架构师,我也来谈谈如何用好这本书。
首先,这本书更像是架构师们所需知识图谱的索引,而非一部“宝典”。我们从来都不缺乏各种特定技术领域、技术栈、交付方法等的专业书籍,然而回到架构领域,尤其是能够帮助技术人员成长为架构师的内容则寥寥无几。本书从资深架构师的视角出发,以非常清晰的脉络帮助读者梳理了架构师所涉猎的领域,这就是解决方案架构的“T”字的这一横,每位读者可以根据自身的情况找到适合的方向,去深入挖掘属于自己的那一竖。
其次,在具体的解决方案架构属性的分解以及方案场景的用例方面,本书既抽象地概括了“不变”的部分,也在具象处与时俱进。不变的部分包括架构原则以及架构的设计模式。对解决方案架构原则的深入理解是架构师判断力的核心,而真正简单的、美的原则,甚至与建筑设计的架构是相通的。原则也可以根据组织的现状和面对的问题进行裁剪,但是形成并坚持原则可以帮助架构师不偏航、快决策。设计模式更无须多言,是值得反复思考、越思考越深刻的“不变”部分。所谓与时俱进,则体现在云迁移、混合云架构以及对于安全架构的强调等方面,是不少架构师在日常工作中反复思考的内容。
最后我想说,要成为一名好的架构师,就必须实践出真知!我个人非常欣赏作者在最后一章中提出的对读者的期望:终身学习,终身思考。所有技术人员都有学不完的新技术、新工具、新理念,架构师需要对技术边界有深入的了解,能够回答任何一个新的方法来自哪里,可以解决什么问题,与现有主流方法比较有何优劣。再衍生来说,架构师要做的决策不是纯技术决策,而是要在条件有限、所有相关的要素和环境高度不确定的情况下,做出在时间线上对于组织而言最合理的判断和决策!这就需要每个架构师在真实的挑战中去锻炼自我。软技能往往是区别顶级架构师和一般架构师的关键,其中的深意更是“只可意会,不可言传”!
目前,市场上无论是互联网企业、传统的软件解决方案公司,还是不同行业的领军品牌,都希望能完成数字化转型,因此对于架构师的需求会越来越多。祝愿各位读者通过阅读本书能有所收获,在成为架构师的道路上,心中有光,脚踏实地。

——王博,阿迪达斯中国数字化中心高级总监



Recommendation 推荐序四
最近,学凡等几位好友合作翻译了一本书,推荐给我阅读。受好友所托,我在出差的飞机上翻开了这本书,阅读完毕后收获了意外惊喜。因此,写下如下文字,希望帮助读者从本书有所收获。
作为在一线摸爬滚打多年的咨询师,我每天面对的是客户现场层出不穷的问题,深深理解“成事”之难。特别是在售前阶段,快速理解客户需求与约束,形成一份能够打动客户的方案书,是与客户达成合作的至关重要的一环。可以说,我每天都在围绕客户提出的大大小小的问题,做解决方案并努力获得客户认可。虽然我过去做了不少解决方案架构师相关的工作,但并未仔细去思考和总结解决方案形成、调整、落地与演进的全流程“套路”,对解决方案架构师的核心技能也未进行过深入思考。本书向我展示了一个全面的框架,让我对上述两个问题有了系统性的认识,特别是在设计解决方案过程中的风险、难点与应对之策方面,作者基于多年经验进行了有效总结。
解决方案架构师这个岗位,在很多人眼里是相当“高大上”的。也有些人对架构师的刻板印象是只会指手画脚,不管落地——这是本书极力纠正的一个认知。所谓“欲戴其冠,必承其重”,作为架构师,对整个解决方案应该端到端负责,在光鲜亮丽的头衔后面是“成事”的能力、勇气和推动力。为了“成事”,架构师需要承担很多责任,围绕最核心的解决方案的形成和落地展开,包括需求分析、了解并推动干系人、明确约束、技术选型、原型设计与概念验证、交付解决方案等,努力成为解决方案的扩展与技术布道者,在上述每项职责背后都需要进行反复思考、不断交流,付出说服性沟通、调整与再调整的努力。一名好的解决方案架构师,不能表面上能说会道、挥斥方遒,而要能做到深思熟虑、知行合一、软硬能力兼备,这也是本书给我带来的反思。
最近几年数字化转型盛行起来,敏捷组织打造以及敏捷研发模式的实施日臻成熟,本人过去七年多来沉浸于金融行业敏捷转型工作,感触颇深。在此过程中,传统金融机构面临一个严峻的问题,就是技术架构的灵活性如何才能调整得更加敏捷。本书专门对敏捷组织中的解决方案架构师进行了讨论,对此问题的解决大有裨益。我个人非常认同作者的观点——“只有当组织能够快速适应并更快地响应变化时,快速创新和发布才有可能实现,这意味着组织和解决方案架构的每个部分都必须具有灵活性。”
解决方案架构师的核心能力在于多约束平衡。基于Dave Snowden提出的Cynefin模型,解决方案架构师的日常工作是在Complex域,面对如何平衡业务、技术与组织多重维度的挑战,在诸多约束中找到一个平衡点。具体来说,书中列出了架构师应该考虑的众多维度,包括可伸缩性和弹性、高可用性、容错和冗余、灾备与业务连续性、可扩展性与可重用性、易用性、安全合规性等,这些内容对资深人士来说自然耳熟能详,但未必真正深入了解。再比如结合书中提到的11条架构设计原则,给出平衡约束角度全景图,按图索骥而又能不墨守成规,则是架构师成长道路上必须经历的旅程。最近,我正在给某家大型股份制银行做数字化转型相关咨询服务,一个业务与技术开始融合的团队正在开发一款行业领先的产品,目标是5个月后发布。其研发团队一直致力于功能性开发,至此还没有考虑过性能、安全、集成、体验相关的问题。我们介入后,围绕发布目标,反向梳理了三大模块工作细节及其配合关系,包括功能性开发与测试、非功能性开发与验证、产品运营与推广等,帮助产品相关的几十人的业务与技术团队就目标形成共识,包括帮助团队明确和调整优先级,舍弃一些不太重要的功能,提升安全相关模块开发、性能测试、用户体验验证的优先级。这些工作大大提升了业务与技术团队的领导对发布会成功召开的信心。我所用到的知识与思考方式,与本书中的相关内容不谋而合。
当然,本书中还谈到了很多其他内容,比如数据工程和机器学习、遗留系统架构设计,这两部分在传统大型企业中正是热门的课题,值得大家去细细品读。
冯唐在他的著作《成事:冯唐品读曾国藩嘉言钞》里面引用过曾国藩的一句话:“凡专一业之人,必有心得,亦必有疑义。”解决方案架构师之路道阻且长,本书在令我颇有所得的同时,也激励我进行更多的思考,希望大家也如此。此外,“平日千言万语,千算万计,而得失仍只争临阵须臾之顷。”学得再多也不如一战,能不能成事,战场上见分晓。
祝大家阅读愉快,仰取俯拾。

——张岳,汇丰软件交付总监,《数字化转型:企业破局的34个锦囊》译者

图书目录

本书赞誉
推荐序一
推荐序二
推荐序三
推荐序四
译者序
序言
前言
作者简介
审校者简介
第1章 解决方案架构的含义 1
1.1 什么是解决方案架构 2
1.2 解决方案架构的演进 4
1.3 解决方案架构为何如此重要 5
1.4 解决方案架构的益处 5
1.4.1 满足业务需求和交付质量 7
1.4.2 选择最佳技术平台 7
1.4.3 处理解决方案的约束和问题 7
1.4.4 协助资源和成本管理 8
1.4.5 管理解决方案交付和项目生命周期 8
1.4.6 解决非功能性需求 8
1.5 公有云中的解决方案架构 9
1.5.1 什么是公有云 9
1.5.2 公有云、私有云和混合云 10
1.5.3 公有云架构 10
1.5.4 公有云供应商和云服务产品 11
1.6 小结 12
第2章 组织中的解决方案架构师 14
2.1 解决方案架构师角色的类型 15
2.1.1 企业解决方案架构师 17
2.1.2 解决方案架构师 17
2.1.3 技术架构师 18
2.1.4 云架构师 18
2.1.5 架构师布道者 18
2.1.6 基础设施架构师 19
2.1.7 网络架构师 19
2.1.8 数据架构师 20
2.1.9 安全架构师 21
2.1.10 DevOps架构师 21
2.2 理解解决方案架构师的职责 22
2.2.1 分析用户需求 22
2.2.2 定义非功能性需求 23
2.2.3 与利益相关者的接触与合作 25
2.2.4 处理各种架构约束 25
2.2.5 技术选型 27
2.2.6 概念验证和原型开发 27
2.2.7 设计解决方案并持续交付 28
2.2.8 确保发布后的可操作性和可维护性 29
2.2.9 担任技术布道者 30
2.3 敏捷组织中的解决方案架构师 30
2.3.1 为什么选择敏捷方法论 30
2.3.2 敏捷宣言 31
2.4 小结 35
第3章 解决方案架构的属性 36
3.1 可伸缩性和弹性 37
3.1.1 容量伸缩困境 38
3.1.2 架构伸缩 38
3.1.3 静态内容伸缩 40
3.1.4 服务器机群弹性 40
3.1.5 数据库伸缩 40
3.2 高可用性和韧性 41
3.3 容错和冗余 43
3.4 灾难恢复与业务连续性 44
3.5 可扩展性与可重用性 45
3.6 易用性与可访问性 46
3.7 可移植性与互操作性 47
3.8 卓越运维与可维护性 48
3.9 安全性与合规性 49
3.9.1 认证和授权 49
3.9.2 Web安全 50
3.9.3 网络安全 50
3.9.4 基础设施安全 50
3.9.5 数据安全 50
3.10 成本优化与预算 51
3.11 小结 52
第4章 解决方案架构的设计原则 53
4.1 工作负载的伸缩 54
4.1.1 可预测伸缩 54
4.1.2 被动伸缩 56
4.2 构建有韧性的架构 56
4.3 性能设计 58
4.4 使用可替换资源 59
4.5 考虑松耦合 60
4.6 考虑服务而非服务器 62
4.7 根据合理的需求选择合适的存储 63
4.8 考虑数据驱动的设计 65
4.9 克服约束 65
4.10 安全无处不在 67
4.11 自动化一切 67
4.12 小结 68
第5章 云迁移和混合云架构设计 70
5.1 云原生架构的好处 71
5.2 创建云迁移策略 72
5.2.1 Lift and Shift方法 73
5.2.2 云原生方法 75
5.2.3 Retain or Retire方法 76
5.3 云迁移的步骤 77
5.3.1 发现工作负载 78
5.3.2 分析信息 79
5.3.3 制订迁移计划 80
5.3.4 设计应用程序 83
5.3.5 执行应用程序迁移上云 85
5.3.6 集成、验证和切换 87
5.3.7 运维云应用程序 89
5.3.8 云上应用程序优化 90
5.4 创建混合云架构 91
5.5 设计云原生架构 92
5.6 主流的公有云 94
5.7 小结 95
5.8 进一步阅读 95
第6章 解决方案架构设计模式 96
6.1 构建N层架构 97
6.1.1 Web层 97
6.1.2 应用层 99
6.1.3 数据库层 99
6.2 创建基于SaaS的多租户架构 99
6.3 构建无状态和有状态的架构 101
6.4 理解SOA 103
6.4.1 基于SOAP的Web服务架构 103
6.4.2 RESTful Web服务架构 105
6.4.3 构建基于SOA的电子商务网站架构 106
6.5 构建无服务器架构 107
6.6 创建微服务架构 109
6.7 构建基于队列的架构 111
6.7.1 队列链表模式 112
6.7.2 作业观察者模式 113
6.8 创建事件驱动架构 114
6.8.1 发布者/订阅者模型 114
6.8.2 事件流模型 115
6.9 构建基于缓存的架构 116
6.9.1 三层Web架构中的缓存分发模式 117
6.9.2 重命名分发模式 119
6.9.3 缓存代理模式 120
6.9.4 重写代理模式 121
6.9.5 应用缓存模式 122
6.10 理解断路器模式 123
6.11 实现隔板模式 124
6.12 构建浮动IP模式 125
6.13 使用容器部署应用程序 126
6.13.1 容器的好处 127
6.13.2 容器化部署 128
6.14 应用程序架构中的数据库处理 129
6.15 避免解决方案架构中的反模式 132
6.16 小结 133
第7章 性能考量 134
7.1 架构性能的设计原则 134
7.1.1 降低延迟 135
7.1.2 提高吞吐量 136
7.1.3 处理并发问题 137
7.1.4 使用缓存 138
7.2 性能优化的技术选型 139
7.2.1 计算能力选型 139
7.2.2 选择存储 144
7.2.3 选择数据库 147
7.2.4 选择网络 149
7.3 管理性能监控 152
7.4 小结 153
第8章 安全考量 155
8.1 架构安全的设计原则 155
8.1.1 实现认证和授权控制 156
8.1.2 安全无处不在 156
8.1.3 缩小爆炸半径 157
8.1.4 时刻监控和审计一切 157
8.1.5 自动化一切 157
8.1.6 数据保护 157
8.1.7 事件响应准备 158
8.2 架构安全技术选型 158
8.2.1 用户身份和访问管理 158
8.2.2 处理网络安全问题 165
8.2.3 保护应用程序及其基础设施 169
8.2.4 数据安全 173
8.3 安全和合规认证 178
8.4 云的共享安全责任模型 178
8.5 小结 180
第9章 架构可靠性考量 182
9.1 架构可靠性的设计原则 182
9.1.1 使系统自愈 183
9.1.2 实现自动化 183
9.1.3 创建分布式系统 184
9.1.4 容量监控 184
9.1.5 验证恢复过程 184
9.2 架构可靠性的技术选型 185
9.2.1 规划RTO和RPO 185
9.2.2 数据复制 186
9.2.3 规划灾难恢复 188
9.2.4 灾难恢复的最佳实践 195
9.3 利用云来提高可靠性 196
9.4 小结 197
第10章 卓越运维考量 198
10.1 卓越运维的设计原则 199
10.1.1 自动化运维 199
10.1.2 进行增量和可逆的变更 199
10.1.3 预测并响应故障 200
10.1.4 从错误中学习并改进 200
10.1.5 持续更新运维手册 200
10.2 卓越运维的技术选型 201
10.2.1 卓越运维的规划阶段 201
10.2.2 卓越运维的执行阶段 204
10.2.3 卓越运维的改进阶段 210
10.3 在公有云中实现卓越运维 212
10.4 小结 213
第11章 成本考量 215
11.1 成本优化的设计原则 215
11.1.1 计算总拥有成本 216
11.1.2 规划预算和预测 217
11.1.3 管理需求和服务目录 218
11.1.4 跟踪支出 219
11.1.5 持续成本优化 219
11.2 成本优化的技术选型 220
11.2.1 降低架构复杂度 220
11.2.2 提高IT效率 221
11.2.3 实现标准化和架构治理 222
11.2.4 成本监控和报告 224
11.3 公有云上的成本优化 227
11.4 小结 228
第12章 DevOps和解决方案架构框架 230
12.1 DevOps介绍 231
12.2 DevOps的好处 231
12.3 DevOps的组成部分 232
12.3.1 CI/CD 233
12.3.2 持续监控和改进 234
12.3.3 基础设施即代码 235
12.3.4 配置管理 235
12.4 什么是DevSecOps 236
12.5 结合DevSecOps和CI/CD 237
12.6 实施CD策略 238
12.6.1 就地部署 238
12.6.2 滚动部署 238
12.6.3 蓝绿部署 238
12.6.4 红黑部署 239
12.6.5 不可变部署 240
12.7 在CI/CD流水线中实施持续测试 240
12.8 CI/CD的DevOps工具 242
12.8.1 代码编辑器 243
12.8.2 源代码管理 243
12.8.3 CI服务器 243
12.8.4 代码部署 245
12.8.5 代码流水线 246
12.9 实施DevOps最佳实践 247
12.10 小结 248
第13章 数据工程和机器学习 249
13.1 什么是大数据架构 250
13.2 大数据处理流水线设计 251
13.3 数据摄取 252
13.3.1 数据摄取的技术选型 253
13.3.2 数据摄取上云 254
13.4 数据存储 255
13.5 数据处理和分析 262
13.6 数据可视化 265
13.7 理解物联网 266
13.8 什么是机器学习 267
13.9 使用数据科学和机器学习 268
13.10 评估机器学习模型:过拟合与欠拟合 270
13.11 了解监督学习和无监督学习 270
13.12 小结 272
第14章 遗留系统架构设计 273
14.1 遗留系统面临的挑战 274
14.1.1 难以满足用户需求 274
14.1.2 维护和更新费用较高 275
14.1.3 缺乏技能和文档 275
14.1.4 存在安全风险 276
14.1.5 无法兼容其他系统 276
14.2 遗留系统现代化改造策略 277
14.2.1 系统现代化改造的好处 277
14.2.2 遗留系统的评估 279
14.2.3 现代化改造方案 279
14.2.4 文档和支持 280
14.3 遗留系统现代化改造技术 280
14.3.1 封装、重新托管和重新平台化 281
14.3.2 重构和重新架构 282
14.3.3 重新设计和替换 282
14.4 遗留系统的云迁移策略 283
14.5 小结 284
第15章 解决方案架构文档 285
15.1 文档目的 285
15.2 文档视图 286
15.3 文档结构 288
15.3.1 解决方案概述 289
15.3.2 业务上下文 290
15.3.3 概念解决方案概述 291
15.3.4 解决方案架构 292
15.3.5 解决方案交付 295
15.3.6 解决方案管理 295
15.3.7 附录 296
15.4 解决方案架构的IT采购文档 296
15.5 小结 297
第16章 学习软技能,成为更优秀的解决方案架构师 298
16.1 掌握售前技能 299
16.2 向企业高管汇报 300
16.3 主人翁意识和责任心 301
16.4 定义战略执行以及目标与关键成果 301
16.5 着眼于大局 302
16.6 灵活性和适应性 303
16.7 设计思维 303
16.8 做一个动手写代码的程序员 305
16.9 持续学习,不断进步 306
16.10 成为他人的导师 307
16.11 成为技术布道者和思想领袖 308
16.12 小结 308

教学资源推荐
作者: Wanda P. Dann  Stephen Cooper  Randy Pausch 著
作者: 吴跃 主编 李树全 尚明生 陈端兵 参编
作者: David E.Culler, Jaswinder Pal Singh, Anoop Gupta
作者: 蒋明礼 杨嘉辉 贾年
参考读物推荐