事件驱动:使用Strangler和Leave/Layer模式

事件驱动:使用Strangler和Leave/Layer模式

关键字: [Amazon Web Services re:Invent 2024, 亚马逊云科技, Amazon EventBridge, Event Driven Architecture, Strangler Pattern, Leave Layer Pattern, Application Modernization, Amazon Eventbridge]

导读

解锁事件驱动架构(EDA)的力量,通过绞杀者模式和离开/分层模式来现代化您现有的应用程序。在本次讨论中,学习如何利用Amazon EventBridge、Amazon Lambda和微服务来提高敏捷性、弹性和安全性,同时减少技术债务。探索如何将单体应用无缝分解为微服务,从而实现更快的创新、可扩展性和可维护性。

演讲精华

以下是小编为您整理的本次演讲的精华。

视频一开始,Jorge Alvarez和Jeff Escott介绍了自己并解释他们将讨论现代化模式,如绞杀模式和离层模式,以及如何使用Amazon EventBridge。他们提到这是一个300级会话,暗示了高级技术水平。为了说明这些概念,他们引入了两个角色 - Jill,一位经验丰富的产品负责人,负责为Unicorn Shop应用程序定义新功能,以及John,一位新员工,拥有20年经验但不了解Java,被雇佣来维护和为基于Java的Unicorn Shop应用程序创建新功能。

Jill作为产品负责人解释了Unicorn Shop应用程序的背景。这是一个20年历史的Java单体应用程序,帮助公司成为市场领导者,使客户能够购买独角兽相关产品,如连衣裙和浮筒。然而,由于该应用程序无法快速创新,公司现在正在失去对手的竞争优势。Jill有一个想法,与第三方工具Slack集成,在客户注册Unicorn Shop时通知他们,但她不确定这在遗留应用程序中是否可行。

作为公司和Unicorn Shop应用程序的新手,John面临着在不影响现有收入来源应用程序的情况下添加这个新功能的挑战。他需要按照CTO的指示,采用敏捷的、云原生的方法来构建。John熟悉用于现代化的Strangler Fig模式,但也认识到其挑战,如拆分数据库、处理同步事务以及需要对遗留技术栈有深入了解。

经过研究,John对Leave/Layer模式产生了兴趣,该模式允许使用微服务和事件驱动架构(EDA)在现有应用程序旁边构建新功能,而不会对遗留系统产生重大影响。他还可以选择自己熟悉的技术栈,如JavaScript或Python,而不是Java。John分解了EDA的组件:事件生产者(遗留应用程序)、消费者(第三方工具)和连接它们的事件代理(Amazon EventBridge)。

John解释了EventBridge的工作原理,它有事件总线、用于模式匹配和转换的规则,以及目标,如亚马逊云科技服务或HTTP端点(API目标)。他计划使用EventBridge的自定义事件总线、规则来匹配来自遗留应用程序的新客户事件、转换将数据重新格式化为第三方工具所需的格式,以及API目标与Slack的HTTP端点集成。这种方法允许他使用云原生、事件驱动和解耦的架构构建新功能,而不会影响现有应用程序,遵循Leave/Layer模式。

然而,由于缺乏Java知识,John需要修改遗留应用程序以生成新的客户事件。他使用Amazon CodeWhisperer生成从遗留应用程序向EventBridge发布事件所需的Java代码,最小化了侵入性更改。

演示部分展示了Unicorn Shop网络应用程序,用户可以在其中注册和购买。然后它演示了遗留应用程序架构,包括Java前端和关系数据库,并使用Amazon X-Ray进行可观察性检测。John使用CodeWhisperer生成将事件发布到EventBridge所需的Java代码,包括导入SDK、创建EventBridge客户端、将遗留数据映射到JSON以及调用PutEvent API。

然后使用Amazon CodePipeline和Amazon CodeBuild将代码更改部署到遗留应用程序。在EventBridge中配置API目标以与Slack集成,包括创建Slack应用程序和频道。创建自定义EventBridge事件总线和规则,以匹配来自遗留应用程序的新客户事件。EventBridge规则中的输入转换器提取并重新格式化事件数据,以符合Slack预期的有效负载格式。

