备案 控制台
开发者社区 开发与运维 文章 正文

云计算基础设施持续集成实践

简介: 在首届阿里巴巴研发效能嘉年华上,来自阿里的企业服务研发工程师朱波(问樵)带来了题为《云计算基础设施持续集成实践》的分享。在分享中,他详细介绍了如何利用资源编排工具像软件项目开发一样来管理基础设施。

【演讲PDF】: https://yq.aliyun.com/attachment/download/?id=1837

【演讲视频】: https://yq.aliyun.com/edu/lesson/551
研发和传统基础设施交互方式

通常情况下,在开发过程中需要和基础设施打交道,需要在项目中申请开发、测试以及预发生产环境。在IDC时代,我们需要向IT部门申请这些资源,其批准后,我们才能获得这些资源。如果这些资源恰巧不足,我们只能等待购买新的资源或者更换其他资源。

2df124787f3652d105338b8d36904ea4efbbd4ac

当拿到这些资源之后,需要对开发、测试、预发、生产环境进行四次相同的配置;当应用架构做了调整之后,需要对相应的四个环境进行变更以保证一致性。这个过程对于IT和研发人员来讲是比较痛苦的过程;而且,由于应用是一个不断迭代的过程,因此这种痛苦也是比较持续的过程。

DevOps

那究竟有没有一种方式能够让我们快速获取基础设施?能够方便管理基础设施?能够优雅变更基础设置?能够持续集成基础设施呢?

答案是DevOps。DevOps的出现为解决上述问题带来了曙光。

f10a1922b6167dab86b619ac7932e1110f542161

DevOps整合了以前割裂的研发和运维,它要求研发做到开发敏捷化、精益化、流程自动化,并且能够持续集成、持续交付,对于较大的项目要求其能够切割成几个快速交付的小项目。

但是,DevOps只是提供了指导思想,而不是具体的解决方案。那具体应该怎么做呢?答案是云计算。云计算给我们带来了前所未有的便捷性。目前,阿里云提供了七十多种云产品,用户可以根据自己的需求来获取这些资源,随时购买、随时释放。

2ee7103b57530d3a7e298ccdcf910dc0a9fe9730

阿里云提供了两种方式便于用户去获取它们:一是通过WebUI获取配置资源;二是集成各产品openAPI的方式获取配置资源。前者是一种手动的方式,当需要的产品较多时,该方式不可行;而后一种方式要求运维人员具有一定的开发经验才能配置,还需要知道每一个openAPI的细节,增加了项目开发量,并且,当需要集成的产品较多时,所需的openAPI也就随之增加,进而导致代码越发臃肿,对这些代码的运维和持续集成都是不小的挑战;另外,通过openAPI方式获取的配置资源是混合在一起的,没有区分开发、测试环境,有可能会导致一些误操作。


那么有没有一种更好的集成方式呢?

4dc1a3ba55a0cf12f29294842ecd01d76938d98a

答案是肯定的。阿里云提供了资源编排服务,该服务能够让我们把基础设施架构完全模板化,(模板是JSON格式的文本文件,在该文本文件中,可以通过声明的方式定义资源需求、说明资源依赖关系和配置细节);之后将模板提交到编排引擎,编排引擎会根据模板中提供的信息创建资源栈,我们可以通过资源栈这一视角,管理资源,可以做到权限控制、资源升级,以及根据应用的需求进行扩容和缩容的操作。

相较于之前提到的openAPI集成的方式,资源编排这种方式不要求运维人员具有开发经验,它采用声明的方式定义资源以及资源之间的关系,易于编写;由于模板是文本文件,因此可以通过代码的方式对模板进行版本控制;此外,资源编排帮助大家屏蔽了集成openAPI所要考虑的细节问题,可以做到通过模板自动化构建一组资源,无需人工值守,是0部署的过程;最后,由于资源编排所创建的资源全部归属一个资源栈,因此可以根据资源栈进行软件生命周期的管理、监控、报警。

基础设施即代码

94400633cbbed7373f61d72276b89f3b8dcf8eb5

当基础设施可以通过文本文件表述时,那就可以利用研发的经验对基础设施进行开发。将基础设施架构转化为模板的过程就相当于研发中Coding的过程:提交模板之后,再让其他同事Review该模板,然后再将模板提交到SVN、GIT库中进行版本控制。这样一来,相较于以前手动进行资源变更,资源编排实现了将一切纳入版本控制之下,像测试你的程序一样测试模板。

