站点可靠性工程(SRE)实战
上QQ阅读APP看书,第一时间看更新

对于这一新的工程学科,应该为其提供一些背景信息以提高可读性。SRE是一个快速兴起和不断发展的研究和探索领域。SRE领域的市场和思想受到越来越多的关注。企业在理解SRE的战略意义后,可制定并确立可行的战略。

软件应用越来越复杂,但也越来越精密。高度集成的系统是如今的新规范。企业级的应用程序应该与在分布式和不同系统中运行的若干第三方软件组件无缝集成。越来越多的软件应用程序是由一些互动的、变革性的和颠覆性的服务组成的,以一种临时的方式按需提供。多渠道、多媒体、多模式、多设备和多租户的应用正在变得普遍和有说服力。还有企业、云、移动、物联网(IoT)、区块链、认知和嵌入式应用程序托管在虚拟和容器环境中。然后,还有特定行业和垂直行业的应用程序(能源、零售、政府、电信、供应链、公用事业、医疗保健、银行和保险、汽车、航空电子和机器人)正在通过云基础设施设计和交付。

当前有软件包、自主开发的软件、交钥匙解决方案、科学和技术计算服务,以及可定制和可配置的软件应用程序,以满足不同的业务需求。简而言之,有在私有云、公有云和混合云上运行的操作性、交易性和分析性应用程序。随着互联设备、智能传感器和执行器、雾网关、智能手机、微控制器和单板计算机(SBC)的指数级增长,软件支持在边缘设备进行数据分析,以完成实时数据采集、处理、决策和行动。

我们注定要走向实时分析和应用。因此,很明显,软件是有渗透性、参与性和生产性的。在很大程度上,这是个软件密集型的世界。

与快速发展的软件工程领域类似,硬件工程领域也在快速发展。目前,IT基础设施有集群、网格和云。IT基础设施有强大的设备、云端机箱选项、超融合基础设施和用于托管IT平台与业务应用程序的商品服务器。物理机被称为裸机服务器。物理机的虚拟版本是虚拟机和容器。我们正在走向硬件基础设施编程的时代。也就是说,封闭的、不灵活的、难以管理和维护的裸机服务器被划分为多个虚拟机和容器。这些虚拟机和容器具有高度灵活性、开放性、易管理性和可替换性,并且可快速配置、可独立部署、可水平扩展。基础架构的分区和资源调配通过大量自动化工具得以加速,以实现软件应用程序的快速交付。容器、微服务、配置管理解决方案、DevOps工具和持续集成(CI)平台的组合,在促进持续集成、部署和交付方面发挥着非常重大的作用。

全球机构、个人和创新者对云计算技术抱有清晰和自信的态度。随着云环境的逐渐成熟和稳定,构建和交付的云原生应用程序在数量上有了明显的增长,并且有可行的表达方式和方法来随时制作云原生软件。传统的软件应用程序正在经历精心的现代化改造,并被转移到云环境中,以获得云想法最初设想的好处。云软件工程是一个热门领域,吸引了全球众多软件工程师的关注,它包括公有云、私有云和混合云。最近,我们听到了很多有关边缘/雾云的信息。不过,在混合世界中,仍然需要考虑传统的IT环境。

世界各地的开发团队在不同时区工作。由于IT系统和业务应用程序的差异性和多样性,因此,分布式应用程序被认为是未来的发展方向。也就是说,任何软件应用程序的各种组件分布在多个位置,以实现冗余的高可用性。分布式应用程序以容错性、更小的延迟、独立的软件开发以及无供应商作为目标。因此,软件编程模型正在被巧妙地调整,以便它们能在分布式和分散式应用程序时代提供最佳性能。在全球多个时区工作的多个开发团队已经成为这个在岸和离岸开发混合世界的新规范。

随着大数据时代的到来,我们需要通过商品化服务器和计算机的动态池来实现最有用和最独特的分布式计算模式。随着设备数量的指数级增长,设备云离我们并不遥远。也就是说,分布式和分散式设备必然会大量聚集在一起,以形成用于数据捕获、获取、预处理和分析的特定于应用程序的云环境。因此,毫无疑问,未来属于分布式计算。由于我们需要Web规模的应用程序,因此完全成熟和稳定的集中式计算是不可持续的。此外,下一代互联网是数字化、连接设备和微服务的互联网。

数字化和边缘技术带来了许多商业创新和改进。随着企业采用这些技术,我们正在向着数字和智能时代转型。本节将帮助大家理解通过吸收这些开创性和突破性的技术与工具以进行改变的一切东西。

随着大量先进技术的出现,信息和通信技术(ICT)领域正在迅速发展,在该领域中可以方便、优雅地自动执行多项任务。编排技术、工具的成熟度和稳定性必然会将多个自动化任务聚合起来,并使聚合的任务自动化。下面将讨论ICT领域发生的转变和最新趋势。

