函数计算的版本管理与灰度发布

为了满足不断变化的市场需求和用户期望,以及应对日益复杂的安全挑战和业务策略的变化,有效的版本管理对于服务的开发和运营至关重要。

服务版本管理不仅仅是一个技术实践,更是确保业务成功和用户满意的关键环节。版本管理使得团队能够有序地计划、开发和发布新功能,同时保留并支持旧版本,确保业务的持续运作和用户体验的改善。通过有效的版本管理,团队能够在快速变化的市场环境中保持敏捷性和竞争力,为客户提供稳定、安全和高效的服务体验。

因此,投资于良好的版本管理实践,不仅是必要的,更是迈向成功的关键一步。服务版本管理的优点包括以下几个方面:

  • 灵活性和可扩展性:通过服务版本管理,可以轻松地管理和部署多个服务版本。这使得团队可以同时进行多个版本的开发和测试,而不会相互干扰。例如,可以在生产环境中运行稳定版本,同时在开发环境中测试新功能和改进。

  • 降低风险:通过有计划地管理和控制服务的版本,可以减少因为部署新版本而引入的风险。每个版本都可以经过适当的测试和验证,确保质量和稳定性。如果新版本出现问题,也可以快速回滚到之前的稳定版本。

  • 持续交付和持续集成支持:服务版本管理是实现持续交付(Continuous Delivery)和持续集成(Continuous Integration)的关键一环。通过自动化的流程和工具支持,可以快速、安全地发布新版本,并确保应用程序的可靠性和稳定性。

  • 灰度发布和A/B测试:使用服务版本管理,可以实现灰度发布和A/B测试,即逐步将新版本引入生产环境,仅向部分用户群体或流量分发一部分新功能。这种方式可以有效地验证新功能的效果和用户接受度,从而最大程度地减少风险。

  • 版本回溯和问题诊断:如果出现问题或者需要进行问题诊断时,服务版本管理可以快速定位到具体的版本。开发团队可以追踪到每个版本的变更记录,有助于更快速地解决问题和修复漏洞。

  • 客户端兼容性管理:通过服务版本管理,可以更好地管理客户端的兼容性问题。客户端可以选择使用特定版本的服务接口,而不会因为服务端的改动而导致不兼容或者功能异常。

1. 函数计算提供了哪些原子能力来支持版本管理的实践

函数计算平台作为一个为用户提供 Serverless 服务的平台,当然也提供了便捷而细致的版本管理和灰度发布的相关功能。

函数计算平台通过版本和别名功能提供灰度发布和 A/B 测试的能力,函数的别名是指向特定版本的指针,您可以通过为 A/B 版本配置不同的流量比例来完成功能的上线。如果新版本在上线后发现问题,可以通过修改别名指向旧版本来完成回滚操作。

函数计算版本也适用于新旧接口的兼容性管理。对于新旧版本接口不兼容的情况,可以利用版本快照固化旧版本接口的代码和配置并为其设置独立的访问地址。函数计算可为新旧版本提供不同的访问地址,进行区别访问。

2. 函数计算版本管理相关原子能力


9b5f89f3be7b5580492e580a90d8511a.png

函数版本

函数计算提供函数级别的版本控制功能,支持您为自己的函数发布一个或多个版本。版本相当于函数的快照,包含函数代码及函数配置,不包括触发器。当您发布版本时,函数计算会为函数生成快照,并自动分配一个版本号与其关联,以供后续使用。版本一旦发布不可修改,拥有专属于该版本的代码和配置且版本号单调递增,不会被重复使用。

函数别名

函数计算支持为函数的版本创建别名。别名可以理解为指向特定版本的指针。您可以利用别名来轻松实现灰度发布、全量发布、以及回滚等功能。别名无法脱离函数或版本单独存在,使用别名访问函数时,函数计算会将别名解析为其指向的版本,调用方无需了解别名指向的具体版本。

