本文翻译自 Bilgin Lbryam 的 Unbundling: The Natural Evolution of Tech Stacks[1],翻译难免有所疏漏,有建议请反馈。
“unbundling” 如何翻译,有点纠结,我一度将其翻译成“解耦”,但解耦是 “decoupling” 的翻译。这里我将其翻译成分拆,如果你有更好的翻译请告知。
译者注
作者应该是去年 7 月离开红帽加入了基于 Dapr 的创业公司 Diagrid,曾写过 Multi-Runtime Microservices Architecture[2] 介绍多运行时,多运行时实际上也是分拆的体现。
作者从多种技术和团队触发,介绍在演进中分拆的体现。除了文中提到,我认为可以分拆的是计算资源。将计算资源拆分:虚拟机、多租户、多集群、多云、混合云,以降低成本、避免供应商绑定、提升性能和可靠性。在计算资源拆分过程中,也衍生出了与之配套的技术来解决拆分后带来的不便。
随着 IT 领域的不断发展,新的软件架构、开发技术和工具层出不穷。包括微服务、微前端、零信任、服务网格和数据网格,并将其网格化。尽管这些技术和方法间存在着明显的不同,但它们都被一个共同趋势联系在一起:技术栈和团队的分拆。这种趋势包括将系统分解成更小的、独立的组件,并将工作组织成更小、更专注的团队,以实现更高的灵活性和模块化。
他们都是如何体现分拆的?
- 微服务 的出现是为了应对单体架构的局限性,随着应用程序的增长单体架构灵活性不足,并且扩展和维护困难。通过将单体应用程序分解为更小的、独立服务,就可以独立开发、部署和扩展应用程序的每一部分,从而缩短开发周期并提高灵活性。
- 六边形架构 的出现是为了通过将组件解耦并提供与它们交互的标准接口来提高 3 层应用程序的灵活性和可维护性。
- 领域驱动设计 (DDD) 是一种软件开发方法,可以帮助将整体应用程序分解成更小的、松耦合的、代表不同的业务领域或上下文的模块。
- 微前端 架构是一种设计方法,是将大型单体前端应用程序分解为较小的、独立的、可以单独开发和部署的模块。
- JAMstack 通过将构成用户界面的 HTML、CSS 和 JavaScript 与为应用程序提供支持的服务器端代码和数据库分离,实现应用程序的前端和后端分离。由于系统的一部分的变更无需变更其他部分,从而可以更轻松地维护应用。
- 服务网格 将分布式应用程序的网络职责(例如路由、负载平衡和服务发现)与应用程序本身分离,使开发人员可以专注于构建业务逻辑和功能,而无需担心底层网络基础设施。
- 与微服务类似,数据网格 将大型复杂系统分解为更小的独立组件。它将数据治理和管理实践分解为更小的、独立组件,这些组件可以跨不同的数据源和系统一致地实现和执行。
- 2 个比萨团队 模型是一种在组织中组织团队和工作的策略,它提倡更小的团队能够更快地响应变化、沟通和协作,并可以更快地做出决策并更有效地解决问题。
每种技术趋势的最终结果都是分拆。将技术栈分解为独立的组件,将团队分解为更小、更专注的团队,这些团队可能会扩展到所有其他领域。在前端、数据、网络、安全之后,下一个拆分领域你认为会是什么? 和我一起[3] 致力于 Dapr[4] 和分拆集成。 也可以在 @bibryam[5] 上关注我,并大声说出关于 分拆[6] 主题的任何想法和评论。
参考资料
[1] Unbundling: The Natural Evolution of Tech Stacks: https://www.ofbizian.com/2023/01/the-unbundling-of-tech-stack.html
[2] Multi-Runtime Microservices Architecture: https://www.infoq.com/articles/multi-runtime-microservice-architecture/
[3] 和我一起: https://www.diagrid.io/
[4] Dapr: http://dapr.io/
[5] @bibryam: https://twitter.com/bibryam
[6] 分拆: https://twitter.com/bibryam/status/1610237692087779329