由于编程语言、开发模型、数据格式和协议等软件技术的异构性和多样性,因此,软件开发和操作复杂性不断提高。有一些突破性的机制可以灵活地开发和运行企业级软件。有一些可以降低复杂性和加速开发的技术,正以迅速和聪明的方式生产出生产级的软件。这些软件正在不断发挥“分而治之”和“横切关注点分离”技术的杠杆作用,并鼓励开发人员开发无风险和未来的软件服务。这些软件正在调用抽象、封装、虚拟化和其他划分方法的潜在概念,以减少软件开发人员的痛苦。此外,还有性能工程和增强方面的问题,正在得到软件架构师的高度重视。因此,软件开发过程、最佳做法、设计模式、评估指标、关键指南、集成平台、框架支持、模板简化和编程模型在这个由软件定义的世界中具有巨大的作用。

因此,数字创新、颠覆和转型方面有几项突破性的技术。首先,物联网范式产生了大量的多结构化数字数据,而著名的人工智能(AI)技术,如机器学习和深度学习等,能够从数字数据中挤出可操作的洞察力。将原始数字数据转换为信息、知识和智慧是实现数字化转型和智能社会的关键。云IT被定位为一流的IT环境,可用于支持和加速数字化转型。

通过数字化和边缘技术,我们的日常用品将被数字化,并加入到主流计算中。也就是说,未来我们将遇到数万亿的数字化实体和元素。随着物联网、网络物理系统(CPS)、环境智能(AmI) 和普适计算技术、工具的快速稳定与成熟,我们正被无数的连接设备、仪器、机器、无人机、机器人、公用事业、消费电子、物品、设备和电器所“轰炸”。现在,随着人们对人工智能(机器和深度学习、计算机视觉和自然语言处理)的空前兴趣和投资,算法和方法以及物联网设备的数据(协作、协调、关联和佐证)经过精心捕捉、清理和处理,可及时提取大量的见解/数字智能。有几种有希望、有潜力、经过验证的数字技术在同步迅速发展,包括各种数据挖掘、处理和分析方法。这些创新和颠覆最终导致数字化转型。因此,数字化和边缘技术与数字智能算法和工具相关联,可以实现和维持数字转型环境(更智能的酒店、家庭、医院等)。可以通过开创性和突破性的数字技术和工具,轻松预测和表达未来数年数字化转型的国家和城市。

云技术正在稳步发展。IT专业人员正在构建和确定协作流程、平台、政策、程序、实践和模式以趋向于云。下文提供了必要的细节。

如今,云应用程序、平台和基础架构越来越受欢迎。云应用程序有两种主要类型。

  • 云支持:当前运行的大规模、单体应用程序得到现代化后被迁移到云环境中,从而获得云范式的明显好处。
  • 云原生:指的是通过从本质上利用云环境的非功能能力,直接在云环境上设计、开发、调试、交付和部署应用程序。

在各种IT环境中托管、运行的当前应用程序和传统应用程序正在进行现代化的转变,并迁移到标准化和多样化的云环境中,以获得云模式最初表达的所有好处。除了让业务关键型应用程序、传统型应用程序和单体应用程序做好云准备之外,我们还致力于在云环境中设计、开发、调试、交付和部署企业级应用程序,从而获得云基础架构和平台的所有特性。这些应用程序本身“吸收”了云基础架构的各种特性,并且可以自适应地运行。微服务架构(MSA)用于设计下一代企业级应用程序。开发人员巧妙地使用微服务架构将大量的应用程序划分为一系列解耦的、易于管理的细粒度微服务。随着云技术的深入应用,企业IT的每个组件都可作为服务交付。云计算理念为IT行业带来了创新和转型。IT即服务(ITaaS)的日子很快将成为现实,而这得益于云领域中的一系列值得注意的进步和成就。

无处不在的云平台和基础架构

一个关键因素是拥有可靠、可用、可扩展且安全的IT环境(云环境和非云环境)。如何开发通用的软件包和库,以及如何建立和维护适当的IT基础架构,以成功运行各种IT和业务应用程序,在过去都是老生常谈的事情。而现在,通过云支持技术和工具的智能应用,传统的数据中心和服务器群正在日益现代化。云理念实现了IT的合理化以及IT资源的高度利用和优化。越来越多的大型公有云环境(AWS、Microsoft Azure、Google云、IBM云和Oracle云)包含了数千种设备、高端服务器、存储设备和网络组件,以适应和满足全世界不同的IT需求。政府组织、大型企业、各种服务提供商和机构正在将自己的IT中心授权到私有云环境中。然后,私有云根据需要与公有云的各种功能相匹配,以满足特定需求。简而言之,云平环境被定位为满足我们的专业、社交和个人IT需求的一站式IT解决方案。