如果没有别名,每次新版本上线,都需要针对新版本创建新的 HTTP 触发器,这会导致用于客户端请求的 HTTP URL 发生变化,进而必然会涉及到客户端的配置修改。如果使用别名进行版本管理,就可以实现客户端无感知的版本平滑升级。

函数HTTP触发器

HTTP 触发器是函数计算服务中的一种触发器类型,用于通过 HTTP 请求来触发函数的执行。具体来说,HTTP 触发器允许您将一个函数映射到一个 HTTP URL,当有 HTTP 请求发送到该 URL 时,函数计算将会调用相应的函数执行。您可以为特定版本或者别名配置 HTTP 触发器,并为其设置不同的请求方法、认证方式来进行差异化的访问控制管理。

日志

函数计算还提供了版本/别名级别的请求日志和函数日志供您进行问题的定位调试。如下图所示:

5e913cbead5c575b487724e8def5f179.png410bcfb2c65297d6bcdacd2819f38041.png

3. 如何使用函数计算进行灰度发布

创建函数:从控制台首页,点击 函数管理 >> 创建函数,进入创建函数页面

8b8c4c6c84e0d9a1d8b6e5d1e2843eae.png


填写函数名称,上传您的代码包,点击 完成创建eccb10241e9950be6e0c23de5b445df6.png

发布版本:经过测试后可以发布版本,在函数详情页,点击 发布新版本。发布新版本成功后,产生名称为 v${序号} 的版本,比如首次发版会产生名为v1的版本,后续版本序号不会重复,单调递增,如v2、v3...

9a6bc93b03c09bb14d55af04df093d15.png

配置灰度比例:在函数详情页,点击 创建别名 ,配置初始灰度流量比例

f17074b2192a8d20b122a69bf16854ba.png


创建基于别名的 HTTP 触发器:在别名详情页,点击 触发器 标签,点击 添加触发器,进行触发器的配置
77ae2ef26c0dbd09e77b7b79aefe4272.png

逐步调整灰度比例:在别名详情页,点击编辑,调整主版本和灰度版本的流量比例。
045d781ec54b709b28330b1cc28ec0c7.png

4. 如何使用函数计算业务回滚

在别名详情页,点击编辑,选择关闭启动灰度版本,下拉框可以看到可以选择主版本,您可以选择想要回滚至的版本。选择完毕后,100%流量打到回滚版本上。
f4f27a3bc3a757dff71c72573d216453.png


5. Finerwork 的版本管理实践

Finerwork 是以360前端工程师为精准用户在业务开发场景下提供统一基础服务包括:数据、权限、流程、技术架构、规范和工具的研发平台, 为用户提供更快、更好用的产品,帮助团队完成数字化建设。

Finerwork 工作流如下图所示, 是类 Gitflow 分支模型和极库云 workflow 流程的完美结合。一个新建需求需要新建一个针对此需求的快发分支,即图中的 feature 分支,并把需求和快发分支绑定。快发分支是一种次抛分支,需求上线后快发分支就完成了自己的使命,状态转变为冻结分支。开发者在本地开发完成后进行需求的提测,需要把代码提交到日常环境部署分支,即release-daily 分支,在日常环境进行功能验证。待提测完成,需求进行上线之时,快发分支代码合并到生产环境部署分支,即 release-prod 分支,在生产环境点击 重新部署 进行回归测试。回归测试完成后,点击发布, 代码合并到 master 分支,至此需求上线完成。但是当需求类型是紧急发布类型,可以创建 hotfix 分支,该分支代码可以直接在生产环境上部署集成。

710c5c98be9b249d8e90d8984c696c46.png
部署环节,Finerwork 集成了流水线,包含了检出代码,构建镜像,镜像更新到 K8s deployment 资源等一系列操作。
01dc5efda20a93bb7645aa852b20c493.png

