您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

基础架构即代码初学者指南

时间:2023-02-19 16:11:13  来源:51CTO  作者:科技狠活与软件技术
在本文中,深入了解基础架构即代码 (IaC) 的工作原理、其优势和常见挑战。

基础架构即代码 (IaC) 是使用代码和软件开发技术配置和管理基础架构的实践。IaC 背后的主要思想是消除每次部署时对服务器、负载均衡器或数据库等资源的手动基础设施配置和配置的需要。由于基础架构现在是整个软件开发过程中不可或缺的一部分,并且与应用程序交付的耦合度越来越高,因此让交付基础架构更改变得更加容易非常重要。

使用代码定义和管理基础架构及其配置使您能够采用版本控制、测试和自动部署等技术。这使得更容易防止各种应用程序问题,从性能瓶颈到功能故障。

本文将解释 IaC 的工作原理,重点介绍这两种方法,以及在 DevOps 环境中以代码形式交付基础设施的优势和挑战。

IaC 是如何工作的?

从历史上看,基础架构管理主要是由专门的系统管理员完成的手动过程。您需要手动创建虚拟机 (VM)、管理其软件更新并配置其设置。这变得非常昂贵和耗时,尤其是随着现代软件开发的快速发展。

IaC 演变为可扩展基础架构管理的解决方案。它允许您对基础架构进行编码,然后能够创建标准化、可重用和可共享的配置。IaC 还允许您以代码文件的形式定义基础设施配置。例如,图 1 演示了如何使用 CloudFormation在 AWS 中定义 S3 存储桶的创建。

 
Resources: S3Bucket: Type: 'AWS::S3::BUCKET' DeletionPolicy: RetAIn Properties:BucketName: DOC-EXAMPLE-BUCKET

当您将基础架构定义为代码时,您可以实施与应用程序开发代码相同的做法,例如版本控制、代码审查和自动化测试。

图 1:IaC 工作流程

要实施 IaC,您可以使用各种工具和技术,例如:

  • 配置管理工具,确保基础架构处于您之前定义的所需状态,例如 Ansible、Chef 或 Puppet。
  • 供应工具(例如,CloudFormation 模板)允许您以 JSON 或 YAML 文件的形式定义云资源,并在云平台上供应该基础设施。
  • 容器化工具(例如 Docker、Kube.NETes)用于将应用程序及其依赖项打包到可以在任何基础设施上运行的容器中。

IaC 的方法

有两种不同的基础架构即代码方法:命令式(过程式)IaC 和声明式(功能性)IaC。

使用命令式方法,开发人员指定 IaC 创建配置所需遵循的确切步骤。用户完全命令自动化,这使得这种方法对于需要完全控制的更具体的用例很方便。

命令式方法的主要优点是它允许您自动执行基础架构配置的几乎每个细节。这也意味着您需要更高水平的专业知识来实现这种类型的自动化,因为它主要是通过直接在系统上执行脚本来完成的。

以下是使用 AWS CLI 创建 S3 存储桶的命令式方法示例:

 
aws s3api create-bucket --bucket my-new-bucket --region eu-central-1

my-new-bucket当您运行此命令时,AWS CLI 将使用该区域中的名称创建一个新的 Amazon S3 存储桶eucentral-1。

使用声明性方法,开发人员指定所需的结果,而无需提供实现该状态所需的确切步骤。用户通过 JSON 或 YAML 等声明性语言描述他们希望基础架构如何查看。此方法有助于标准化、变更管理和云交付。可以更快地发布功能,并显着降低人为错误的风险。

以下是使用 AWS CloudFormation 的声明性基础设施即代码的简单示例:

 
{“Resources”: {“EC2Instance”: {“Type”: “AWS::EC2::Instance”,“Properties”: {“InstanceType”: “t2.micro”,“ImageId”: “ami-0c94855bac71e”,“KeyName”: “my-key” } }}}

该脚本告诉 CloudFormation 创建一个类型为 EC2 的实例t2.micro,CloudFormation 将处理所有必需的步骤以使用您定义的特定属性实现该状态。

