如何重构应用

重构是指重写应用的代码和架构,充分利用 AI、事件驱动设计以及边缘原生计算等现代化技术,以满足不断变化的用户期望和市场需求。

学习目标

阅读本文后,您将能够:

  • 了解什么是重构
  • 探索 AI、无服务器和边缘计算如何为应用重构提供支持
  • 了解重构如何支持应用现代化

相关内容


想要继续学习吗?

订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!

参阅 Cloudflare 的隐私政策,了解我们如何收集和处理您的个人数据。

复制文章链接

什么是重构?

重构是指重写应用代码和架构,以支持新功能并满足不断变化的用户期望,同时提高可读性、可维护性和性能。通过采用 AI无服务器计算以及基于边缘计算的架构等现代化技术,团队可以加速创新,构建适应性更强、面向未来的应用。

重构有多种形式,具体取决于应用的架构和目标。常见方法包括简化复杂的逻辑、将单体系统拆分为多种微服务,以及将其进一步演化为可作用服务调用的函数。团队还可以优化数据库并消除冗余代码,提高效率和可维护性。重构通过重建应用的基础来支持新功能,提高应用的可扩展性并使其能够更好地适应现代用户的需求。成功的项目通常会推出新功能,证明投资的合理性,同时还可以提高长期可维护性并加速未来开发。

重构就好比将单人厨房改造成拥有专业工作站的现代快节奏餐厅。在旧的架构中,一个人包揽所有事务:准备、烹饪、摆盘,这种做法在需求激增之前是有效的。迁移到微服务就好比将不同任务分配给专用工作站:一个用于制作烧烤,一个用于制作沙拉,一个用于制作点心。容器就像是标准化准备站,确保不同班次的一致性;而无服务器函数就像是只有在紧急情况下才会调用的临时人员。结果,这个“厨房”能够轻松扩展、快速适应并且在面对压力的情况下保持高效,就像云原生应用一样。

云原生应用开发的作用

云原生应用开发是指构建并运行充分利用云计算模型的应用。这种方法强调可扩展性、灵活性和韧性,实现方式是使用微服务、容器和无服务器计算等架构原则。

这些云原生原则对重构策略有着直接影响。例如,从单体架构迁移到微服务,需要将紧密耦合的组件拆分成可独立部署的单元。无服务器计算在重构中发挥着关键作用,让应用能够采用可自动扩展的事件驱动型无状态架构来满足需求。

重构应用以适应云原生模式的流程通常涉及:解耦组件、引入用于服务间通信的 API,以及重新设计数据持久层。这些并不是纯粹的结构性变化,它们能够提高可扩展性,改善系统在各种负载条件下的韧性并优化资源利用,从而在分布式环境中提高性能。因此,重构成为将传统应用迁移到现代化云基础架构的基础步骤。

如何重构应用:关键策略

重构必须在技术改进与运营稳定性之间取得平衡。重构流程的关键步骤如下所述:

评估和规划

第一步是确定代码库中需要改进的地方。这包括化解技术债务,解决性能瓶颈,以及对过时的组件进行现代化改造。静态代码分析器、依赖关系映射实用程序和性能监测平台等工具有助于发现低效问题,并突出显示复杂或高风险的区域。清晰的评估有助于制定明智的计划和确定优先级。

增量式重构

应该以小规模、可管理的步骤进行重构,以便尽量减少中断并降低退化风险,确保新的更新不会破坏现有功能。与持续集成 (CI) 和持续部署 (CD) 管道集成,确保定期测试和部署更改。对于更重大的过渡,例如从单体系统迁移到模块化系统,类似 Strangler Fig* 的模式可以推动逐步迁移,让新功能在过渡期间能够与旧代码共存。

*Strangler Fig 模式会逐步取代旧系统,具体方法是构建与现有系统共存的新功能并逐步取而代之,直到原有功能被逐步淘汰。

采用现代化架构