资源编排能在哪些场景下提高研发效率呢?下面来看几个具体的场景。

场景1:快速构建基础设施

355eb44b5139e846987c259d4436a6a00b32feed

在研发过程中通常需要构建开发、测试、生产以及预发环境。这四个环境的基本架构相同,只是各个环境中的网络配置存在差异,因此我们可以将这四个环境转化为一个模板。在模板中,根据不同的生产环境配置不同的网络参数,也就是通过一个模板生成四种不同的环境。例如,要生产开发环境时,在提交模板到编排引擎的同时指定需要生成的是开发环境,编排引擎则会根据模板中的信息生成开发环境,当需要生成生产环境时,只需修改对应的参数即可。总结来说,就是可以通过基础设施模板随时随地地生成各类环境,进而提升研发效能。

场景2:方便管理基础设施

8271e100b7534cebcf38423d183f0fae4325b79e

如上图所示生产环境资源栈、预发环境资源栈、测试环境资源栈、开发环境资源栈架构类似,都是高可用、高安全的环境。尽管这四个环境的用处不同,但其基础架构却保持高度一致。

那么如何保障这四个环境的一致性以及它们的运维管理呢?

如果采用手动的方式配置环境一致性,容易导致环境之间的不一致,进而在测试时出现一些问题,浪费研发人员的精力。通过资源编排可以保证这些环境的一致性,也就是通过相同的模板生成开发、测试、生产、预发环境,进而保证环境的一致性,而且这些环境所生产的资源存放在各自独立的资源栈中,可以通过资源栈进行相应的运维管理、版本控制。

场景3:优雅变更基础设施——灰度发布

c715e87bc191e408763958832d1b6eade0e16d32

产品的灰度发布可以通过资源编排实现,其过程包括:申请相应的虚拟机资源,然后再将新版本的应用部署到虚拟机上,再将虚拟机添加到原来的生产环境中,再配置相应的流量规则到新的虚拟机,进而实现灰度发布。

首先写一个模板,在该模板中声明所需的虚拟机资源;然后再给该虚拟机指定网络;然后再在该模板中配置基于负载均衡的流量规则,把相应的流量导入虚拟机中,再将该模板提交到编排引擎中进行编排,当资源栈创建完成后,灰度发布也随之完成。通过资源编排进行灰度发布有以下几点优势:

·灰度过程不影响正在运行的应用

·新版应用挂入已有的SLB,并自动配置流量,应用发布不停机

·发布失败自动回滚

·验证结束后可整个删除灰度部署

场景4:优雅变更基础设施——蓝绿发布

74c4527dd53a1137394702e7404e8a926e48b1fd

场景4和场景3类似,它是一个蓝绿发布。蓝绿发布意味着用新版的应用彻底替换老版本应用,这一过程也可以通过资源编排实现。通过修改原有的模板,再提交到编排引擎;编排引擎根据新的模板更新或者创建新的资源栈;在更新或创建资源栈时,将负载均衡的流量切换后新的资源栈上,非常优雅地实现蓝绿发布的过程。通过资源编排进行蓝绿发布可以实现更新过程不影响正在运行的应用;通过SLB自动切换网络流量,应用不停机升级;升级失败自动回滚;并且,同一个资源栈可以多次升级迭代。

场景5:云基础设施架构持续集成

a831e1b976176b4842fd15f04b95ec358635e3fa

当基础设施可以用文本文件来表述时,则可以利用研发的经验对基础设施进行运维管理。首先可以同需求管理工具对基础设施的需求进行管理;其次再根据需求进行相应的模板开发;再将模板提交到代码仓库中,让同事帮忙Review模板后再通过Jekins之类的持续集成工具进行模板提交的验证工作,然后新模板会被传送到资源编排服务,资源编排服务会新模板创建资源栈进行验证,进一步验证根据新模板创建的环境是否符合预期。

实现了根据需求来修改模板、丰富模板,最终彻底满足需求。后期,如果再需要创建此类环境,只需从代码仓库中下载相应的模板,再提交到编排引擎创建环境即可,也就是基础环境运维彻底变成了项目开发的过程,进而大大提升了研发的效率。