整个流程由在Unicorn Shop网络应用程序上注册触发,该应用程序向EventBridge发布新客户事件,事件被转换并传递到配置的Slack频道。演示展示了John作为一名不熟悉Java的新员工,如何在45-50分钟内理解需求、使用亚马逊云科技服务(如EventBridge和CodeWhisperer)并实现了一个云原生、事件驱动的集成,将遗留应用程序与第三方工具(Slack)集成,而不会对现有系统产生重大影响,遵循Leave/Layer模式。

总之,该视频演示了使用Leave/Layer模式以及亚马逊云科技服务(如EventBridge、CodeWhisperer和可观察性工具)来以解耦、事件驱动和云原生的方式现代化和扩展遗留应用程序的功能,同时最小化对现有系统的影响。演讲者强调了理解用例、将其与适当的模式相匹配,然后选择合适的技术和服务的重要性。

这个故事说明了John作为一名不熟悉遗留代码库的新员工,如何利用亚马逊云科技服务和模式来满足产品负责人的需求,而不会干扰现有的收入来源应用程序。Leave/Layer模式结合事件驱动架构和亚马逊云科技服务(如EventBridge和CodeWhisperer),使得能够以现代的、云原生的方式构建新功能,与遗留系统解耦,同时最小化对单体应用程序的侵入式更改。

在整个视频中,演讲者强调了理解用例、将其与适当的模式相匹配,然后选择合适的技术和服务的重要性。他们还强调了事件驱动架构、异步通信以及亚马逊云科技服务(如EventBridge)在支持各种模式、转换和集成场景方面的灵活性带来的好处。

这个故事有效地演示了如何利用亚马逊云科技服务和架构模式来现代化和扩展遗留应用程序,使组织能够创新并适应不断变化的业务需求,同时最小化对现有系统和收入来源的干扰。

下面是一些演讲现场的精彩瞬间:

演讲者解释了他们20年历史的Java应用程序Unicorn Shop的重要性,以及由于日益激烈的竞争,需要进行创新,因为他们的单体应用程序正阻碍了他们快速行动的能力。

dbfaacc4a5d470dd0685681a687d8184.png

一位开发人员表达了在确保对现有功能和收入来源影响最小的情况下对现代化应用程序的挑战,以及采用敏捷方法以满足严格的最后期限并适应未来的增强需求。

237cc4a4a45e4603cb75758059467156.png

EventBridge允许您将事件路由到特定目标,转换数据以匹配消费者模式,并在服务内本机集成Slack等服务。

16babef71fdce3fc450b9bc2cf6960c3.png

演讲者演示了CloudWatch控制台,展示了一个遗留应用程序的结构,包括一个关系数据库和一个带有前端的Java应用程序,突出了现代化的需求。

bcc65acf813c6f54eb52916a87442e9f.png

演讲者解释了如何创建Slack应用程序、授予权限并将其与API目标集成,只需几个配置就可以简化复杂的编码过程。

c4a7a0f003ab326da8bf62f63b25e4d8.png

总结

在这个引人入胜的叙事中,John这位经验丰富的开发人员着手将一个20年历史的Java单体应用程序Unicorn Shop现代化。在经验丰富的产品负责人Jill的任务下,John需要集成一个第三方客户欢迎系统,他探索了诸如Strangler Fig和Leave/Layer等架构模式。认识到现代系统的异步性质,他利用了Amazon EventBridge这一云原生的事件驱动架构服务,将新功能与遗留应用程序解耦。

经过深思熟虑的过程,John设计了一个解决方案,其中遗留应用程序将“新客户”事件发布到EventBridge自定义事件总线。EventBridge规则随后通过API目的地转换和路由这些事件,将新功能无缝集成到第三方客户欢迎系统中,而不会中断现有的收入来源。借助亚马逊云科技服务如CodeWhisperer,John克服了处理陌生代码库的挑战,实现了向云原生、事件驱动架构的平稳过渡。

最终,John的方法体现了Leave/Layer模式,在遗留的棕地系统旁边构建全新的绿地功能,促进创新同时最小化对现有应用程序的影响。叙事以成功集成的演示告终,彰显了亚马逊云科技服务在实现应用程序现代化的现代、事件驱动架构方面的强大能力。

亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。做为全球生成式AI前行者,亚马逊云科技正在携手广泛的客户和合作伙伴,缔造可见的商业价值 – 汇集全球40余款大模型,亚马逊云科技为10万家全球企业提供AI及机器学习服务,守护3/4中国企业出海。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值