草庐IT

每个云架构师应实现自动化的五种操作

布加迪 2023-03-29 原文

译者 | 布加迪

审校 | 孙淑娟

云为一家公司的现代应用程序开发流程带来了许多好处。最重要的好处之一是能够自动执行向来需要手动步骤的关键操作。

自动化可能是使用云的最显著的一个优势。云架构师在切实可行的地方利用自动化,以确保其角色不被边缘化。

对云架构师的工作至关重要的一些常见的云自动化技术有哪些?每个云架构师在设计、构建和部署云托管应用程序时,应该竭力实现以下五种操作的自动化。

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

有关每个云架构师应实现自动化的五种操作的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  3. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  4. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  5. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  6. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  7. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  8. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  9. ruby - Arrays Sets 和 SortedSets 在 Ruby 中是如何实现的 - 2

    通常,数组被实现为内存块,集合被实现为HashMap,有序集合被实现为跳跃列表。在Ruby中也是如此吗?我正在尝试从性能和内存占用方面评估Ruby中不同容器的使用情况 最佳答案 数组是Ruby核心库的一部分。每个Ruby实现都有自己的数组实现。Ruby语言规范只规定了Ruby数组的行为,并没有规定任何特定的实现策略。它甚至没有指定任何会强制或至少建议特定实现策略的性能约束。然而,大多数Rubyist对数组的性能特征有一些期望,这会迫使不符合它们的实现变得默默无闻,因为实际上没有人会使用它:插入、前置或追加以及删除元素的最坏情况步骤复

  10. ruby - 如何使用 Selenium Webdriver 根据 div 的内容执行操作? - 2

    我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption

随机推荐