如下图所示,Finerwork 核心是利用快发分支进行快速集成和发布。待集成分支列表展示了当前所有的快发分支,当快发分支被提交到集成分支后,这些集成分支的状态开始被 Finerwork 后台监控,通过监控分支状态和极库云需求的状态来判断是否具备部署条件。集成分支是一个逻辑上的概念,无具体的 Git 分支与之对应。无更新的代码和非需求提测状态的代码,不具备部署条件。快发分支是日常环境和生产环境的部署分支的基石,因为快发分支的次抛属性,当前部署分支也是次抛的。

ae095ccaab6d14b7c77a87e9c008bd69.png

针对每个需求创建快发分支,快发分支有待集成分支和集成分支以及冻结分支三种状态。管理员可以选择快发分支合并到部署分支进行集成测试和集成发布。

如下图所示,环境分为日常环境和生产环境。日常环境和生产环境创建拥有各自的部署分支,部署分支用来集成每个集成分支的代码,部署分支代码用来部署。部署成功产生的镜像渲染 K8s Deployment 资源,用来发布。

日常环境用于测试联调,当需求在日常环境中完成测试,需求推进至提测,生产环境的待集成分支才能处于可用状态,否则生产环境的集成分支处于不可用状态。

248c2c82313165352f469510239c85a8.png

如下图所示,稳定版本服务线上用户,如需回滚,可以选择回滚到指定发布版本。

c79699cb69c527751566358fa85e9c97.png

6. 函数计算支撑 Finerwork 的版本管理实践落地

Finerwork 将优秀的代码分支管理实践与极库云的 workflow 工作流程进行了有机结合,进而拥有了完备的项目管理能力。通过对极库云流水线的集成,Finerwork 实现了代码的自动检出、编译生成镜像、在算力托管平台完成部署的完整流程。与 K8s Deployment 提供的原生的版本管理能力相比,函数计算提供的版本管理能力则更为细致和灵活。此外,凭借与事件总线的高效集成,使得用户无论是在 Finerwork 编写 Web 服务还是事件处理程序都变得游刃有余。
43543b6cdaa5c0c43a71fde6f6ebc8fb.png

项目的开发、测试和生产环境在源代码、配置等方面往往存在较大差异,如何高效保持不同环境间的切换以及完成代码、配置从开发环境到生产环境的流畅过度是开发团队日常所面临的难题。Finerwork 基于函数计算提供的版本管理、别名管理能力实现了业务应用的多环境部署以及版本的流畅发布和回滚。55ff699d2cd1022b2010e424dc87ea56.png

函数计算基于自身平台的原子能力支撑了 Finerwork Serverless 类型应用的版本管理实践。Finerwork 应用可以按测试、灰度、生产等多个维度创建多套环境并通过多个函数的部署实现其隔离性。Finerwork 部署采用镜像方式对函数进行更新,同一函数不同版本的流量分配由别名进行管理。发布新版本之后,开发者可以通过更新别名的指向来为刚发布的新版本分配流量,开发者也可以通过修改别名指向为之前的稳定版本来实现回滚操作。

7. 总结

综上所述,函数计算的版本管理系统不仅有助于提高软件开发团队的效率和质量,还能有效管理和跟踪项目的整个生命周期,是管理和使用函数过程中非常重要的一环。通过以上关于如何使用函数计算进行灰度发布的图文介绍,我们可以了解到函数计算平台的版本管理的资源划分细致、操作简单,对 Web 用户比较友好。相信函数计算可以帮助您的团队在开发效率上更上一层楼。

更多技术和产品文章,请关注👆

360智汇云简介

b44ab73f970fbb6f246d264f45c172fa.jpeg

360智汇云是以"汇聚数据价值,助力智能未来"为目标的企业应用开放服务平台,融合360丰富的产品、技术力量,为客户提供平台服务。

目前,智汇云提供数据库、中间件、存储、大数据、人工智能、计算、网络、视联物联与通信等多种产品服务以及一站式解决方案,助力客户降本增效,累计服务业务1000+。

智汇云致力于为各行各业的业务及应用提供强有力的产品、技术服务,帮助企业和业务实现更大的商业价值。

官网:https://zyun.360.cn

客服电话:4000052360

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值