云上资源自动化部署新模式

简介: 本文是 2021 阿里云开发者大会应用开发的基础设施优化专场《云上资源自动化部署新模式》的文字版。当前云上资源部署模式云上资源传统部署模式的挑战大部分用户一般是通过控制台/API/SDK等传统模式进行云上资源的部署,这种部署模式会面临如下挑战:规模上,随着业务的发展需要管理的资源规模不断上升,部署和管理种类繁多的资源带来挑战效率上,随着规模上升,手动批量部署变得难以为继合规上,如何确保对基础

本文是 2021 阿里云开发者大会应用开发的基础设施优化专场《云上资源自动化部署新模式》的文字版。

当前云上资源部署模式

云上资源传统部署模式的挑战



大部分用户一般是通过控制台/API/SDK等传统模式进行云上资源的部署,这种部署模式会面临如下挑战:

  • 规模上,随着业务的发展需要管理的资源规模不断上升,部署和管理种类繁多的资源带来挑战
  • 效率上,随着规模上升,手动批量部署变得难以为继
  • 合规上,如何确保对基础设施的变更均符合组织管理规范
  • 成本上,手动部署的方式无法极致地利用云上弹性能力,其成本仍有优化空间

阿里云自动化部署模式

资源编排服务(ROS)的核心价值



面对传统部署模式的挑战,我们在想是否能够对云上资源进行自动化部署?因此有了阿里云资源编排服务(ROS),它基于基础设施即代码(IaC)的理念,让开发者和管理员使用模版的方式,编排云上的多种云资源,进行自动化部署。 对比与手动部署,使用ROS进行自动化部署会带来如下好处:

  • 效率提升,针对诸如SAP这样复杂的解决方案能有效提升部署效率,也能够帮助MSP、ISV、onECS服务提升部署效率
  • 架构优化,ROS提供了种类丰富的阿里云最佳实践模板,用户无需丰富的架构经验即可部署解决方案级别的架构
  • 合规管控,由IT管理员统一管理基础设施以避免各类风险,且可基于模板进行审核再进一步结合CI/CD以规范化IT管理流程
  • 节省成本,自动化部署方式可以按需部署和释放资源,从而极致地使用云上弹性能力来节省成本

ROS 的使用流程和核心功能



使用 ROS 进行自动化部署的过程非常简单:

  1. 按照 ROS 模板语法 编写模板,定义想要创建的各类云上资源
  2. 在  ROS 控制台  使用模板创建资源栈,以执行部署。其中,资源栈是一组资源的集合,这些资源均是模板中定义的资源。
  3. 在  ROS 控制台  查看资源栈,可以查看栈中各种资源的创建情况,并可以跳转到对应资源的控制台

ROS 服务本身完全免费,集成了身份认证和安全审计的功能,资源创建结果可视化,且能够进行多账号跨地域的部署,支持检测资源栈和实际资源的差异并进行修正。 除了直接使用 ROS 模板来做自动化部署,是否还有别的方式呢?

新模式一:Terraform 托管

Terraform 是什么



Terraform 同 ROS 一样,也是基于基础设施即代码(IaC)的理念的自动化编排工具。它使用一种特定的配置语言(HCL, Hashicorp Configuration Language)来描述基础设施资源,语法样例如上图所示。

Terraform & ROS



既然 Terraform 和 ROS 都是基于相同的理念的自动化编排工具,那它们的目标也是一致的,都是为用户打造良好的云上部署体验。 两者有很多相同之处,比方说 Terraform 的配置文件相当于ROS的模板,Terraform 的状态相当于 ROS 的资源栈,Terraform 的 CLI 程序则相当于 ROS 的编排引擎。 两者也各有优势,Terraform 的语法更简洁,对多云支持地很完善;而 ROS 则提供免费的服务托管,且有云原生的鉴权和审计能力。 那么是否能够将两者的优势结合呢?因此就有了 Terraform 托管能力。

Terraform 托管