正是来自IT行业、全球学术机构和研究实验室的许多参与者的独特贡献,云才变得无处不在。我们拥有大量私有云、公有云和混合云环境。雾/边缘计算的迅速普及促使了雾/边缘设备云的形成,这对以人为中心的实时应用程序的开发做出了巨大贡献。雾/边缘设备计算就是利用大量连接在一起且功能强大的设备形成一种特定用途的设备云和不可知的设备云,以收集、清理和处理来自地面各种物理、机械和电气系统的传感器、执行器、装置、机器、仪器和设备的多结构实时数据。随着数十亿台互连设备的出现,未来的设备集群和云将迎来新的机遇。毫无疑问,云已经渗透到每个行业,云的巨大成功重新定义并复苏了IT现象。很快,云应用程序、平台和基础架构将无处不在。IT将成为第五大社会公用事业。最相关且最重要的挑战是如何在云IT领域实现更深入、更具决定性的自动化。

在云作为最灵活、最具未来感、最出色的IT环境出现以后,人们开始希望能有一个高度自动化和自适应的云中心来托管和运行IT和业务负载,以实现尽可能多的自动化,从而加速云迁移、软件部署和交付、云监控、度量和管理、云集成和编排、云治理和安全等过程。为了实现这些目标,IT领域同时出现了多种趋势和转变。

几年之前,Marc Andreessen曾经撰写过文章“Why software is eating the world”。今天,我们广泛地听到、看到,甚至有时会体验到如软件定义、计算、存储和网络这样的流行词汇。软件无处不在,并嵌入到一切事物之中。毫无疑问,软件是业务自动化和加速器的主要推动者。如今,在其令人难忘和令人着迷的“旅程”中,软件正在渗透到我们日常环境中的每一件有形物质中,将它们转化为连接实体、数字化物体、智能物体和感知材料等。例如,今天的每辆汽车都“塞满”了数百万行代码,以便其在操作、输出和产品中实现优雅的自适应性。

准确地说,随后的时代为知识填充、情境感知、事件驱动、面向服务、云托管、流程优化和以人为本的应用程序奠定了基础。这些应用程序展示了一些额外的功能。也就是说,下一代软件系统必须是可靠、有益、有效的。此外,我们还需要找到合适的流程、平台、模式、程序和实践,以创建和维护高质量的系统。下一代软件系统存在广泛可用的非功能性需求(NFR)、服务质量(QoS)和体验质量(QoE)属性,如可用性、可扩展性、可修改性、可持续性、安全性、可移植性和简单性。每个IT专业人员面临的挑战在于开发的软件是否能够毫不含糊地从本质上保证所有NFR。

  • 敏捷应用程序设计:我们遇到过许多敏捷软件开发方法论,也了解过极限编程、结对编程、迭代式增量软件开发过程(scrum)等开发方法。但是,对于企业级应用程序的敏捷设计,应用程序设计的激活和加速很大程度依赖MSA的稳定性。
  • 加速软件编程:众所周知,随着敏捷编程方法、流程、平台和框架的成熟,企业级和面向客户的软件应用程序正在迅速发展。还有其他举措和发明可以加快软件的开发速度。基于组件的软件程序、面向服务的软件工程正在稳步增长。有许多前沿工具可始终如一地协助基于组件和服务的应用程序的构建。另一方面,通过配置、定制和以组合为中心的应用程序生成方法,软件工程步骤得到简化和流程化。
  • 通过DevOps进行自动化软件部署:软件程序在开发人员的机器中运行良好,但在其他环境(包括生产环境)中问题多多的原因有多个。常见的原因包括:软件包、平台、编程语言和框架有不同的版本和发行版;在不同的环境中运行的软件是不同的;由于开发环境和生产环境之间的不断磨合,开发人员和运营团队之间存在很大的脱节。

此外,借助敏捷编程技术和技巧,可以快速构建软件应用程序。但是它们在集成、测试、构建、交付和部署方面不是自动化的。因此,DevOps、NoOps和AIOps等获得了巨大的优势和突出地位,它们可以为IT管理员带来多种自动化功能。也就是说,这些“新来者”促进了软件设计、开发、调试、部署、交付、下线以及人员之间的无缝和自发同步。配置管理工具和云编排平台的出现使IT基础架构编程成为可能。也就是说,基础架构即代码(IaC)正在促进DevOps的发展。通过配置文件更快地配置基础架构资源,以及在这些基础架构资源上部署软件,是DevOps的核心方面。

这就是DevOps的概念在最近这些日子里开始蓬勃发展的主要原因。DevOps是一个新的想法,在企业和云IT团队中获得了很多的支持。企业利用多种工具集来实现持续集成(CI)、持续交付(CD)和持续部署(CD),从而迎接这种新的变革。准确地说,除了开发企业级软件应用程序和平台外,在自动化工具的帮助下实现和维持虚拟化/容器化基础设施,以确保持续、有保障地向人们提供软件支持的业务功能和通过IT进行辅助的业务功能,才是当前的需求。