当前位置:职场发展 > 什么是基础设施即代码和平台即代码?阅读

什么是基础设施即代码和平台即代码?阅读

  • 发布:2023-10-06 17:48

使用基础设施即代码 (IaC) 后就会清楚,您可以编写有关基础设施计算、存储和网络需求的声明性语句,然后执行该语句。这与平台即代码 (PaC) 有什么不同? 任何应用程序的技术栈都分为三层,即基础层,包含裸机实例、虚拟机、网络、防火墙、安全等;平台层包括操作系统、运行环境、开发工具等;当然还有用于应用程序代码和数据的应用程序层。典型的技术运维团队除了部署代码外,还负责基础层和平台层的部署、监控和管理任务。 云计算的兴起首先抽象了基础层。借助基础设施即服务 (IaaS) 模型,IT/运营团队只需访问云即可立即配置云基础设施。 AWS、微软Azure、谷歌GCE、阿里云等都提供广泛的IaaS服务,例如AWS EC2。最重要的是平台即服务 (PaaS) 模型。基础设施提供商在云上提供平台层,包括云操作系统、开发工具、数据库管理等。比如大家熟悉的AWS Beanstalk、Azure CDN、Google App Engine等PaaS服务也很受欢迎。 事实上,运营团队还构建自己的 PaaS 平台,整合与其现有基础设施或自定义工作流程兼容的选定功能子集。如果您使用容器化或微服务范例,这可能会变得乏味且难以操作。 构建基于微服务的应用程序时对规模、一致性、可重复性、可共享性和可审计性的需求迫使运营团队考虑处理基础层和平台层的新方法。正是为了回应这些担忧,基础设施即代码 (IaC) 和平台即代码 (PaC) 的概念应运而生。 基础设施即代码 基础设施即代码通过软件而不是物理硬件配置或其他工具来管理和配置基础设施。使用 IaC,您可以编写有关基础架构的计算、存储和网络要求的声明性规范并执行它们。然后,自动化引擎(AWS Cloud Formation 和 Terraform 等工具)将通过抽象的 IaaS API 捕获声明/代码来为您进行配置。 因此,配置基础设施的速度将显着加快,无论它是交付管道的自然组成部分还是自动扩展以响应特定事件。如果您使用开发、QA、登台、生产等多种环境,则使用相同的代码库启动基础架构可以确保一致性,并通过减少错误配置、停机等风险来节省大量时间和可能出现的麻烦。 变更管理也变得非常重要和简单。您可以编写代码来通过完整的版本控制来更新基础设施。 这对于云上的容器化应用程序具有特殊的影响: 容器化和微服务启动数百个小型应用程序,而不是像以前的开发范例那样启动少数大型实例。在这种规模下,开发过程中将会出现时间滞后,从而严重影响敏捷性。 在多云部署中,数百/数千个应用程序的可重复性对于提供一致的客户体验至关重要。 云计算的支付机制允许其根据需要小心地动态扩展和缩减基础设施,在这种规模下几乎不可能进行手动管理。 使用基础设施即代码,云原生应用程序可以大规模地拥有一致、可靠且版本控制的基础设施。然而,仅 IaC 并不能提供最佳的应用程序生命周期管理体验。该平台仍需要运营团队进行配置和管理。 IaC 是通过使用抽象作为基础层 API 的包装器来实现的,因此开发人员需要为每个抽象提供一个新的 CLI。 为了获得流畅的开发者体验,仅 IaC 是不够的。我们需要平台即代码。 平台即代码 平台即代码(PaC)是平台层的抽象。 PaC允许将有关平台层的声明性指令(包括操作系统以及应用程序开发和操作所需的其他工具)写入代码并执行。 从本质上讲,PaC 允许开发人员定义自己的平台。即为应用程序提供定制的执行环境。对于每个应用程序来说,这可能是不同的环境,有多少个应用程序。如果 Kubernetes 是您选择的平台,您可以为平台元素编写 YAML 声明,就像编写应用程序代码一样。 与 IaC 不同,PaC 通过抽象实现为 Kubernetes API 的扩展,而不是在 k8s API 上编写包装器。因此,PaC 抽象成为一流的实体,允许开发人员使用 kubectl 和 YAML 提供声明性指令。 自动化节省的时间和精力是不言而喻的。然而,PaC on Kubernetes 的真正价值在于,即使开发人员为其 K8s 集群创建自定义平台堆栈,它也是可重复且可控的。这将确保应用程序的开发/生产平等。所有平台元素(例如 YAML 文件、管理清单等)都是可共享的。使用 Kubernetes Operators 还可以实现跨多云环境的一致部署。 平台即代码范式实现了大规模、高效、一致且可重复的企业应用程序交付。通过通用语言进行协作使开发 (Dev) 和运营 (Ops) 更加紧密地结合在一起。最重要的是,它为下一代开发生命周期工具铺平了道路。它提供迭代开发、优化的工作流程、轻量级客户端工具、生产就绪的 CI/CD 管道和以应用程序为中心的部署自动化。

相关文章