用户直接在本地使用 Terraform 时,需要根据当前的操作系统下载对应的 Terraform CLI,编写模板,管理所使用的各类 Provider 的版本,且要管理状态等文件。 而使用 Terraform 托管功能时,只需在 ROS 的控制台编写 Terraform 模板便可直接部署,后续则通过资源栈来管理模板中定义的资源。底层的各类管理都交给 ROS。



在使用原理上,ROS 控制台会将 Terraform 模板组合成符合 ROS 语法规范的模板,ROS 服务端会其进行语法校验,生成租户信息,调度到 ROS 的 Terraform 服务进行资源的部署。

定时与多云场景实践



我们可以在很多场景中使用 Terraform 托管的功能。

场景一:定时部署资源

假设我们需要通过 Terraform 定时部署资源,传统方式下需要本地创建定时任务,执行 Terraform CLI 来做。而在云上,我们可以:

  • 事先编写一个 Terraform 模板,声明想要部署的云资源
  • 事先编写一个  OOS  运维模板来声明由它调用 ROS 进行资源部署
  • 在 OOS 中设置为定时执行。则 OOS 会定时触发 ROS,ROS 则会使用 Terraform 托管功能进行资源部署

场景二:多云管理

若我们既想对多种云(如阿里云、AWS等)进行部署,又想有可视化的结果反馈,则可以直接编写 Terraform 模板声明各个云上资源,并使用 ROS 的 Terraform 托管功能来进行部署。

Terraofrm 托管总结



新模式二:ROS CDK

现有资源定义方式的不足



通过直接编写 ROS 模板,或者通过可视化编辑器生成模板,然后进行资源部署的方式已然能够大大提升部署效率,但是也有一些不足之处:

  • 缺少对过程式的支持
  • 复杂场景的编写效率较低
  • 对程序的友好性较低
  • 动态性支持较差

针对这些问题,是否可以更进一步,在模板之上解决这些不足呢?

ROS CDK 是什么