资源编排工作流程

874b7c2b9f0429fd92401fa270e5587b72cff429

通过上述场景,可知资源编排在基础设施的构建、管理、变更、集成方面对研发效能有着很好的提升。下面来具体看下资源编排的工作流程。

资源编排的工作流程可分为四个阶段:架构设计、模板开发、创建资源栈、资源栈维护。架构设计阶段是根据需求来设计基础设施的架构;模板开发阶段是将设计的基础设施架构转化为对应的模板;再将该模板提交到编排引擎,编排引擎会根据这一模板创建资源栈;基于资源栈,运维人员可以进行相应的维护操作;在维护过程中发现的问题再反馈到架构设计阶段,更新需求,从而实现完整的闭环。

模板结构

ab3df09a44673b5288f5f84b8f7f6a0436672285

模板是资源编排的基础,其具体结构如上图所示。模板是一个包含JSON字符串的文本文件,这个JSON字符串由以下部分组成:(1)资源编排的版本;(2)用于对模板/架构描述的Description字段;(3)参数可用于在资源栈创建时覆盖模板中的某些值,用来提高模板的灵活性和可复用性;(4)Resources字段是用来定义架构所依赖的云计算资源,配置应用环境和部署细节;(5)Outputs字段用于资源栈创建完成后,返回必要的架构部署信息,如ECS的IP地址、SLB的访问地址等。

下面来重点看一下资源是如何模板中声明的。

ed34e6ddc7cdac8f6ac39bc69eb43a185d14b387

资源的声明主要是在Resources字段完成的,如上图代码所示。在该字段中,声明了WebServer资源,其类型是ALIYUN::ECS::InstanceGroup,每一个资源的类型是唯一确定的,用于告知编排引擎在创建时所需的资源;Properties字段用于确定Type所标识资源的具体属性。

管理资源依赖关系

资源声明后的操作是定义资源之间的配置细节和依赖管理。

450423e687f30aed5c8d89839f44082d2ce3bd25

资源编排模板提供了两种方式用于管理资源的配置细节和依赖关系:第一种是隐含式,资源编排提供了很多函数,通过函数隐式地指定资源之间的关系。如第一个红框内容所示,ECS资源组的SecurityGroupID是由Ref函数指定的;第二种方式是由DependsOn关键字显式指定资源之间的依赖关系,在该例中,WebServer资源依赖了MySQL_Server资源。

使用参数提高模板灵活性和复用性

在上文所提到的模板中,WebServer资源的属性完全呈现写死的状态,也就是通过这些模板所创建的资源都具有相同的规格,这种情况是无法满足我们正常的需求。我们需要根据场景的不同,创建不同规格网络配置、操作系统的资源栈。

255f09aaef5d65f7d1ef8d6fe48787582b3ad7a5

编排模板中可以通过在Parameter字段定义一个变量,然后在Resources中引用该变量,当将模板提交到编排引擎时,通过动态地指定该变量的值,创建不同规格的资源。如上图Paeameters参数中定义的ImageId变量,通过指定不同的ImageId,大大提高了模板的灵活性和复用性。

编排服务优势

除了上述的优点以外,资源编排还具有如下优势:

(1)它提供了多种执行方式,一是通过WEB UI的方式使用资源编排服务;二是用户可以使用OpenAPI的方式将资源编排集成到应用中;

(2)由于资源编排是创建一组资源,有可能在编排的过程中某个资源创建失败。目前我们提供了两种回滚策略:ALL-or-Nothing和Best-Effort。前者是要么成功要么失败,后者是保存创建成功的资源;

(3)资源编排的模板支持一次编写,任意多次重复部署;

(4)支持以资源栈为单位的更新和删除;

(5)支持用户在模板中定义Shell脚本配置应用。

总结

资源编排服务实现了基础设施即代码的理念,可以像项目开发一样对基础设施进行版本控制、自动部署,以及通过测试驱动基础设施的开发;通过使用资源编排服务,用户不仅可以快读构建基础设施、以栈的方式管理多套资源、通过模板保证一致性,还可以优雅地变更基础设施,如灰度发布和蓝绿发布;此外,还利用开发的经验进行基础设施的持续集成。