采用现代化架构,对于构建可轻松扩展、实时响应并满足不断变化的用户期望的应用至关重要。如今,这意味着超越单纯的微服务,拥抱无服务器计算、事件驱动设计以及 AI 赋能的体验。

无服务器架构让团队能够以函数形式运行代码,根据需求自动扩展,没有管理基础设施的开销。对于面向用户的应用,此模型可加快开发周期,支持实时响应,以及简化扩展。

AI 日益成为现代化应用设计的基础组成部分。将 AI 模型和推理引擎直接集成到应用架构,可以解锁全新的差异化功能,例如个性化体验、智能自动化。现代化框架让开发人员能够在边缘部署 AI 工作负载,使推理更接近用户,从而提供更快速、更个人化的体验。

API 网关、服务网格和可观察性工具等支持技术仍然很关键。它们可以提供服务之间的安全通信,支持动态流量管理,并提供跨分布式、事件驱动环境的可见性。

随着应用的不断发展,无服务器和 AI 原生架构能够提供敏捷性,以快速尝试新功能、响应市场变化,并在全球环境中高效扩展,没有管理服务器或编排容器的复杂性。

分析关键指标和服务日志

在设计重构的应用时,应该考虑性能和安全性。缓存策略和边缘计算有助于缩短响应时间。同时,实施多种安全策略,例如速率限制、输入验证以及安全 API 访问,有助于防范常见威胁,包括 DDoS 攻击注入漏洞和 API 滥用。

这些措施是适用任何应用的最佳实践,但在重构过程中尤其重要。随着单体系统被拆分为多种微服务或迁移到云环境,应用通常会获得新的外部接触点,例如 API、端点以及如今可能已被暴露的服务。重构是一个默认嵌入更加强大的安全控制措施的契机,确保新组件从一开始就具有韧性,而且关于信任或访问的传统假设不会延续到更加分布式、面向互联网的架构。

为什么重构是应用现代化的关键

重构在应用现代化中发挥着关键作用,它会解决阻碍可扩展性、性能和可维护性的底层结构问题。

重构的主要优势之一是减少技术债务。随着应用的不断发展,遗留代码和过时的设计模式会不断积累,导致难以实施新增功能或响应不断变化的需求。重构让开发人员有机会通过精简代码、改进模块化和消除低效环节来缓解这个问题,从而使系统更易于扩展和维护。

理想情况下,提高代码清晰度也会提高开发人员生产力。简洁清晰、结构合理的代码更易于理解、调试和扩展。这将降低引入新漏洞的可能性,并加快开发周期。

此外,重构还可以支持更快速、更可靠的部署。现代化应用可以充分利用自动化功能、持续交付管道和云原生基础设施。

现代化过程中重构应用的挑战

虽然重构会带来长期收益,但它也会带来短期复杂性。需要进行仔细分析,才能决定重构代码库的哪些部分以及重构的具体范围。对于文档有限的大型遗留系统而言,尤其如此。如果没有明确的策略,团队可能会面临过度设计的风险,或造成新旧组件之间的不一致问题。

重构也可能耗时耗力。与开发新功能不同,重构往往会带来间接或延迟的益处,这导致更加难以向专注于短期成果的利益相关者证明其合理性。如果未经全面、详尽的测试,结构变更还可能引入新漏洞或性能问题。

过渡期间的安全和运营风险可能会增加,特别是在以前的内部系统现在暴露于公共网络或 API 的情况下。这些风险凸显了可观察性、自动化测试和逐步进行重构的重要性。

Cloudflare 如何支持应用重构和现代化

Cloudflare 通过全栈、无服务器平台支持应用重构,用于构建现代化应用并在边缘运行 AI 推理。团队可以在全球范围内存储 AI 训练数据,低延迟生成 AI 图像,保护开发人员基础设施,并审核 LLM 内容。Cloudflare 平台集成了可观察性和访问控制功能,可加速实现可扩展性、韧性以及 AI 就绪的应用现代化。

详细了解应用现代化