图 2:IaC 方法概述

IaC 的好处和挑战

基础架构即代码是 DevOps 中的关键实践之一,提供了许多节省时间和金钱以及降低风险的好处。但与您在组织中采用的任何工具、解决方案或实践一样,重要的是要权衡实施 IaC 方法时可能面临的挑战。

表 1:IaC 优势与挑战——需要考虑的因素

结论

借助 IaC,系统可以轻松复制和重用;过程是一致的。随着 DevOps 文化变得越来越普遍,通过 IaC 保持战略优势可能会成为一个越来越重要的目标。如果您所在的组织旨在在其现有流程中实施基础架构即代码,那么了解您的团队可能遇到的好处和挑战会很有帮助。诀窍是在了解您的业务基础设施需求和认识到 IaC 提供的改进潜力之间找到一个很好的界限。

为确保正确实施 IaC,从小事做起很重要。您希望逐渐增加任务的复杂性,避免使代码库过于复杂,持续监控 IaC 实施以确定需要改进和优化的领域,并继续自学 IaC 中的不同工具、框架和最佳实践。

查看这些额外资源以继续了解 IaC:

  • 开始使用 IaC , DZone Refcard
  • IaC 安全:核心 DevOps 实践以保护您的基础架构即代码,DZone Refcard
  • “基础架构即代码:保护应用程序的 6 个最佳实践”,作者 Jim Armstrong
  • Marija Naumovska 的“基础设施即代码的 5 个最佳实践”
  • “最佳基础设施即代码工具 (IaC):2023 年的前 11 名”,作者:Florian Pialoux


Tags:架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
美团外卖宣布新一轮组织架构调整:提拔多位年轻管理者,年轻化、扁平化成主基调
新浪科技讯 4月11日上午消息,继2月下旬、3月下旬两轮人员调整后,美团到店到家的组织架构调整仍在继续。近日,美团外卖以内部邮件的方式宣布了新一轮的组织调整:外卖事业部下成立...【详细内容】
2024-04-11  Search: 架构  点击:(4)  评论:(0)  加入收藏
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  Search: 架构  点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27  Search: 架构  点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  Search: 架构  点击:(10)  评论:(0)  加入收藏
京东小程序数据中心架构设计与最佳实践
一、京东小程序是什么京东小程序平台能够提供开放、安全的产品,成为品牌开发者链接京东内部核心产品的桥梁,致力于服务每一个信任我们的外部开发者,为不同开发能力的品牌商家提...【详细内容】
2024-03-27  Search: 架构  点击:(10)  评论:(0)  加入收藏
从 MySQL 到 ByteHouse,抖音精准推荐存储架构重构解读
ByteHouse是一款OLAP引擎,具备查询效率高的特点,在硬件需求上相对较低,且具有良好的水平扩展性,如果数据量进一步增长,可以通过增加服务器数量来提升处理能力。本文将从兴趣圈层...【详细内容】
2024-03-22  Search: 架构  点击:(24)  评论:(0)  加入收藏
全程回顾黄仁勋GTC演讲:Blackwell架构B200芯片登场
北京时间3月19日4时-6时,英伟达创始人黄仁勋在美国加州圣何塞SAP中心登台,发表GTC 2024的主题演讲《见证AI的变革时刻》。鉴于过去一年多时间里AI带来的生产力变革,以及英伟达...【详细内容】
2024-03-19  Search: 架构  点击:(17)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13  Search: 架构  点击:(6)  评论:(0)  加入收藏
有了LLM,所有程序员都将转变为架构师?
编译 | 言征 出品 | 51CTO技术栈(微信号:blog51cto)生成式人工智能是否会取代人类程序员?可能不会。但使用生成式人工智能的人类可能会,可惜的是,现在还不是时候。目前,我们正在见...【详细内容】
2024-03-07  Search: 架构  点击:(19)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  Search: 架构  点击:(36)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(12)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(6)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(17)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(115)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(117)  评论:(0)  加入收藏
站内最新
站内热门
站内头条