ROS CDK 是资源编排(ROS)提供的一种命令行工具和多语言SDK,利用面向对象的高级抽象模式对云资源进行标准定义,从而快速构建云资源。 ROS CDK 以应用作为资源管理的入口,一个应用管理多个资源栈,而每个资源栈中则可以有多个构建。构建可以理解为云上资源的组件,能包含一个或多个资源。 我们可以选择自己熟悉的编程语言(TypeScript/JavaScript/Java/Python/C#)编写应用代码声明想要部署的资源,ROS CDK 会将项目代码转换成 ROS 模板,然后使用该模板进行自动化部署。

使用步骤和项目生命周期



ROS CDK 的使用步骤也很简单:

  • 首先就是初始化项目,配置阿里云的访问凭证(AccessKey)
  • 其次就是编写资源代码和测试用例进行本地测试
  • 最后就是进行资源部署(通过CDK CLI或者直接程序部署),并管理资源栈

在进行部署的阶段,CDK会根据用户编写的资源代码进行构造,实例化出各种资源对象;然后在准备阶段做终态前的调整(通常由框架自动完成);进而验证各种资源属性,确保能够正确部署;最终合成出一个 ROS 模板,并使用该模板部署为资源栈。

代码、模板示例



左图是 ROS CDK的资源代码,其中声明了一个 VPC,并使用循环动态生成3个 VSwitch。而右图则是由 ROS CDK 生成的 ROS 模板。由此可以看出针对动态生成的场景,ROS CDK 可以大大简化模板编写的复杂度。

应用程序集成CDK实现持续部署场景



假设我们实现一个CI/CD系统,能够部署这样的资源架构:使用API网关中提供API,使用函数计算的函数提供业务逻辑。能够分别部署测试、预发、线上环境的资源,并且支持从测试发布到预发,从预发发布到线上。 在直接使用 ROS 模板的方式中,需要分别为三个环境准备三个模板,而环境间的部署则还需要动态拼接模板,对应用程序来说并不友好。 基于 ROS CDK,应用程序可以根据环境的不同指定对应的变量,生产对应的资源,从而满足环境的动态性部署。

ROS CDK 总结



总结









相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
目录
相关文章
|
5月前
|
传感器 人工智能 监控
通义灵码智能体模式在企业级开发中的应用:以云效DevOps自动化流程为例
通义灵码智能体模式具备语义理解、任务闭环与环境感知能力,结合云效DevOps实现CI/CD异常修复、测试覆盖与配置合规检查,大幅提升研发效率与质量。
251 0
|
10月前
|
弹性计算 运维 安全
云上DevOps自动化的最佳实践
本文介绍了云上DevOps自动化最佳实践,重点探讨了企业在上云过程中面临的成本管理、运维效率和弹性等问题。通过阿里云的产品和服务,企业可以实现自动化的资源管理、成本优化和高效运维。文章详细阐述了如何利用标签进行成本分析、选择合适的付费类型和实例规格、以及通过弹性伸缩降低成本。此外,还介绍了新功能发布,如统一的实例运维通道界面、AI辅助的运维工具等,帮助企业提升云上业务的管理和运营效率。
|
4月前
|
测试技术 API C++
Playwright 自动化测试系列(7)| 第三阶段:测试框架集成​​Page Object 模式
本课程详解Playwright测试框架中的Page Object模式,通过电商登录-下单实战演示PO架构设计与高级技巧,结合Pytest实现多用户测试。重点解析PO模式提升代码复用性、降低维护成本的核心价值,并提供常见问题解决方案,助力构建高可维护性的自动化测试体系。
|
6月前
|
JavaScript 搜索推荐 前端开发
通义灵码2.5智能体模式联合MCP:打造自动化菜品推荐平台,实现从需求到部署的全流程创新
本项目利用通义灵码2.5的智能体模式与MCP服务,构建在线点餐推荐网站。基于Qwen3模型,实现从需求到代码生成的全流程自动化,集成“今天吃什么”和EdgeOne MCP服务,提供个性化推荐、偏好管理等功能。技术架构采用React/Vue.js前端与Node.js后端,结合MCP工具链简化开发。项目涵盖功能测试、部署及未来扩展方向,如餐厅推荐、语音交互等,展示高效开发与灵活扩展能力。
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
485 3
|
运维 监控
如何使用OOS有效进行云上自动化运维
OOS(运维编排服务)是一种云上自动化运维工具,可以帮助你有效进行云资源的管理和维护。以下是如何使用OOS有效进行云上自动化运维的一些建议: 1. **利用自动化能力**:OOS提供了批量操作、
|
弹性计算 运维 安全
CloudOps云上自动化运维能力(2)
介绍安全和合规能力Security,成本和资源量化管理能力Cost。
290 0
|
弹性计算 运维 安全
如何使用OOS有效进行云上自动化运维
阿里云弹性计算团队十三位产品专家和技术专家共同分享云上运维深度实践,详细阐述如何利用CloudOps工具实现运维提效、弹性降本。
134710 220
|
运维 Linux Apache
【一键变身超人!】Puppet 自动化运维神器 —— 让你的服务器听话如婴儿,轻松管理资源不是梦!
【8月更文挑战第9天】随着云计算与容器化技术的发展,自动化运维已成为现代IT基础设施的核心部分。Puppet是一款强大的自动化工具,用于配置管理,确保系统保持预期状态。通过易于理解的配置文件定义资源及其依赖关系,Puppet实现了“基础设施即代码”的理念。本文简要介绍了Puppet的安装配置方法及示例,包括Puppet Agent与Master的安装、基本配置步骤和一个简单的Apache HTTP Server管理示例,展示了Puppet在实际应用中的强大功能与灵活性。
235 9
|
数据采集 Web App开发 JavaScript
Puppeteer实战指南:自动化抓取网页中的图片资源
Puppeteer实战指南:自动化抓取网页中的图片资源
下一篇
oss云网关配置