【技术】【开发者成长】升级遗留代码的最佳实践( 三 )


更复杂的更改需要对基础设施进行改进 , 比如 , 创建一个前端服务器层 , 你可以从其中呈现来自不同源的应用程序片段 , 如上面的微服务示例 。 基于 XML 的标记语言 ESI(Edge Sides Includes)可能适合这项任务 , 而 Varish 或 Nginx 然后 , 为了确保你的应用在用户群增长时能够保持性能 , 请创建负载均衡器和基于上下文的独立数据库 , 这些数据库在微服务或宏服务中单独使用 。
创造一个能够支持这种安排的灵活环境也是一个挑战 。 转移到微服务时 , 你只需在基础设施上投资一次 , 但你将需要进一步支持这种架构的维护 。 尽管如此 , 它可能仍然比重写所有代码要便宜得多 。
如果你的主要目标是创建一个易于维护的生态系统(而不是关注性能第一 , 维护第二) , 你还需要在开发过程中确定系统的关键元素 , 并创建路线图来对它们进行更改 。 在这个过程中引入一些持续集成和部署的魔法 , 其中 , CI 和 CD 流程可以在没有 QA 或开发人员的帮助就能自动进行 , 然后你最终将得到一个结构清晰、易于修改和调整的成熟软件 。
当然 , 这种混合方法并不是世界上唯一可行或正在使用的选项 。 但是 , 代码库的增量更改最终导致了完全重写 , 你得以能够使用工作代码 , 从而使业务保持安全 , 同时 , 微服务使不同团队能够独立地交付新的和不同的功能 , 提供了一个为长期使用而设计的过程和架构 。
要做持久的更改需要什么? 你可能会看着我的首选解决方案 , 然后心想 , “嗯 , 这有点过于工程化了” , 或者“我没有一个团队能胜任这种工作” , 或者“这对我的平台来说太过于复杂” , 或者甚至“这不是纯粹的微服务架构!”我并不反对你这些想法 , 但我确实认为 , 升级你的技术将会迫使你作长远考虑 。
我提供的并不是快速解决方案 。 相反 , 混合方法为你提供了基于工作基础之上的新技术 。 通过逐步转向微服务 , 增量更改允许你轻松地更新应用程序 , 并利用最新的框架 , 所有这些都不会迫使你在可靠性上作出妥协 。 那么 , 你准备好重新构建你的软件了吗?