如果有一个可以定义云计算的特征,或者一个将云计算与传统数据中心区别开来的特征,那就是自动化。
云计算为企业的现代应用程序开发过程提供了许多好处。最重要的好处之一是能够将传统上需要人工处理的关键操作实现自动化。
自动化可能是使用云计算的唯一最显著的优势。云计算架构师通过在可行的地方利用自动化,在他们的角色中茁壮成长。
对云计算架构师的工作至关重要的一些常见的云计算自动化技术是什么?在设计、构建和部署云托管应用程序时,每个云架构师都应该努力实现以下自动化的5种操作。
(1)扩展
自动扩展是使用云计算的最基本和最必要的措施。无论人们谈论的是自动扩展服务器资源,还是内置在原生云服务(如Amazon S3和DynamoDB)中的弹性扩展,扩展都是云计算的重要组成部分。构建可扩展的基础设施是人们首先迁移到云计算的核心原因之一。
但是这种自动化的可扩展性需要快速而轻松地启动新的服务器实例,这将引向下一个自动化。
(2)服务器配置
在云计算出现之前,在数据中心配置一台新服务器可能需要几天或几周的时间。云计算自动化可以在几分钟内提供功能齐全、可操作的服务器实例,安装并运行所有所需的软件和服务。自动化服务器配置不仅是自动扩展的关键,也是自修复基础设施(另一种云计算自动化形式)的关键。终止一个失败的或受到损害的服务器实例,并让自动化用一个新的服务器实例替换它,将改变问题解决在云中发生的方式。这种能力对于改进许多类问题和错误的平均解决时间(MTTR)非常关键。
无论是在像Amazon EC2这样的计算服务中启动新的虚拟机实例,还是在像谷歌Kubernetes Engine这样的Kubernetes环境中启动新的容器实例,自动化服务器配置的工作原理都是一样的。在任何一种情况下,在启动、扩展和修复服务器实例时,自动化都可以提高速度和可靠性,这是大多数支持云计算的应用程序的基础。
自动化服务器配置的另一个好处是提高了可用性。自动化配置意味着少量的大型服务器可以很容易地替换为大量的小型服务器。这样的模型可以极大地提高应用程序的可用性,减少故障的影响。
但是,只有当操作服务器所需的其他基础设施也能够快速、轻松地设置时,自动化服务器配置才能发挥作用。
(3)基础设施创建
自动配置服务器本身并不足以启动和运行云计算应用程序并为用户提供服务。企业还必须提供负载平衡器、防火墙、网段、数据库和应用程序所依赖的任何其他服务,如队列和缓存。在应用程序完全发挥功能之前,必须设置、配置所有支持基础设施并将其连接到应用程序。
如果人工完成,所有这些配置都会非常耗时。如果部署在内部部署数据中心中,可能需要数天或更长时间来设置所有必要的组件。然而,在云计算应用中,一种称为基础设施即代码(IaC)的自动化技术允许使用对API的调用来提供应用程序基础设施。
IaC允许用户指定在源代码中如何设置基础设施,这些源代码通常是JSON或YAML文件,可以使用传统的软件版本控制系统(如Git)进行管理。然后,将经过编码的基础设施配置传递给一个工具,该工具将自动提供、配置并将基础结构组件连接到一个工作网络中。
有许多工具可以执行此级别的云基础设施自动化。
作为代码的基础设施为基础设施供应过程提供了独特的好处,包括更改控制和批准、更改跟踪和基础设施代码重用。作为代码的基础设施只能在云平台或类似云平台的数据中心中使用,在这些数据中心中,基础设施API允许自动创建基础设施。
云架构师应该利用IaC工具为基础设施供应创建可靠、安全且可重复的云模式。其好处怎么说都不为过。
(4)代码部署
自动化代码部署管道并不是云计算所独有的。但是,考虑到大量使用其他类型的自动化,自动化代码部署是支持云的应用程序的自然扩展,并且它们深受云计算架构师的依赖。
自动化代码部署最流行的方法之一是持续集成(CI)/持续交付(CD)管道。这是一种模型,它允许基于检入软件版本控制系统(例如Git)的代码,将代码部署自动应用到生产应用程序。根据应用程序和企业的策略,自动化部署可能被安排(例如每天或每小时),或者在对代码库进行更改并可用于部署时触发。
有许多工具可用于支持自动代码部署。这些工具包括Jenkins、Bamboo、GitLab、CircleCI和AWS Code Deploy。每一种操作方式都不同,云计算架构师必须选择正确的自动化策略来满足开发组织和业务的需求。然而,几乎所有复杂的云计算架构应用程序都使用某种形式的自动代码部署。
(5)云原生服务
作为自动化的一种常常被忽视的是内置在许多云服务中的自动动态扩展。云排队服务(如Amazon Simple QueueService)、云数据存储(如Amazon S3)和云数据库(如Amazon DynamoDB)严重依赖自动化来管理利用它们的动态应用程序的扩展需求。
云计算架构师通常更喜欢使用S3这样的数据存储,而不是从计算实例上的本地驱动器存储(例如)创建自己的数据存储,因为它简单、安全、可靠、易于集成,而且功能自动化。公共云提供的许多其他服务也是如此。通过使用它们,可以利用发生在后台的强大自动化。
云计算意味着自动化
自动化是云计算的定义特征之一,这是云计算与传统数据中心的区别之一。当然,用户可以在不利用自动化的情况下在云中运行其应用程序,许多人都是这样做的,但他们错过了这一点。因为自动化是实现更大的一致性、可靠性、安全性、可扩展性和对业务需求的响应性的途径。
提升并将内部部署应用程序“按原样”迁移到云中是一种相对简单和直接的迁移,通常不需要训练有素的云计算架构师来实现。但是这样的应用程序错过了在云上运行的大部分优势。构建真正支持云的应用程序确实需要云计算架构师,但它将利用云提供的一切。实际上,任何云架构的应用程序都将大量使用自动化。
优秀的云计算架构师将启用、扩展、支持并鼓励在所有基于云的应用程序中使用自动化。简单地说,优秀的云计算架构师将尽可能地实现自动化。他们受到云中可用的自动化能力的驱动,他们喜欢以独特而有趣的方式使用这些自动化。它是最成功的应用程序部署的组成部分。