场景研读
目录
相关文章
龙蜥社区(OpenAnolis)
|
1月前
|
供应链 安全 Linux
简单、透明、安全、高度集成!龙蜥可信 SBOM 能力探索与实践
从攻击面管理的角度解决软件供应链SBOM复杂体系的安全可信问题。
龙蜥社区(OpenAnolis)
32 0
雪碧有白泡泡
|
2月前
|
安全 Java 数据库
后端进阶之路——万字总结Spring Security与数据库集成实践(五)
后端进阶之路——万字总结Spring Security与数据库集成实践(五)
雪碧有白泡泡
66 0
mrq4nk6ni2neg
|
3月前
|
安全 jenkins 测试技术
自动化测试与持续集成/持续交付(CI/CD)的实践与应用
自动化测试是现代软件开发不可或缺的环节,它可以有效地提高测试效率、降低测试成本。而持续集成/持续交付(CI/CD)则是一种基于自动化的软件开发流程,能够将代码的开发、构建、测试和部署等过程无缝连接起来,从而实现快速迭代和部署。本文将结合实际案例,介绍自动化测试和CI/CD的实践与应用。
mrq4nk6ni2neg
150 2
yuanzhengme
|
4月前
|
Java 数据安全/隐私保护
Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
yuanzhengme
76 1
尘尘尘尘
|
1月前
|
存储 大数据 数据挖掘
云计算与大数据:从基础设施到实际应用
云计算与大数据:从基础设施到实际应用
尘尘尘尘
129 0
请看我回答~
|
2天前
|
敏捷开发 缓存 Devops
构建高效持续集成系统的策略与实践
【4月更文挑战第23天】 在快速迭代的软件开发过程中,持续集成(CI)是确保代码质量和加速交付的关键。本文深入探讨了构建和维护一个高效CI系统的方法和最佳实践。从自动化测试到部署策略,文中细致分析了各环节的优化技巧,并提供了解决常见问题的实用建议。通过案例研究和工具选型,读者将获得构建强大CI流程的具体指导,以支持敏捷和DevOps环境下的高质量软件发布。
请看我回答~
6 0
shuj
|
2天前
|
存储 监控 安全
云端防御战线:云计算环境下的网络安全策略与实践
【4月更文挑战第23天】在数字化转型的浪潮中,云计算已成为推动企业敏捷性、可扩展性和成本效率的关键因素。然而,随着数据和服务迁移至云端,传统的网络边界逐渐模糊,给网络安全带来了前所未有的挑战。本文探讨了在多租户云环境中维护信息安全的先进策略和技术,分析了云服务模型(IaaS, PaaS, SaaS)特有的安全风险,并提出了一系列针对性的安全措施和最佳实践。通过深入讨论身份与访问管理、数据加密、入侵检测系统以及合规性监控等关键技术,本文旨在为读者提供一套全面的云计算安全防护框架。
shuj
5 0
我是廖志伟
|
3月前
|
存储 弹性计算 供应链
云计算的思想、突破、产业实践
云计算的思想、突破、产业实践
我是廖志伟
92 0
游客moiomvrp3vyac2
|
6天前
|
人工智能 监控 安全
构筑安全之盾:云计算环境下的网络安全策略与实践
【4月更文挑战第19天】 在数字化转型的浪潮中,云计算已成为企业IT架构的核心组成部分。然而,随着云服务使用的普及化,网络安全问题亦变得日益复杂和挑战性。本文将深入探讨如何在云计算环境中实施有效的网络安全策略,保障数据的安全性和完整性。我们将从云服务模型出发,分析不同服务模型下的安全威胁,并提出相应的防护措施。文章还将讨论信息安全管理的最佳实践,包括加密技术、身份验证、访问控制以及安全监控等方面,旨在为企业提供一套全面的云计算安全防护框架。
游客moiomvrp3vyac2
17 5
mrq4nk6ni2neg
|
9天前
|
监控 安全 网络安全
云端防御:云计算环境中的网络安全策略与实践
【4月更文挑战第15天】 在数字化转型的时代,云计算已成为企业运营不可或缺的技术支撑。然而,随着云服务模式的广泛采纳,网络安全挑战亦随之而来。本文深入探讨了云计算环境下的安全威胁,分析了云服务模型对安全策略的影响,并提出了一系列创新的网络安全防护措施。通过研究最新的加密技术、访问控制机制和持续监控方法,文章旨在为企业提供一个综合性的网络安全框架,以确保其云基础设施和数据的安全性和完整性。
mrq4nk6ni2neg
34 8

