译者 | 布加迪
审校 | 孙淑娟
云为一家公司的现代应用程序开发流程带来了许多好处。最重要的好处之一是能够自动执行向来需要手动步骤的关键操作。
自动化可能是使用云的最显著的一个优势。云架构师在切实可行的地方利用自动化,以确保其角色不被边缘化。
对云架构师的工作至关重要的一些常见的云自动化技术有哪些?每个云架构师在设计、构建和部署云托管应用程序时,应该竭力实现以下五种操作的自动化。
1、扩展
自动扩展对使用云而言最基本、最必不可少。无论我们谈论自动扩展服务器资源,还是内置在Amazon S3和DynamoDB等原生云服务中的弹性扩展,扩展都是云的重要组成部分。构建可扩展的基础设施是人们当初迁移到云的主要原因之一。
但是这种自动化扩展性大部分需要快速轻松地启动新的服务器实例,这引出了下一种自动化。
2、服务器配置
在云出现之前,配置一台新服务器可能需要几天或几周。云自动化可以在短短几分钟内配置好一个功能齐全、可投入使用的服务器实例,所有所需的软件和服务已安装并运行。自动化服务器配置不仅是自动扩展的关键,还是自修复基础设施(另一种云自动化)的关键。终止失效或被攻击的服务器实例,并让自动化可以用新的服务器实例替换它,改变了在云端解决问题的方式。这种能力对于改进许多类问题和错误的MTTR(平均解决时间)非常关键。
无论您在Amazon EC2之类的计算服务中启动新的虚拟机实例,还是在谷歌Kubernetes引擎之类的Kubernetes环境中启动新的容器实例,自动化服务器配置的工作原理都大致一样。无论在哪种情况下,启动、扩展和修复服务器实例(这对大多数基于云的应用程序而言很重要)时,自动化都可以提升速度和可靠性。
自动化服务器配置的另一个好处是提高了可用性。自动化配置意味着少量的大型服务器很容易替换成大量的小型服务器。这种模式大大提高了应用程序的可用性,减小了故障造成的影响。
但只有当操作服务器所需的基础设施其余部分也能够快速轻松地安装和设置时,自动化服务器配置才管用。这引出了下一种自动化。
3、基础设施创建
自动配置服务器本身不足以启动和运行云应用程序、为用户提供服务。您还必须配置负载均衡系统、防火墙、网段、数据库和应用程序依赖的任何其他服务,比如队列和缓存。只有安装和配置了所有支持性基础设施,并连接到应用程序,应用程序才能完全发挥功能。
如果手动完成,所有这些配置很耗费时间。如果部署在本地数据中心,可能需要数天或更长时间来安装所有必要的组件。然而在云端,一种名为基础设施即代码(IaC)的自动化技术允许您对API进行调用,从而配置应用程序基础设施。
IaC允许您指定基础设施如何在源代码(通常是JSON或YAML文件)中创建起来,可以使用传统的软件版本控制系统(比如Git)来管理源代码。然后,将经过编码的基础设施配置传递给一个工具,该工具可以自动提供和配置基础设施组件,并将这些组件连接到工作网络中。
有许多工具可以执行这种级别的云基础设施自动化。两个流行的工具是HashiCorp的Terrform和AWS的CloudFormation。
基础设施即代码为基础设施配置过程提供了独特的好处,包括变更控制和批准、变更跟踪以及基础设施代码重用。基础设施即代码只有在云或类似云的数据中心中成为可能,这种环境中的基础设施API才允许自动创建基础设施。
云架构师应该利用IaC工具为基础设施配置创建可靠、安全且可重复的云模式。这个好处再怎么强调都不为过。
基于代码管理的自动化基础设施设置引出了下一种自动化。
4、代码部署
自动化代码部署管道不是云所独有的。但是考虑到大量使用其他类型的自动化,自动化代码部署是基于云的应用程序的一种自然扩展,它们深受云架构师的依赖。
自动化代码部署最流行的方法之一是CI/CD管道。CI/CD(持续集成/持续交付)是一种模式,允许基于签入软件版本控制系统(比如Git)的代码,让代码可以自动部署到生产级应用程序。自动化部署可能被安排成每天或每小时执行,或者只要对代码库进行更改、可用于部署,就被触发,具体取决于应用程序和公司政策。
有许多工具可用于支持自动化代码部署,这些工具包括Jenkins、Bamboo、GitLab、CircleCI和AWS CodeDeploy。各自的操作方式有所不同,云架构师必须选择正确的自动化策略,以满足开发组织和业务的需求。然而,几乎所有复杂的云架构应用程序都使用某种自动化代码部署。贵公司的云架构应用程序也应该如此。
5、原生云服务
常常被忽视的一种自动化是内置在许多云服务中的自动化动态扩展。云队列服务(比如Amazon Simple Queue Service)、云数据存储(比如Amazon S3)和云数据库(比如Amazon DynamoDB)严重依赖自动化,以管理使用它们的动态应用程序的扩展要求。
云架构师常常更喜欢使用S3之类的数据存储,而不是从计算实例上的本地驱动器存储创建自己的数据存储,因为这简单、安全、可靠、易于集成,而且功能实现自动化。公共云提供的许多其他服务也是如此。如果使用它们,您可以充分利用其底层的强大自动化。
云意味着自动化
自动化是云的主要特点之一,这是云与传统数据中心的区别之一。当然,您可以在不利用自动化的情况下在云端运行应用程序,许多人都这么做,但他们错失了良机,因为自动化是提升一致性、可靠性、安全性、可扩展性以及业务需求响应能力的必经之路。
将本地应用程序按原状平移到云端是一种相对简单、直接的迁移,通常不需要训练有素的云架构师来实施。但是这类应用程序错过了云端运行具有的大部分优势。构建真正基于云的应用程序确实需要云架构师,并可利用云端提供的一切。几乎任何云架构应用程序都会大量使用自动化。
优秀的云架构师将实现、扩展、支持并鼓励在所有基于云的应用程序中使用自动化。简而言之,优秀的云架构师将尽可能实现自动化。他们被云端自动化的功能所打动,喜欢以独特而有趣的方式使用这些自动化。自动化是最成功的应用程序部署的必备要素。
原文链接:https://www.infoworld.com/article/3680568/5-operations-every-cloud-architect-should-automate.html