人工智能-机器学习

解决方案架构师修炼之道

2021-12-06  本文已影响0人  yeedom

推荐序二


推荐序四


本书赞誉


译者简介


第1章 解决方案架构的含义

图11 解决方案架构环形图

image-20211130091915517
  1. 全球分布式团队:在这个全球化的时代,几乎每个产品都会有分布在全球各地的用户,以及负责满足客户需求的利益相关者团队
  2. 全球合规性要求:当在全球范围内部署解决方案时,每个国家和地区都有其法律和合规制度,这些都是解决方案需要遵守的
  3. 成本和预算:解决方案架构能够很好地估计项目的总成本,这有助于确定预算。预算包括资本支出(CapEx),即前期成本,以及运维支出(OpEx),即持续成本
  4. 解决方案实施组件:解决方案架构预先提供了产品不同实施组件的高层次概述,这有助于计划执行过程
  5. 业务需求:解决方案架构考虑了所有的业务需求,包括功能性需求和非功能性需求
  6. IT基础设施需求:解决方案架构决定了项目执行需要的IT基础设施
  7. 技术选型:在解决方案设计过程中,解决方案架构师会进行概念验证和原型开发,考虑企业需求,然后推荐合适的实施技术和工具
  8. 终端用户需求:解决方案架构特别关注终端用户的需求,因为他们将是产品的实际消费者
  9. 解决方案维护:解决方案架构不仅涉及解决方案的设计与实施,还需要负责上线后的活动,例如解决方案的可伸缩性、灾难恢复、卓越运维等
  10. 项目时间表:解决方案架构设计根据每个组件的复杂性布局其细节,通过提供资源估算和相关风险信息,进一步帮助确定项目里程碑和时间表
  1. 创建解决方案架构的两种主要情况如下:
  2. 增强现有应用程序的技术,可能包括硬件更新或软件重构
  3. 从头创建一个新的解决方案,这样可以更加灵活地选择最适合的技术来满足业务需求

图12 解决方案架构的有益属性

image-20211130092048321
  1. 技术价值与需求:解决方案架构决定了投资回报率,可以通过特定的技术选型以及市场趋势来选择解决方案
  2. 业务目标:解决方案架构设计的主要任务是满足利益相关者的需求,并适应他们的需求变更
  3. 目标日期:解决方案架构师与所有的利益相关者(包括业务团队、客户和开发团队)持续合作
  4. 市场机遇:解决方案架构涉及分析和持续评估市场最新趋势的过程
  5. 预算和资源配置:为了获得更准确的预算,我们一般建议在估算方面进行适当的投资
  6. 项目时间表:定义准确的项目时间表对于解决方案的实施非常关键

图13 解决方案架构的非功能性属性

image-20211130092135185

图14 云计算模式的类型

image-20211130092157313

第2章 组织中的解决方案架构师

图21 解决方案架构师的类型

image-20211130092253900

图22 解决方案架构师的职责模型

image-20211130092346162

图23 解决方案设计中的NFR

image-20211130092427920

图24 解决方案设计中的架构约束

image-20211130092450709

图2-5所示的流程图显示了解决方案交付生命周期。解决方案架构师参与了解决方案设计和交付的所有阶段

image-20211130092522389

第3章 解决方案架构的属性


第4章 解决方案架构的设计原则

  1. 通过用户系统中的浏览器缓存来加载频繁请求的网页
  2. 使用DNS缓存可以快速查询网站地址
  3. 通过CDN在用户位置附近缓存高分辨率图像和视频
  4. 在服务器层面,最大限度地利用内存缓存来服务用户请求
  5. 使用RedisMemcached之类的缓存引擎来处理缓存层的频繁查询
  6. 使用数据库缓存来处理内存中的频繁查询
  7. 注意每一层的缓存过期和缓存逐出情况
  8. 谈到面向服务的思想,解决方案架构师总是倾向于采用SOA。最流行的两种SOA分别是基于SOAPSimpleObjectAccessProtocol,简单对象访问协议)服务的架构和基于RESTful服务的架构