热门文章

最新文章

  • 1
    成都晨云信息技术完成阿里云PolarDB数据库产品生态集成认证
  • 2
    SpringBoot集成Redis
  • 3
    Docker搭建持续集成平台Jenkins最简教程
  • 4
    如何统计员工每日工作量:使用Groovy编写一个JIRA插件来与项目管理集成,实时追踪员工的工作量
  • 5
    SpringBoot3集成Swagger出现错误Error starting ApplicationContext. To display the condition evaluation repor
  • 6
    SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
  • 7
    《Solidity 简易速速上手小册》第9章:DApp 开发与 Solidity 集成(2024 最新版)(上)
  • 8
    SpringBoot集成Redis
  • 9
    如何进行有效的Apollo测试:单元测试和集成测试指南
  • 10
    Hadoop【基础知识 05】【HDFS的JavaAPI】(集成及测试)
  • 1
    拥抱变革:我的云计算技术感悟之旅
    8
  • 2
    云端防御战线:云计算环境下的网络安全策略与实践
    5
  • 3
    云端防御战线:云计算环境中的网络安全策略
    15
  • 4
    云端防御战线:云计算环境下的网络安全与信息保护策略
    10
  • 5
    云计算中的弹性是什么?
    26
  • 6
    构筑安全之盾:云计算环境下的网络安全与信息保护策略
    16
  • 7
    构建坚固的防线:云计算环境下的网络安全策略
    16
  • 8
    构筑安全之盾:云计算环境下的网络安全策略与实践
    17
  • 9
    云端防御战线:云计算中的网络安全与信息保护策略
    17
  • 10
    探索OpenNetEasyCloud:一款创新的云计算解决方案
    15
  • 相关课程

    更多
  • 场景实践 -新手玩转云计算制作一个浪漫的表白网页
  • 场景实践-新手玩转云计算-搭建Linux学习环境
  • 高校精品课-华北电力大学 -云计算技术与应用
  • 高校精品课-河海大学 -云计算技术与应用
  • 高校精品课-中国传媒大学 -云计算技术
  • 高校精品课-湖南大学 -云计算基础与应用
  • 相关电子书

    更多
  • 阿里邮箱—安全高效集成
  • 集成智能接入网关APP:优化企业级移动办公网络
  • 云效助力企业集成安全到DevOps中
  • 相关实验场景

    更多
  • 倚天大数据电商数据分析快速实践
  • 使用计算巢企业应用,一键获取专属的Linux服务器管理软件
  • 通过SAE实现企业应用的云上托管
  • 企业级云上网络构建
  • 容器DevSecOps全链路体验
  • 快速开发光伏电站数字孪生运维系统
  • 下一篇
    部署LAMP环境(Alibaba Cloud Linux 3)

    玻璃钢生产厂家湛江玻璃钢医疗外壳生产厂家清远玻璃钢摆件长治玻璃钢花瓶生产厂家乌鲁木齐玻璃钢垃圾桶茂名玻璃钢座椅加工湛江玻璃钢动物雕塑批发清远玻璃钢医疗外壳厂东营玻璃钢沙发厂浙江商业美陈公司龙岩玻璃钢座椅厂家直销遂宁玻璃钢动物雕塑价格钦州玻璃钢沙发批发贵港玻璃钢景观雕塑厂家枣庄玻璃钢天花吊顶厂家直销成都玻璃钢景观雕塑厂家直销咸阳玻璃钢设备外壳天水玻璃钢动物雕塑多少钱内江不锈钢花盆厂廊坊玻璃钢花池定制北京玻璃钢沙发厂家桂林玻璃钢装饰批发杭州玻璃钢茶几定制哈密玻璃钢制品价格绍兴玻璃钢设备外壳哪家好三沙玻璃钢树池宜宾玻璃钢公仔雕塑山东玻璃钢前台价格镇江玻璃钢产品定制昆明玻璃钢花瓶加工咸阳玻璃钢装饰定制香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

    玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化