加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 云计算 > 正文

一文解决基础设施即代码

发布时间:2022-08-04 14:45:20 所属栏目:云计算 来源:互联网
导读:基础设施即代码(Infrastructure-as-Code,IaC)意味着使用代码来定义和管理基础设施,而不是使用手动流程。更重要的是,IaC是将软件工程原则和方法引入云基础设施。本文将探讨IaC的基础知识以及如何设置相关环境。 IaC简介 在IaC之前,基础设施是(某些情况
  基础设施即代码(Infrastructure-as-Code,IaC)意味着使用代码来定义和管理基础设施,而不是使用手动流程。更重要的是,IaC是将软件工程原则和方法引入云基础设施。本文将探讨IaC的基础知识以及如何设置相关环境。
 
  IaC简介
  在IaC之前,基础设施是(某些情况下现在仍然是)通过简单操作用户界面、批处理脚本和配置管理工具等方法提供的,这些方法并不适用于当今的云计算。
 
  IaC为什么非常重要?
 
  IaC之所以重要,主要有三个原因:
 
  一是当下企业向云的全面迁移。越来越多的工作负载正在从本地数据中心迁移到云端,并且这种趋势会一直持续下去。然而,云计算本身并不是能够保证和维持基础设施可靠而又可扩展的灵丹妙药。与物理数据中心一样,云基础设施的脚本集也可能存在不一致、文档记录不充分等情况。由于IaC是强制执行经过验证的工程实施步骤,从而能够将混乱的状况整理得秩序井然。
 
  二是公众使用云的方式更加复杂。商业用户尝试改变设施、模式和工作方式,以改善收益。IaC不只是简单的资本支出与运营支出,而是关乎如何整合构成工程生命周期的所有因素,例如版本控制和测试,以释放云可以提供的所有价值。它能够使用工程实践来充分挖掘云计算的潜力,从而更好更快地推动创新进而推动公司业务。
 
  三是管理云上基础设施的负荷不断在增加。可用的云服务种类每年都在增长,越来越多的公司正在采用现代云设施(比如容器或无服务器设施)。这些设施往往包含许多松散耦合和相互依赖的组件,从而导致工程师必须管理的云资源数量以惊人的速度增长。这当然是一件好事,因为这意味着商业用户正在从云上获得更多收益,推动了公司业务发展,但结果是云资源的复杂性和规模不断增加。  
 
  随着云资源规模和复杂性的增加,现代的IaC方法就是亟需的了。它可以帮助工程师构建、部署和管理基础设施。如果工程师管理的资源介于1到10个之间,那么简单的点击就可能能正常工作;当管理10到100个资源时,“基础设施即文本”或旧版IaC工具可能仍然能胜任。
 
  但是一旦资源数目到了成百上千或成千上万时会发生什么?这在今天并不罕见!最重要的是,这成千上万的资源不是每月更新一次,而是每天更新多次。管理好这一切的最佳途径是将用于应用程序代码的相同软件工程实施方案和工具落实到位。
 
  思考下列问题:
 
  (1)如何确保我的基础设施能够快速扩展、更改和发展,以支持业务并创造竞争优势?
 
  (2)如何保持云基础设施以及对其任何更改的可见性?
 
  (3)如何制定策略和数据护栏来确保安全性和可靠性?
 
  (4)如何通过更好的协作和流程,最科学地授权我的团队构建、部署和管理基础设施?
 
  要解决以上问题需要一种现代的IaC方法。现代的IaC方法是充分挖掘云计算潜力的方式。
 
  使用IaC的重要注意事项
  IaC平台的选择至关重要。如果使用者意欲使用已有的标准软件工程工具和操作,那么在选择时就要注重以下特点:
 
  1.标准语言
  对标准语言的良好支持,意味着开发人员可以方便地使用相同的应用程序代码语言来定义和配置基础设施,例如TypeScript、Go、Python和C#等常用语言。很多旧版的IaC工具使用自己的域特定语言 (DSL),这可能会导致一些问题,比如开发人员经常发现缺少常见的编程设施。
 
  2.标准开发工具
  使用标准编程语言意味着开发人员还可以使用标准开发工具,例如IDE。一个优点依然是熟悉程度,开发人员可以在他们习惯的环境中工作;另一个则是开发人员得以在一个能轻松编写、调试、测试和部署代码的环境中大显身手。
 
  3.测试框架
  与应用程序一样,对基础设施进行彻底的测试非常重要。合格的IaC 平台应当支持标准测试框架,还应该能够帮助团队扩展其执行的测试类型。
 
  标准运维测试侧重于验收测试。这意味着运维团队在云中启动基础设施,然后测试它们以查看是否完整无误。毫无疑问,如果它没有正确启动,运维团队需要将其销毁并重新部署。但这并不是一个最佳方法,因为可能不应该发生的事情已经发生了,这取决于团队的反应速度。合格的IaC平台应当通过部署前和部署期间的频繁测试来帮助团队“转移风险”。如果上述步骤还没有执行,那么团队应能使用IaC平台执行以下类型的测试:
 
  (1)单元测试
 
  单元测试单独评估基础设施的行为。外部依赖项(例如数据库)被替换为模拟,以检查资源配置和响应。之所以使用模拟是因为来自云服务供应商的响应是众所周知的并经过测试的。测试者已经知道给定一些参数后供应商将如何响应。
 
  单元测试在内存中运行,没有任何进程外调用,这使得它们非常快。在开发过程中可以使用它们进行快速反馈循环。单元测试确实可以帮助开发人员在基础设施生命周期的早期解决问题。
 
  (2)集成测试
 
  集成测试(也称为黑盒测试)单元测试之后进行,它采用不同的方法。集成测试部署云资源并验证它们的实际行为——当然是在一个临时环境中。临时环境是模拟生产环境的短期环境。它通常很简单,且只包括正在测试的代码的第一级依赖项。集成测试完成后,可以销毁临时基础设施。
 
  (3)安全测试
 
  很多时候,安全测试被留到最后一刻,或者当做是“完成”的代码扔给安全团队,他们被排除在整个开发过程之外实际上,这种思路可以说是“自寻死路”。
 
  此外,与其他类型的测试一样,IaC平台应该帮助开发人员将自己编写的安全测试添加到工作流程中。正如尽早对代码实施单元测试一样,你也应该尽早测试以发现安全问题。这些测试属于 CI/CD 管道,因此基础设施在发布之前会进行彻底的漏洞测试。

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读