阿里云ODPS普惠算力再升级,Data+AI全产品降价低至59元! 了解详情
写点什么

亚马逊云科技推出 ECS 内置蓝绿部署功能

作者:Matt Saunders

  • 2025-07-24
    北京
  • 本文字数:1522 字

    阅读完需:约 5 分钟

大小:762.06K时长:04:20
亚马逊云科技推出ECS内置蓝绿部署功能

亚马逊云科技(Amazon Web Services)针对亚马逊弹性容器服务(Amazon Elastic Container Service,简称 ECS)推出了一个新的内置功能:蓝绿部署。借助这项功能,开发团队既能安全地部署容器化应用程序,而且在出现问题时还能够近乎实时的回滚,这样就不需要使用 AWS CodeDeploy 实现复杂的变通方案了。

 

这项新功能解决了开发团队经常面临的一项挑战:以前在向 ECS 发布时,为了实现蓝绿功能,他们不得不构建和维护自定义工具。亚马逊首席开发大使、公告作者Donnie Prakoso解释说,“在规模比较大的情况下,开发团队需要花费宝贵的时间构建和维护没什么差异的部署工具,而这些时间本可以用于业务创新”。



蓝绿部署是一种软件发布策略,它维护两个相同的生产环境。现有的“蓝”环境继续服务于实时流量,当要部署新版本的应用程序时,就新建一个“绿”环境。在对绿环境进行彻底地测试并且监控没有问题之后,流量从蓝环境转移到绿环境,确保用户受到的干扰最小,并在需要时能够轻松地回滚到之前的版本。

 

在该公告发布之前,想要在 ECS 上实现蓝绿部署能力,亚马逊云科技的客户不得不依赖AWS CodeDeploy。这会带来额外的配置和设置复杂性。工程师们采用了各种方法来解决这个问题,包括在负载均衡器后面交换自动扩展组和更新自动扩展组的启动配置。虽然 CodeDeploy 方法功能齐全,但团队仍需要创建单独的 CodeDeploy 应用程序和部署组,并管理复杂的 IAM 角色。AWS CodeDeploy 管理蓝绿部署过程,但团队仍需手动配置负载均衡监听器和目标组。现在,亚马逊 ECS 自动编排整个工作流程,提供事件钩子,允许团队在将新版本软件暴露给最终用户之前,使用合成流量验证新版本。

 

对于这份新公告,来自 The Scale Factory 的 Chris Musther在LinkedIn上写道:“用 CodeDeploy 也可以,文档中有说明——只是这项新功能简化了这个过程,而且功能更丰富。”

 

这项新功能直接集成到了现有的 ECS 配置中,可以通过 ECS 控制台、AWS CLI 或基础设施即代码工具启用。用户可以配置在生产流量转移到绿环境后,多长时间内允许即时回滚到蓝环境,这个时间称为“烘焙时间”。每个服务修订版本都会保留不可变的配置,包括任务定义、负载均衡器设置和服务连接配置,以便回滚能够恢复到与之前的运行环境完全相同的环境。

 

在部署过程中,ECS 会在指定的生命周期阶段自动调用 Lambda 函数,允许对绿版本进行全面测试。新功能提供了六个部署生命周期钩子:扩展前、扩展后、生产流量转移、测试流量转移、生产流量转移后和测试流量转移后。这些钩子可以触发 AWS Lambda 函数执行自定义验证逻辑,例如合成测试、API 调用或指标查询,以检查应用程序健康状况、运行集成测试或验证性能指标,然后发出是否继续或中止部署的信号。

 

我的验证函数可以针对绿版本进行全面的测试——检查应用程序健康状况、运行集成测试或验证性能指标。

—— Donnie Prakoso

 

其他主要云服务提供商已经为不在自托管 Kubernetes 服务上运行的容器化应用程序提供了类似的蓝绿部署策略。微软 Azure通过Azure Container Apps提供蓝绿部署能力,使用容器应用修订、流量权重和修订标签来实现蓝绿部署。该平台允许用户创建蓝绿应用程序版本的实例,测试和验证新修订版本,然后相应地重定向流量。同样,为了实现蓝绿部署,Google Cloud Run 支持渐进式上线和回滚

 

其他行业反响积极,不过一位 Reddit 评论者对繁忙服务切换的原子性进行了思考

 

亚马逊云科技为 ECS 内置蓝/绿部署功能的举措很好,改变了零停机部署的游戏规则。我很好奇,在有负载的情况下,流量转移有多干净。

 

蓝绿部署能力包含在亚马逊 ECS 中,不收取额外费用。用户只需支付部署过程中使用的计算资源的费用。该功能在所有商业 AWS 区域均可用。

 

原文链接:

https://www.infoq.com/news/2025/07/aws-blue-green-ecs/

2025-07-24 10:0210

评论

发布
暂无评论
发现更多内容

当我们谈到ThreadLocal的时候,我们在谈什么?

Jason

Java 多线程 ThreadLocal

各大公司面试题分类整理

是小毛吖

面试 后端

写字工具更新史

Bonaparte

学习 读书笔记

一个平凡程序员的年度总结

小智

程序员 人生

Redis 6.0 新特性-多线程连环13问!

牧码哥

redis 多线程 io

Clickhouse 性能测试

久吾尔岂

从删库到跑路?

芦苇

产品 职业 产品经理 职业素养 职业道德

聊聊苹果账号的那些事儿

不要艾特我

iphone

开源商业模式促进金融业科技生态的发展

FinClip

开源 金融科技

DDD 实践手册(4. Aggregate — 聚合)

Joshua

设计模式 领域驱动设计 架构模式

面试指南 | 终于要跟大家见面了,我有点紧张。

Apache Flink

大数据 flink 流计算 实时计算

开始每周写作计划

M1racle

翻译和产品本地化的区别是什么?

葛仲君

翻译 本地化 全球化 产品开发

C++定时器的实现

泰伦卢

c c++ C#

内存对齐

泰伦卢

c c++ C#

centos7 maven私服自动启动

kcnf

笔记:《如何系统思考》之如何做到系统思考

wiflish

思维方式

关于GDB你需要知道的技巧

泰伦卢

c c++ C#

MySQL中 int(11)和 int(10) 到底有没有区别?

周三不加班

MySQL 字符宽度 数据库数据类型

业务代码的救星——Java 对象转换框架 MapStruct 妙用

周三不加班

MapStruct 对象转换

css常见问题总结

靖仙

CSS css3

金融「中台」十宗罪

FinClip

中台 企业中台 业务中台

写作的意义到底是什么

董一凡

写作

C++线程池的实现

泰伦卢

c++ C# 线程池

《TCP/IP详解》概述

网瘾少年SEC

TCP 网络协议 IP

浅谈SpringCloud之服务注册中心Eureka

北漂码农有话说

Python3.6.1官方文档练习——初入江湖(一)

小匚

Python python3.x 入门

机会是留给不停寻找他们的人,而不是原地等待的人

非著名程序员

程序员 提升认知 机会 行动派

【译】【UX】一个页面可以有多个面包屑导航吗?

Yukun

用户研究 UX 面包屑导航

从一道面试题来看计算机基础知识的重要性

周三不加班

数组 堆栈 函数栈 函数栈调用

一次线上服务高 CPU 占用优化实践

挖坑的张师傅

性能优化 JVM cpu

亚马逊云科技推出ECS内置蓝绿部署功能_亚马逊云科技_InfoQ精选文章