图47 单体架构与微服务架构

image-20211130092627070
  1. 耐久性要求:应如何存储数据以防止数据损坏?
  2. 数据可用性:哪个数据存储系统可以被用来传递数据?
  3. 延时要求:数据应该在多短的时间内返回?
  4. 数据吞吐量:数据读写的需求是什么?
  5. 数据大小:数据存储的需求是什么?
  6. 数据负载:需要支持多少并发用户?
  7. 数据完整性:如何保持数据的准确性和一致性?
  8. 数据查询:数据查询的特征是什么?

表41 数据类型及其示例与存储类型

image-20211130092719346
  1. 对于热数据,必须使用缓存并且延迟达到亚毫秒级的缓存数据存储。股票交易和实时产品推荐数据都是热数据
  2. 对于温数据(例如财务报表编制或产品性能报告数据),因为可以承受一定的延迟(从几秒到几分钟),应该使用数据仓库或关系型数据库
  3. 对于冷数据(例如出于审计需要而存储3年的财务记录),可以以小时为单位规划延迟,并将其存储在存档中
  1. MoMusthave,必须具备):对客户来说至关重要,没有的话产品将无法发布
  2. SShouldhave,应该具备):一旦客户开始使用该应用程序,它们就是客户最想要
  3. CoCloudhave,可以具备):锦上添花的需求,但是没有它们也不会影响应用程序该有的功能
  4. WWonthave,不需要具备):即便没有也不会引起客户关注的需求

你需要为客户规划包含Mo需求的最小价值产品(MinimumViableProductMVP)版本,然后在接下来的迭代中交付S需求。使用这种分阶段交付的方式,你可以充分利用各种资源并克服时间、预算、范围和资源方面的挑战。MVP方法可帮助你更好地确定客户需求

  1. 安全是解决方案设计最重要的方面之一,安全上的任何差池都可能对业务和组织的未来造成毁灭性的影响
  2. 数据中心的物理安全:数据中心的所有IT资源都应受到保护,以防未经授权的访问
  3. 网络安全:网络应该是安全的,以防止未经授权的服务器访问
  4. 身份和访问管理(IdentityandAccessManagementIAM):只有经过身份验证的用户才能访问应用程序,用户可以根据自己的授权进行相应的操作
  5. 数据传输安全:通过网络或互联网进行数据传输时,数据应该是安全的
  6. 静态数据安全:存储在数据库或任何其他存储中的数据应该是安全的
  7. 安全监控:任何安全突发事件都应该被捕获,并提醒团队采取行动
  1. 应用程序测试:应用程序的每次更新都需要测试,以确保没有任何功能被破坏。另外,人工测试非常耗时,并且需要大量资源。最好对可重复的测试用例进行自动化,以加快产品部署和发布的速度。应对生产环境的伸缩进行自动化测试,并使用滚动部署技术(如金丝雀测试和A/B测试)来发布变更
  2. IT基础设施:可以通过基础设施即代码(InfrastructureasCodeIaC)脚本(例如AnsibleTerraformAmazonCloudFormation)来实现基础设施的自动化。基础设施的自动化能够在数分钟(而非数天)内完成环境的搭建
  3. 日志、监控和告警:监控是系统的重要组件,你肯定希望每时每刻都能监控到所有内容。你可能还希望通过监控来实现其他自动化措施,例如系统的自动伸缩或自动提醒团队采取行动
  4. 部署自动化:部署是一项重复的工作,并且非常耗时,很多应急场景下,都因部署问题导致了上线紧急关头的延迟。通过CI/CD(持续集成和持续部署)搭建自动化的部署流水线,可以让你更加敏捷,并通过频繁的部署来快速迭代产品功能
  5. 安全自动化:在对一切自动化的同时,不要忘了对安全进行自动化。如果有人试图侵入应用程序,你肯定想要立即知道并迅速行动。你希望自动监控系统边界上的流入流量和流出流量,以便采取预防措施,并在可疑活动发生时得到告警

