• App Deploy as Code! SAE & Terraform 实现 IaC 式部署应用


    作者:宋阳(流鑫)

    企业上云是近些年的发展热潮,越来越多的企业把自己的应用部署在各个云厂商中,利用云计算带来的弹性、灵活、安全、低成本等特性,轻松帮助企业搭建自己的应用。

    随着企业规模和业务形态的发展,一个应用需要组合多种云资源才能对外提供服务,为了便于研发人员开发调试,每种应用都需要部署到多套环境,单纯通过人工手动管理云资源的方式会使得基础设施管理人员的负担不断加重。

    因此越来越多的企业选择使用代码(而非手动流程)来定义基础设施,即 IaC(Infrastructure as Code),像对待应用软件一样对待基础设施,这样不仅能够免去繁杂的人工操作还可以利用代码配置原生带来的版本化和抽象化等能力。

    在云计算的时代下,应用的部署往往会依赖多个基础设施(计算、存储、网络)。企业内部往往需要一个 PaaS 平台来交付自己的应用,但是 PaaS 平台的开发和维护需要企业有较大的技术和人力投入。对于快速发展的企业更希望能够把精力专注于企业的核心业务。

    阿里云 Serverless 应用引擎 SAE(Serverless App Engine)是一个面向应用的 Serverless PaaS 平台,天然支持通过 IaC 的方式来创建和管理,而 Terraform 作为 IaC 领域的事实标准,已成为了企业 IaC 管理的首选工具,将 Terraform 和 SAE 组合会发生一些奇妙的化学反应,企业可以以一种 ADaC(Application Deploy as Code)的方式,通过简单的代码配置文件管理企业的应用。

    下面,我们简单的介绍 IaC 和 SAE 给企业带来的巨大便利,并通过一个使用 Terraform 创建 SAE 应用的例子感受 SAE & Terraform 给传统企业 IT 设施管理带来的降维打击。

    基础设施即代码

    企业基础设施管理发展历程

    应用能够正常对外服务需要依赖计算、存储、网络等基础资源。他们是应用正常运行的基础上下文。这些资源也称为环境基础设施。在传统的管理模式下,大多数公司都会有专门的运维团队来管理自己的正式生产和测试环境。随着业务的升级和公司规模的增长,运维团队在基础资源管理上会经历大概 3 个阶段:

    • 手工运维:在企业发展初期,企业的业务种类和规模都处于起步阶段,而且基础环境属于变更频率相对很低的资源,运维团队往往通过人工管理就可以搭建起服务所需的基础资源,使用云服务的企业在云厂商的控制台通过鼠标操作就可以完成云资源的创建。这一阶段研发人员基础设施需求很低,运维人员通过手工运维就能满足。

    • 运维操作脚本化:伴随企业规模和业务的发展,运维团队会接收到越来越多的环境创建请求,大部分运维团队的成员为了提升环境创建效率会自发的编写规范化的文档和脚本,或者通过 CLI 来辅助资源的创建,但是因为一个服务往往需要多种基础设施资源配合才能正常对外提供服务,脚本还无法简单的处理不同基础设施之间的依赖关系,这一段运维人员创建环境会逐步变成一个繁琐且低效的工作。

    • 基础设施即代码:手工运维和文档脚本化已经极大的影响开发效率。企业会逐步把基础设施抽象成代码,用管理代码的方式配置基础设施,对环境基础设施可以像对待代码一样进行版本控制和回滚,而且多个环境之间可以复用相同的代码模块,实现环境基础设施的快速交付。

    Terraform 应运而生

    2014 年,HashiCorp 公司推出了产品 Terraform,它是一个可以安全、高效地建立,变更以及版本化管理基础设施的工具,时至今日 Terraform 绝对是 IaC 领域的王者。使用 Terraform 管理企业基础设施可以给企业带来多种好处:

    • 使用声明式的 IaC 管理基础设施:声明式的描述能够保证即使代码执行多次也能达到一致的状态,使用代码来描述基础资源,能够更加形象直接的展示出不同环境之间的差异。不论什么环境出现问题,都能快速的复刻出一个新的环境。

    • 丰富的 modules 生态:几乎包含所有云厂商的云资源,使用者可以在官方维护的模块仓库 Terraform Registry

  • 相关阅读:
    企业之间-保密协议
    【HTML学生作业网页】基于HTML+CSS+JavaScript仿南京师范大学泰州学院(11页)
    Rust 实战丨绘制曼德博集
    基于Android平台的好友交流App的设计与实现
    ubuntu下qt无法加载mysql驱动
    nginx反向代理及负载均衡
    人生苦短,我用Python 七:如何在flask文档在return后,继续执行文档函数?
    从零开始学习 Java:简单易懂的入门指南之Stream流(二十七)
    光环云入选“北京市算力互联互通试点参与企业”!
    基于UDP协议的接收和发送
  • 原文地址:https://blog.csdn.net/weixin_39860915/article/details/126485646