现代化.NET单体应用的艺术与文化
关键字: [Amazon Web Services re:Invent 2024, 亚马逊云科技, Modernizing .Net Monolith, Migration Strategies, Rehosting, Re-Platforming, Refactoring, .Net Framework, Modern .Net]
导读
了解Tessitura,艺术和文化领域集成软件解决方案的先驱,以及其将20年历史的.NET应用从客户端-服务器模式转变为现代云构建架构的历程。Tessitura通过亚马逊云科技的基于经验的加速(EBA)转型方法开启了这一旅程,该方法突出了Tessitura团队内部所需的技术改造和文化转变,以确保项目的成功。来学习如何克服遗留系统的复杂性并培养实验文化。本次会议适合任何希望实现.NET应用现代化或增强技术驱动项目中跨团队协作的人士。
演讲精华
以下是小编为您整理的本次演讲的精华。
现代化.NET单体应用程序的旅程是一个战略规划、文化转型和技术创新的故事。这是一个通过TessiTura Network的经历而展开的叙事,TessiTura Network是一家致力于为10个国家和3个大陆的艺术和文化机构服务的非营利组织。凭借803个会员组织的多元化组合,从区域剧院到大都会歌剧院、皇家歌剧院和悉尼歌剧院等著名机构,TessiTura Network发现自己正在应对快速增长和陈旧技术堆栈带来的挑战。
TessiTura Network软件工程副总裁Chris Shelley回顾了该组织在20世纪90年代后期于大都会歌剧院的起源。当时,歌剧院缺乏对其赞助人的统一视角,因为门票销售和捐赠贡献由不同的系统管理。认识到需要定制软件解决方案,大都会歌剧院的董事会批准了500万美元的投资,从而诞生了TessiTura。到2001年,另外六家组织表示有兴趣使用该软件,促使大都会歌剧院将TessiTura剥离为独立实体——第一家专门致力于艺术和文化事业成功的非营利软件公司,由它所服务的组织来管理。
随着TessiTura Network的成功加速,现有技术堆栈的局限性变得越来越明显。Chris Shelley承认:“我们被迫在问题发生时进行清理,而不是考虑从上游解决问题,真正现代化我们的基础设施。”这一认识促使该组织开启数字化转型之旅,采纳Dan Heath在其著作“Upstream”中倡导的“上游思维”原则。
TessiTura Network托管服务副总裁Jeff Oliver于2020年12月加入该组织,面临一项艰巨的挑战——将遗留的共同托管VMware架构(托管3大洲600个客户)迁移到亚马逊云科技的5个区域。目标架构是在专用主机上运行100%的Microsoft工作负载,主要通过Citrix提供服务,并在不到10个月的紧迫期限内完成,以避免另一年的共同托管费用。Jeff最初的反应是怀疑这种方法的长期可持续性,担心在经济上出现问题。
然而,迁移工作按计划顺利完成,自那以后,TessiTura Network作为一家公司实现了惊人的45%增长。这一成就并非没有学习经验和失误,尤其是在数据管理和部署方面。
在数据管理领域,TessiTura Network的团队经历了从Microsoft SQL关系数据库环境向DynamoDB无模式方法的过渡。通过实验和配置,团队学会了正确构建数据以进行索引,利用DynamoDB为新工作负载提供的价值。此外,该组织还参与了一个亚马逊云科技数据实验室项目,旨在协助从Microsoft SQL迁移到开源数据库技术如PostgreSQL。这一努力揭示了所涉及的复杂性,因为TessiTura Network广泛使用了高级SQL服务器功能,给自动化迁移工具带来了挑战。
部署是另一个学习曲线,因为团队开始采用基础设施即代码。从AWSCloudFormation开始,工程师开始构建基础设施即代码,将其与他们正在部署的应用程序(如具有DynamoDB后端的Elastic Beanstalk应用程序)一起存储。这一演进最终导致采用了亚马逊云科技云开发工具包(CDK)和C#,这对于习惯于C#的面向对象开发人员来说是自然契合的。
完成重新托管工作后,TessiTura Network将注意力转向重新平台化。为了帮助实现这一目标,他们将两个组件从传统.NET重构为现代.NET,使他们能够直接跳过Windows容器,在Linux容器上运行。这一决定被证明是富有成效的,因为亚马逊云科技服务抽象了管理Linux组件的大部分复杂性,缓解了托管工程团队对缺乏Linux经验的担忧。
重新平台化之旅包括几个关键举措。首先,TessiTura Network旨在将其客户端Windows应用程序迁移到Web界面,从而摆脱用于服务Windows客户端的Citrix基础设施。其次,他们使用现代.NET和Linux容器在Amazon Elastic Container Service (ECS)上容器化了几个服务器组件,包括电子商务和API应用程序。这一举措解决了Windows许可成本挑战,同时带来了成本节约、系统容量和性能改善以及消除专用主机等好处。
为支持其多租户架构(单租户部署托管在多租户基础设施上),TessiTura Network实施了SQL服务器企业版。这一决定使他们能够满足恢复时间目标,同时继续在同一SQL主机上托管多个会员数据库。此外,该组织将其分析应用程序迁移到供应商提供的托管服务,用Amazon Redshift取代专有数据仓库,并利用亚马逊云科技数据迁移服务(DMS)。早期测试显示,这一过渡将带来显著的性能和成本节约。
重新平台化电子商务工作负载的成果令人瞩目。与专用主机上的传统架构相比,TessiTura Network观察到每个会员的日常计算成本降低了54%。此外,响应时间提高了约25%,共享基础设施带来的“嘈杂邻居”问题也得到了消除。自动缩放确保资源能够动态分配以满足需求,从而无需过度配置。
Jeff Oliver分享了一个引人入胜的故事,展示了TessiTura Network转型努力的影响。7月19日凌晨,该组织发现自己正在应对一起广泛的事故,平台上约有1600个实例受到影响。当一个工程师团队致力于修复受影响的实例时,另一个团队则专注于编写脚本以实现自动化批量修复。
到了那个星期五的晚上,自动化已经解决了30%的生产和非生产环境。然后,两名工程师就能够完成剩余的生产、测试和开发环境,在最初问题出现后仅24小时多一点就在周六凌晨3:30恢复了全部运营能力。自动化修复不仅使每位工程师能够实现更高的恢复率,而且与手动过程相比,失败率也更低,后者通常需要恢复到备份,从而增加了恢复工作的复杂性和时间。
这一事件凸显了TessiTura Network跨团队协作、基础设施即代码和使用云原生技术实现自动化的切实好处。他们能够在26小时内从事故中恢复,而不是像许多其他组织那样需要数天或数周时间,这直接影响到他们在全球服务的艺术和文化组织,大大减少了事故的影响。
TessiTura Network的转型之旅植根于坚实的文化基础,由三个核心价值观指导:弹性、心理安全感和通过学习和实验创新。这些价值观培养了交叉培训、知识共享、分布式值班责任和工作与生活平衡的承诺,有助于建立弹性团队和弹性系统。
心理安全感是一个优先事项,营造了一种环境,让团队成员感到被接纳,并有权表达他们的疑问、想法和担忧。这种对诚实反馈和冒险的开放态度对于推动创新至关重要。
该组织采用了“C1 D1 T1”(Consume One,Do One,Teach One)的学习方法,允许团队成员将高达10%的工作时间用于相关学习活动。这一举措使亚马逊云科技认证工程师的比例从不到10%增加到工程师员工的60%以上,为团队提供了有效驾驭亚马逊云科技环境所需的技能。
TessiTura Network的转型努力还得到了战略合作伙伴和项目的支持,如亚马逊云科技体验加速器(EBA)项目。EBA项目旨在帮助团队不仅重新设计平台组件,还能发展团队动力和协作方法。在为期六周的时间里,TessiTura Network的目标是构建可重用的容器部署,使用基础设施即代码,并将其成功部署到亚太地区的单个会员站点。尽管他们未能实现最终的技术目标,但该项目培养了跨职能团队的知识、效率、信心和信任,为未来的团队互动奠定了模板。
展望未来,TessiTura Network的路线图包括继续重新托管、重新部署和重构的工作。虽然大部分成员环境已迁移到云端产品,但剩余的大型和复杂环境由于其例外的可扩展性和弹性需求而带来挑战。在亚马逊云科技合作伙伴的协助下,正在进行的重新部署计划旨在重新设计额外的工作负载,以实现更可持续和更有弹性的平台,可能包括将API容器化以及评估在Amazon RDS或Aurora等服务上使用PostgreSQL。
重构计划也在进行中,例如将分析平台重新架构并迁移到Amazon Redshift和亚马逊云科技 Data Migration Service (DMS),以及探索额外的微服务架构的潜力。
在这一变革过程中,TessiTura Network坚持保留其应用程序的原始含义和事实内容。他们采用了一种务实的方法,结合了重新托管、重新部署和重构策略,以满足特定的业务需求并优化亚马逊云科技云环境。
TessiTura Network现代化历程的故事见证了战略规划、文化转型和技术创新的力量。通过拥抱变革、培养学习和协作的文化,并利用亚马逊云科技的能力,这个非营利组织不仅实现了.NET单体应用的现代化,而且为在不断发展的艺术和文化领域持续增长和保持弹性奠定了基础。
下面是一些演讲现场的精彩瞬间:
演讲者请观众举手,如果他们或他们的团队目前正在开发.NET应用程序或者多年甚至几十年来一直在构建这些应用程序。
他们的团队采用了基础设施即代码的方式,从CloudFormation过渡到使用C#的亚马逊云科技云开发工具包(CDK),这与他们的面向对象开发背景非常契合。
演讲者讨论了他们的团队如何成功地将遗留.NET组件重构为现代.NET,使他们能够直接跳到Linux容器并利用亚马逊云科技服务来抽象Linux平台的复杂性。
从Windows客户端过渡到基于Web的客户端,消除了Citrix并降低了成本,同时提高了可靠性。
将服务器组件容器化并过渡到使用亚马逊云科技弹性容器服务的Linux容器,以节省成本、提高性能并降低复杂性。
Costco公布了重新构建其他工作负载以获得更大可扩展性和弹性的计划,利用亚马逊云科技合作伙伴关系并探索容器化和数据库迁移。
总结
在这场精彩的会议中,Jagadish Chittoor以及来自Tessitura Network的嘉宾Chris Shelley和Jeff Oliver分享了在亚马逊云科技上现代化.NET单体应用程序的艺术和文化见解。这个故事通过Tessitura令人难忘的旅程展开,强调了迁移和现代化的关键策略和工具。
Jagadish首先提供了.NET的历史背景,强调了向现代跨平台版本的转变。然后他深入探讨了推荐的迁移策略:重新托管(提升和转移)、重新平台化(进行架构更改)和重构(为云原生优势重新设计)。这些方法通过实际示例进行了说明,展示了利用亚马逊云科技服务(如Elastic Beanstalk、RDS、ECS和Fargate)的优势。
Chris和Jeff随后分享了Tessitura引人入胜的故事,详细介绍了他们重新托管、重新平台化和重构的多步骤过程。他们强调了遗留.NET单体应用程序所面临的挑战、采用混合方法的决定,以及通过容器化、基础设施作为代码和跨职能团队协作实现的好处。他们在亚马逊云科技体验加速器计划中的经验对于提升团队技能和发展工作实践至关重要。
该会议以一个强有力的案例研究告终,展示了Tessitura现代化努力的现实影响。通过利用自动化、云原生技术和基础设施作为代码,他们的团队在26小时内从一次关键事故中恢复过来,大大减少了对全球艺术和文化客户的影响。Jagadish最后介绍了亚马逊云科技工具,如App Container和.NET微服务提取器,旨在简化.NET应用程序的现代化之旅。
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。做为全球生成式AI前行者,亚马逊云科技正在携手广泛的客户和合作伙伴,缔造可见的商业价值 – 汇集全球40余款大模型,亚马逊云科技为10万家全球企业提供AI及机器学习服务,守护3/4中国企业出海。