第5章 云迁移和混合云架构设计

  1. 大数据
  2. 分析
  3. 机器学习
  4. 人工智能
  5. 机器人学
  6. 物联网(IoT
  7. 区块链
  1. 最常见的LiftandShift策略是重新托管(Rehost)、更换平台(Replatform)及重新部署(Relocate),它们通常只需要对应用程序进行最小的变更,就可以完成迁移
  2. Rehost方法速度快、可预测、可重复并且经济实用,这使其成为迁移上云的最优选择。Rehost是最快的云迁移策略之一,它将本地环境中的服务器或应用程序直接整体迁移到云上。在迁移过程中,只需要对应用程序进行最小的更改
  3. 使用Replatform迁移策略时,可能需要在目标环境中重新安装应用程序,这将导致应用程序变更
  4. 在本地数据中心,你可能会采用容器或VMware虚拟设备来部署应用程序。你可以使用名为Relocate的加速迁移策略将此类工作负载移到云上。Relocate可以在几天之内迁移上百个应用程序。你可以以最小的工作量和最简的方式将基于VMware和容器技术的应用程序快速重新部署到云上
  5. Refactor需要更多的时间和资源来重写应用程序,并进行重新架构,然后才能迁移上云。具有丰富云经验或高级技术人员的组织通常使用这种方式
  6. IT资源和项目都迁移到云上后,可能需要为某些服务器或应用程序购买与云兼容的许可证或发行版
  7. Retain:本地环境中可能会存在一些对业务至关重要,但由于技术原因(例如,云平台上不支持某个操作系统或应用程序)不适合迁移的应用程序。在这种情况下,可以让它们继续运行在本地环境中
  8. 对于即将停用的主机和应用程序,可以采用Retire策略

第7章 性能考量


第10章 卓越运维考量

  1. 使用脚本自动化运维手册,以减少人为错误,因为人为错误会增加运维负担
  2. 根据定义好的(资源标识)标准(例如环境、版本、应用程序所有者和角色),使用资源标识机制来执行各种操作
  3. 将事件响应流程自动化,以便在发生故障的情况下,系统不需要太多人为干预即可开始自我修复
  4. 使用各种工具和功能来自动管理服务器实例和整个系统
  5. 在实例上创建脚本,以便在服务器启动时自动安装必需的软件和安全补丁。这些脚本也称为引导脚本
  1. 对于执行阶段,探讨了告警和监控,通过各种示例介绍了不同的监控类型,其中包括基础设施、应用程序、日志、安全和平台监控。此外,论述了告警的重要性,并介绍了如何定义告警的严重级别和与之对应的响应
  2. 对于改进阶段,介绍了如何通过大数据流水线来进行IT运维分析,如何使用“五问”(5Why)法来执行RCA,以及审计的重要性。审计可以使系统免受任何恶意行为和未被注意到的威胁的侵害

第12章 DevOps和解决方案架构框架

  1. 持续集成和持续交付(CI/CD
  2. 持续监控和改进
  3. 基础设施即代码(IaC
  4. 配置管理(CM

图12-4 DevSecOpsCI/CD

image-20211130093320355
  1. 编码阶段,扫描所有代码,以确保没有密码或访问密钥被硬编码在代码中
  2. 在构建阶段,标记所有安全工件,如加密密钥和访问令牌管理等
  3. 在测试阶段,扫描配置,通过安全测试确保满足所有安全标准
  4. 在部署和环境准备阶段,确保所有安全组件都已注册。执行校验,确保构建物没有被篡改
  5. 在监控阶段,监控所有违反安全标准的情况,以自动化的方式执行持续审计和验证

第13章 数据工程和机器学习

如图13-1所示,大数据流水线的标准工作流程包括以下步骤:

image-20211130093427922
  1. 通过合适的工具收集数据(摄取)
  2. 持久化存储数据
  3. 数据处理或分析。从存储中获取数据,对其进行操作,然后将处理后的数据再次存储
  4. 数据被其他处理/分析工具使用,或者被同一工具再次处理,从数据中获得进一步的结果
  5. 为了使结果对业务用户有用,使用商业智能(BI)工具将结果可视化,或者将结果输入机器学习算法中进行预测
  6. 一旦将合理的结果呈现给用户,这就为他们提供了对数据的洞见,然后他们可以采用这些数据进行进一步的业务决策

图132 大数据架构设计中的工具与流程

image-20211130093521741
  1. 从各种来源摄取数据
  2. 采集并高效存储数据
  3. 随着产生的数据量不断扩展
  4. 将分析方法应用于不同来源的数据

图13-5 数据湖的对象存储

image-20211130093556969

图136 使用数据湖ETL流水线处理数据

image-20211130093615494

例如,将一些股市趋势历史数据提供给机器学习模型,让它预测未来6个月到1年的市场波动情况

如图13-8所示,机器学习工作流程包括以下阶段:

  1. 预处理:在这个阶段,数据科学家对数据进行预处理,并将其划分为训练、验证和测试数据集。ML模型使用训练数据集进行训练,并使用验证数据集进行评估。一旦模型就绪,就可以使用测试数据集来测试它。考虑到数据量和业务用例,一般需要将数据划分为训练集、测试集和验证集,可以将70%的数据用于训练,10%用于验证,20%用于测试
  2. 学习:在学习阶段,要根据业务用例和数据选择合适的机器学习算法。学习阶段是机器学习流程中的核心,会在训练数据集上训练ML模型。为了获得精准的模型,你需要对各种超参数进行实验,并进行模型选择
  3. 评估:一旦ML模型在学习阶段得到训练,就要用已知的数据集来评估其准确性。使用预处理阶段保留的验证数据集来评估模型。如果模型预测精度没有达到可分辨验证数据确定的异常的程度,则需要根据评估结果对模型进行必要的调整
  4. 预测:预测也被称为推理。在这个阶段,部署模型并进行预测。这些预测可以实时进行,也可以按批次进行
image-20211130093729083

图13-9 模型的过拟合与欠拟合

image-20211130093755763

第14章 遗留系统架构设计

图14-1展示了遗留系统给企业带来的巨大挑战

  1. 难以满足用户需求
  2. 更高的维护和更新成本
  3. 技能和文档的缺失
  4. 存在安全隐患
  5. 无法与其他系统兼容
image-20211130174438796

14.1.1 难以满足用户需求

14.1.2 维护和更新费用较高

14.1.3 缺乏技能和文档

14.1.4 存在安全风险

14.1.5 无法兼容其他系统

14.2 遗留系统现代化改造策略

14.2.1 系统现代化改造的好处

  1. 客户满意度
  2. 与时俱进的业务战略:现代化改造的应用能让你更加敏捷,具备创新能力。团队可以舒适地适应业务的变化需求,并与新技术一起发展
  3. 在竞争中保持领先
  4. 高可靠性和好性能
  5. 使用前沿技术的能力
  6. 节省成本

14.2.2 遗留系统的评估

  1. 架构评估:为了让架构能够与时俱进,你需要对它有整体的了解。可能会出现这样的情况:你决定在技术上进行小幅升级,但整体架构是单体的,无法伸缩。你应该从可伸缩性、可用性、性能和安全性等方面审视架构
  2. 代码和依赖性评估

14.2.3 现代化改造方案

  1. 架构驱动现代化改造:架构驱动方法需要实现最大的敏捷性。通常,架构调整会采用与语言无关和与平台无关的面向服务的架构模式,这为开发团队提供了更多创新的灵活性
  2. 采取微服务的方式能获得可伸缩性,确保与其他系统更好地集成
  3. 系统重建:解决方案架构师需要深入了解遗留系统,并实施逆向工程,建立新的现代化应用
  4. 你需要建立一种机制,让遗留模块和升级模块同时存在,并能以混合方式进行通信
  5. 迁移和增强:如果现有系统运行得比较好,但存在硬件和成本限制,那么可以采取迁移和小范围的增强方法

14.2.4 文档和支持

图14-4 遗留系统现代化改造技术

image-20211130174628528

14.3.1 封装、重新托管和重新平台化

图14-5 遗留大型机系统现代化改造上云

image-20211130174658307

14.4 遗留系统的云迁移策略

图14-6 遗留系统现代化改造的云迁移路径

image-20211130174728144

第15章 解决方案架构文档

  1. 向所有的利益相关者传达端到端的应用程序解决方案
  2. 提供高层次架构和不同的应用程序设计视图,以满足应用程序的服务质量要求,如可靠性、安全性、性能和可伸缩性
  3. 提供解决方案对业务需求的可追溯性,并关注应用程序如何满足所有的功能性和非功能性需求(NFR
  4. 提供设计、构建、测试和实施所需的解决方案的所有视图
  5. 定义解决方案的影响,以便于评估、规划和交付
  6. 定义解决方案的业务流程、延续和运维,以便系统上线后不间断运行

图15-1 SAD视图

image-20211130174820191
  1. 业务视图:架构设计就是为了解决业务问题,明确业务目的。业务视图显示了整体解决方案和产品的价值主张。为了简化起见,解决方案架构师可以选择识别出与业务相关的高级场景,并将其以用例图的形式展现出来。业务视图还描述了利益相关者和执行项目所需的资源。业务视图也可以被定义为用例图
  2. 逻辑视图:它展示了系统上的各种程序包,以便业务用户和设计人员可以明了系统的各种逻辑组件。逻辑视图提供了它所应当构建的系统的时间顺序。它显示了系统的多个组件是如何连接的,以及用户如何与它们交互
  3. 流程视图:它呈现更多的细节,显示系统的关键流程如何协同工作。这一切也可以用状态图来反映。如果想要展示更多的细节,还可以创建序列图。在银行应用程序中,流程视图可以显示贷款或账户的审批情况
  4. 部署视图:它展示了应用程序如何在生产环境中工作,以及系统的不同组件(例如网络防火墙、负载均衡器、应用服务器、数据库等)是如何连接的。解决方案架构师应当创建简单的框图,便于业务用户理解,还可以在UML部署图中添加更多细节,向技术用户(如开发团队和DevOps团队)展示各种节点组件及其依赖关系。部署视图可以展示系统的物理布局
  5. 实现视图:SAD的核心,体现了架构上和技术上的选择。解决方案架构师需要把架构图设置在这里,例如,显示出它是3层、N层架构,还是事件驱动的架构,以及其背后的理由。你还需要详细说明技术选择,例如,JavaNode.js的使用对比,以及它们各自的利弊。你需要在实现视图中说明执行项目所需的资源和技能
  6. 数据视图:由于大多数应用程序都是数据驱动的,因此数据视图尤为重要。数据视图显示了数据如何在不同组件之间流动,以及如何存储。它还可以用来解释数据安全性和数据完整性。解决方案架构师可以使用实体关系(EntityRelationshipER)图来显示数据库中不同表和模式之间的关系。数据视图还可以对所需的报告和分析进行说明
  7. 运维视图:它解释了系统在启动后如何进行维护。通常情况下,需要定义SLA、告警和监控功能、灾难恢复计划,以及系统的支持计划。运维视图还提供了有关如何进行系统维护的详细信息,包括修复bug、打补丁、备份和恢复、处理安全事件等
上一篇下一篇

猜你喜欢

热点阅读