加速应用迁移:从传统系统到生产环境
关键字: [Amazon Web Services re:Invent 2024, 亚马逊云科技, 生成式AI, Amazon CodeGuru Developer, Application Modernization, Legacy Code Migration, Automation Tools, Cloud-Native Architecture, Refactoring Strategies]
导读
寻找通往迁移成功的清晰路径?了解如何使用Amazon Q Developer快速现代化您的遗留代码,实施自动化测试,优化基础设施选择,并将您全新的精简应用程序轻松自信地部署到生产环境中。
演讲精华
以下是小编为您整理的本次演讲的精华。
在不断演进的技术格局中,组织一直面临着一个持续的挑战:平均而言,IT组织高达80%的资源仅用于维护现有系统,只有20%用于创新和推动业务发展。这一严峻现实凸显了迫切需要进行范式转变,实现一种转变,颠覆这一比例,释放现代计算的真正潜力。
Jamie Walker是英国一家高级亚马逊云科技咨询合作伙伴Steamhouse的首席顾问。他与同事Mateus Morris和Tom一起,着手探索可以加速从传统系统向前沿的云原生应用程序迁移的策略,利用亚马逊云科技的强大功能。
正如Jamie所阐述的,现代化不仅仅是一个流行语,它是应用程序和基础设施的根本演进,是适应不断变化的技术需求和客户期望的必要调整。现代化的核心是加快功能交付的催化剂,使团队能够快速响应客户需求和市场变化。此外,它还培养了持续创新的文化,为系统持续改进和发展奠定了基础。
现代化带来的切实好处是多方面的。团队获得了更快创新的灵活性,因为曾经耗费大量时间的任务变得更加精简,缩短了实现价值的时间。在当今数字化环境中,安全性是一个至关重要的问题,随着存在漏洞的传统系统被最新的安全工具和框架所取代,数据保护得到加强,确保符合行业标准。
成本优化是推动现代化的另一个令人信服的驱动力。通过采用无服务器和容器等现代技术,许多客户已经实现了运营成本的大幅降低。这些节省下来的资金并非被浪费,而是可以战略性地重新投资于增长和创新机会,推动进一步发展。
也许最值得注意的是,现代化释放了提高开发人员生产力的潜力。当开发人员配备了现代工具,他们就能茁壮成长,将原本一周最多只能部署一次的缓慢发布周期,转变为每天多次生产部署。
这些好处的累积影响——更快的创新、强大的安全性、降低的成本和高效的开发人员——最终将带来卓越的客户体验。Jamie引用了最近TechTarget的一项调查,该调查显示,已经采用现代化的组织报告上市时间加快了48%,将推出新功能所需的时间缩短了近一半。此外,他们的应用程序性能提高了70%,带来了更好的用户体验和更少的瓶颈,同时将技术债务减少了惊人的50%。
然而,要实现真正的现代化应用程序,需要克服诸多挑战。缓慢的基础设施供应是一个普遍存在的问题,可能会延迟环境设置数天甚至数周,通过采用容器和无服务器技术,可以实现按需基础设施,自动响应需求进行扩展。
手动部署由于其固有的缓慢和容易出错的特点而被自动化和现代DevOps实践所取代。持续集成和持续部署(CI/CD)管道简化了从构建到测试和部署的整个过程,加快了发布周期,同时大大降低了风险,使团队能够更快、更安全、更自信地部署。
安全性不再是事后才考虑的附加因素,而是成为现代应用程序设计、构建和管理的核心原则。现代化提供了一个机会,从一开始就将安全性融入应用程序的结构中,而不是事后才考虑。
通过检测,可以解决应用程序健康状况的可见性问题,这个问题曾让团队对内部问题一无所知。通过收集日志、指标和跟踪,可以全面了解应用程序性能,从而及早发现并解决问题,防止影响客户。
不一致的工具是组织内部混乱的根源,而标准化则可以创造一致性,使各个团队保持一致。这不仅减少了构建者的认知负担,还简化了新团队成员的入职流程。
成功现代化的核心是多个因素的整合,Steamhouse将其称为“现代应用程序的5大支柱”。
第一个支柱是架构模式。现代应用程序依赖于将单体应用程序分解为更小、独立的组件来实现模块化服务。这种模块化不仅增强了灵活性,还能够为每个组件选择最合适的技术。通过服务如Amazon Service Catalog和Amazon Proton,可以定义常见模式(如事件驱动的微服务架构),并提供给开发人员使用。
强大的运营模型是第二个支柱,对于减少复杂性至关重要。目标是尽可能将大量无差别的繁重工作卸载到亚马逊云科技上,利用托管服务如Amazon Aurora用于关系数据库,Amazon ECS用于容器工作流。这些服务负责底层基础设施的扩展、修补和可用性,从而解放组织免受这些负担。
第三个支柱是开发人员赋权,通过提供自助服务工具和基础设施来实现。像Backstage这样的平台标准化了自助服务,为开发人员提供了一个集中的中心,可以根据需要访问所需的工具,包括代码存储库、模板和管道。这种方法消除了瓶颈,培养了责任和生产力文化,缩短了开始新功能工作所需的时间。
Terraform这个强大的基础设施即代码工具,能够将最佳实践编码为可重用模块,自动部署基础设施,为第四个支柱——管理和治理做出贡献。通过从一开始就嵌入防护措施,服务如Amazon Security Hub和Amazon Control Tower可确保应用程序安全、合规,并提供可见性,而不会增加环境的复杂性。
第五个也是最后一个支柱是数据管理。现代应用程序需要专门的数据策略,无论是利用DynamoDB实现可扩展性和灵活的数据模型,还是使用Amazon S3构建数据湖,或者其他专用数据存储。随着生成式人工智能日益普及,拥有一个坚实的数据策略将是释放其未来潜力的关键。
尽管现代化的好处令人信服,但这一旅程并非没有挑战。时间和资源限制加上80/20陷阱,可能会阻碍进展。技能缺口,尤其是在云原生专业知识和现代DevOps实践方面,如果不加以解决,可能会减缓甚至阻碍现代化努力。
预算限制也可能构成障碍,因为现代化的前期成本可能看起来令人生畏。然而,关键是要考虑不采取行动的成本——效率低下、更高的维护成本和错失机会——从长远来看,这可能会变得更加昂贵。
技术债务是传统系统和多年来快速修复和临时解决方案的副产品,即使是最小的变化也可能带来风险和耗时。组织阻力源于需要重新思考团队结构、工作流程和文化,因为现代化不仅仅是一种技术转变,也是一种文化转变。
为了正视这些挑战,Steamhouse采用了一种分为三个关键阶段的结构化现代化方法。评估阶段专注于发现,全面了解客户的环境、应用程序、痛点和依赖关系。这个阶段为确定应用程序的优先级和定义最佳路径奠定了基础,无论是重新部署、重构还是其他策略。
现代化阶段将这些见解付诸行动,重构应用程序、构建API并利用云原生架构。最后,管理阶段确保随着现代化的推进,优化得以持续,利用亚马逊云科技的架构优化框架持续评估和基准测试环境。
现代化中最棘手的挑战之一是遗留代码的存在。根据JetBrains最近的一项调查,有50%的开发人员仍在使用近十年前发布的Java 8版本。这并非由于缺乏升级的愿望,而是由于升级过程的困难阻碍了进展。
自动化成为处理代码迁移、依赖项升级、测试和重构繁重工作的不二法门。通过自动化,这些任务可以更快、更低风险、更一致地完成,扭转80/20比例,释放资源用于创新。
Amazon CodeGuru Developer是一款强大的代码转换工具,展现了这种自动化实力。亚马逊云科技高级开发人员代言人Mateus Morris演示了如何使用CodeGuru将代码从Java 8和11迁移到Java 17,并计划在不久的将来扩展到支持.NET。这种能力不仅可以升级语法,还可以融入最佳实践,提高代码质量,同时通过将Windows服务器应用程序迁移到Linux上运行来节省成本。
Morris展示了CodeGuru如何无缝集成到开发工作流程中,将一个示例计算器项目从Java 8迁移到Java 17。该过程包括调用CodeGuru代理,指定源和目标版本,并在接受更改之前审查建议的更改。CodeGuru负责从配置和依赖项升级到语法更新的所有工作,简化了即使是最复杂代码库的迁移过程。
然而,代码迁移只是开始。现代化才是最终目标,在这一过程中,CodeGuru继续成为宝贵的助手。Morris演示了CodeGuru如何在熟悉的集成开发环境(IDE)中生成单元测试、添加文档(Javadocs)并识别安全问题。
从根据代码上下文和提示生成单元测试,到跨多个文件添加全面的Javadocs,CodeGuru以惊人的效率简化了这些任务。它的安全扫描功能不仅仅是表面检查,而是理解代码的上下文,识别SQL注入、日志注入和跨站点请求伪造等漏洞,同时提供解释和建议修复方案。
正如Morris所强调的那样,像CodeGuru这样的工具正在解决代码迁移和现代化的“如何”问题,利用人工智能的力量来自动化原本会消耗大量时间和资源的任务。
Steamhouse的另一位同事Tom深入探讨了有效现代化的策略和最佳实践。他承认,鉴于亚马逊云科技提供的大量服务和功能,确定从何处以及如何开始是一个挑战。虽然目标架构的清晰性很重要,但能够在发现新信息时灵活适应同样至关重要。
将目标状态与业务目标和对组织的价值保持一致至关重要。无论是减少技术债务、提高发布速度、增强系统弹性、促进弹性伸缩还是实现创新,对广泛的最终状态(无论是微服务、容器、无服务器还是临时环境)有清晰的愿景,都可以将数字化转型分解为更小、可实现的目标。
让更广泛的团队参与进来,倾听那些直接从事产品构建的人员的意见,可以为解决现有问题提供宝贵的见解和新鲜的视角。正如Tom所强调的,经验并不意味着立即拥有所有答案,而是有信心接受挑战、倾听他人并协作找到最佳解决方案。
为了启动现代化之旅,Steamhouse采用了亚马逊云科技开发的MODAX(现代化加速器)转型方法论。MODAX是一个以结果为导向的计划,通过专注于一个小型、高影响力的应用程序,在短短六周内就能取得实际成果。
与广泛的战略阶段不同,MODAX为构建者提供了实践经验,让他们可以尝试、学习和采用最佳实践,同时取得即时进展。这种加速和集中的方法为整个现代化之旅奠定了基调,培养了持续学习和改进的文化。
MODAX EBA(实验、构建、加速)方法论与前面概述的三个现代化阶段保持一致。评估阶段涉及深入研究一组应用程序或整个系统,了解痛点和挑战,并根据当前痛点、对更广泛业务的可见性或作为团队获取经验的小型、易于提取的应用程序等因素,确定初始现代化候选对象。
评估完成后,将创建目标状态架构并与现代化路径保持一致。规划和启用活动(如研讨会、沉浸式日程和亚马逊云科技深入探讨)解决了技能差距。在构建阶段,团队采用“快速失败和记录”的方法,构建出初始的最小可行产品(MVP),并收集反馈。
MODAX的最终目标是使客户能够独立继续他们的现代化之旅。通过解锁现代化活动、提供基本级别的启用以及通过交付MVP提供结构化的、基于经验的学习环境,客户可以发展出持续进步所需的“现代化肌肉”。
Steamhouse经常与客户合作,构建可重用的架构模式,这些模式可在继续EBA时独立使用,用于新服务和功能的工作。像V Function这样的工具可以使用运行时动态分析将单体应用程序分解为亚马逊云科技云原生服务,与亚马逊云科技预定义的现代化路径保持一致。
这些路径包括:
- 迁移到Cloud Native:专注于单体分解和将应用程序分解为松散耦合的微服务,实现敏捷和可扩展的架构。
- 迁移到容器:通过容器化或将现有容器编排迁移到完全托管的服务(如Amazon ECS或Amazon EKS),提高运营效率、可移植性和环境一致性。
- 迁移到托管数据库:从自托管关系数据库过渡到Amazon RDS、Amazon Aurora和其他专门构建的亚马逊云科技数据库。
- 迁移到开源:将与昂贵许可模型相关的工作负载迁移到开源解决方案,实现无许可限制的实验和更快创新。
- 迁移到现代分析:解决数据湖、数据仓库、数据处理和实时分析需求。
- 迁移到现代DevOps:集成现代DevOps实践和使用亚马逊云科技开发工具的自动化管道,以更快、更可靠和更低成本的方式交付应用程序。
还讨论了经过验证的重构策略,如垂直切片重构和绞杀无花果模式。垂直切片重构围绕完整的业务功能组织代码更改,从用户界面到数据库切割应用程序的所有层。这种方法可以立即带来业务价值、降低集成风险,并促进具有不同专业知识的团队成员之间的更好协作。
绞杀无花果模式由Martin Fowler引入,是一种现代化和重写大型单体系统的风险管理策略。最初,建立一个与现有单体应用程序具有直通行为的代理。亚马逊云科技 Refactor Spaces可以提供增量现代化所需的基础设施、多账户网络和路由。创建新的解耦服务,并更新代理以将流量路由到这些服务。这种低风险策略允许逐步替换旧系统,而不会中断现有功能。
在整个现代化过程中,演讲者强调从小处着手、降低风险和证明价值的重要性。亚马逊云科技中的现代CI/CD工具可以创建可重复、安全的部署,而基础设施即代码则确保了可重复性和可恢复性。在组织内引入发展文化变革也至关重要,这种变革由业务需求驱动,并让业务各个关键利益相关方参与其中。
在应用程序和团队层面测量和跟踪性能至关重要,利用数据证明现代化的积极影响。沿途庆祝成功可以加强转型的价值,并培养持续改进的文化。
总之,这个视频提供了一个全面的路线图,利用亚马逊云科技服务、自动化工具(如Amazon CodeGuru)和MODAX等方法论,加速应用程序迁移和现代化。通过直面挑战、采用结构化方法并培养持续创新的文化,组织可以释放云原生应用程序的全部潜力,扭转80/20比例,将大部分资源用于推动创新和业务增长。
下面是一些演讲现场的精彩瞬间:
Jamie Walker,Steamhouse 的首席顾问和 亚马逊云科技 社区建设者,在 reInvent2024 大会上介绍了自己。
现代化的组织可以实现 48% 更快的上市时间、70% 更好的应用程序性能和 50% 的技术债务减少,从而加快创新步伐并提升用户体验。
演讲者强调,尽管遗留代码已经存在很长时间,但仍然可以有效运行,并举例说明 Windows、Linux 和基于 COBOL 和大型机运行的金融机构。
Amazon CodeGuru Developer 的代码转换功能可以快速将 Java 和 .NET 应用程序迁移到现代跨平台版本,从而实现大幅节省成本。
垂直切片重构可以通过实现跨越应用程序所有层的完整功能来实现即时的业务价值,促进更好的协作并降低集成风险。
亚马逊云科技 Refactor Spaces 可以通过建立代理并逐步解耦服务来实现单体应用程序的渐进式现代化,从而最小化风险并允许在需要时回滚。
亚马逊云科技 提供了大量资源和支持,通过客户经理、合作伙伴和本地社区,简化了迁移和现代化之旅,即使对于复杂的边缘案例也是如此。
总结
在这个引人入胜的叙事中,我们踏上了应用程序现代化的转型之旅。Jamie Walker揭示了拥抱变革的深远益处,从加速创新、增强安全性到降低成本、提高开发人员生产力。他强调了现代化的紧迫性,引用了统计数据,突显了组织可以获得的惊人优势。
Jamie深入探讨了阻碍进步的挑战,如时间限制、技能差距、预算问题和组织阻力。然后,他介绍了MODAX转型方法论,这是一个为期六周的加速器,通过关注高影响力的应用程序,使团队能够实验、学习和采用最佳实践,从而取得切实成果。
叙事随后转向Mateus Morris,他深入探讨了遗留代码的复杂性,以及自动化如何借助Amazon CodeGuru Developer等AI工具来彻底改革代码迁移和现代化。通过现场演示,Mateus展示了这些工具的非凡能力,无缝升级代码、生成测试、添加文档并识别安全漏洞。
最后,Tom登场,强调在保持灵活性以适应旅程的同时,明确定义目标状态架构的重要性。他探讨了经过验证的策略,如垂直切片重构和绞杀无花果模式,赋予团队逐步应对现代化并降低风险的能力。叙事以响亮的行动号召作为终结,敦促组织拥抱现代化、利用AI驱动工具的力量,并与亚马逊云科技社区互动,以充分释放其应用程序的潜力。
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。做为全球生成式AI前行者,亚马逊云科技正在携手广泛的客户和合作伙伴,缔造可见的商业价值 – 汇集全球40余款大模型,亚马逊云科技为10万家全球企业提供AI及机器学习服务,守护3/4中国企业出海。