分拆:技術棧的自然演進
本文翻譯自 Bilgin Lbryam 的 Unbundling: The Natural Evolution of Tech Stacks[1],翻譯難免有所疏漏,有建議請反饋。
“unbundling” 如何翻譯,有點糾結,我一度將其翻譯成“解耦”,但解耦是 “decoupling” 的翻譯。這里我將其翻譯成分拆,如果你有更好的翻譯請告知。
譯者注
作者應該是去年 7 月離開紅帽加入了基于 Dapr 的創(chuàng)業(yè)公司 Diagrid,曾寫過 Multi-Runtime Microservices Architecture[2] 介紹多運行時,多運行時實際上也是分拆的體現。
作者從多種技術和團隊觸發(fā),介紹在演進中分拆的體現。除了文中提到,我認為可以分拆的是計算資源。將計算資源拆分:虛擬機、多租戶、多集群、多云、混合云,以降低成本、避免供應商綁定、提升性能和可靠性。在計算資源拆分過程中,也衍生出了與之配套的技術來解決拆分后帶來的不便。
隨著 IT 領域的不斷發(fā)展,新的軟件架構、開發(fā)技術和工具層出不窮。包括微服務、微前端、零信任、服務網格和數據網格,并將其網格化。盡管這些技術和方法間存在著明顯的不同,但它們都被一個共同趨勢聯系在一起:技術棧和團隊的分拆。這種趨勢包括將系統(tǒng)分解成更小的、獨立的組件,并將工作組織成更小、更專注的團隊,以實現更高的靈活性和模塊化。
他們都是如何體現分拆的?
- 微服務 的出現是為了應對單體架構的局限性,隨著應用程序的增長單體架構靈活性不足,并且擴展和維護困難。通過將單體應用程序分解為更小的、獨立服務,就可以獨立開發(fā)、部署和擴展應用程序的每一部分,從而縮短開發(fā)周期并提高靈活性。
- 六邊形架構 的出現是為了通過將組件解耦并提供與它們交互的標準接口來提高 3 層應用程序的靈活性和可維護性。
- 領域驅動設計 (DDD) 是一種軟件開發(fā)方法,可以幫助將整體應用程序分解成更小的、松耦合的、代表不同的業(yè)務領域或上下文的模塊。
- 微前端 架構是一種設計方法,是將大型單體前端應用程序分解為較小的、獨立的、可以單獨開發(fā)和部署的模塊。
- JAMstack 通過將構成用戶界面的 HTML、CSS 和 JavaScript 與為應用程序提供支持的服務器端代碼和數據庫分離,實現應用程序的前端和后端分離。由于系統(tǒng)的一部分的變更無需變更其他部分,從而可以更輕松地維護應用。
- 服務網格 將分布式應用程序的網絡職責(例如路由、負載平衡和服務發(fā)現)與應用程序本身分離,使開發(fā)人員可以專注于構建業(yè)務邏輯和功能,而無需擔心底層網絡基礎設施。
- 與微服務類似,數據網格 將大型復雜系統(tǒng)分解為更小的獨立組件。它將數據治理和管理實踐分解為更小的、獨立組件,這些組件可以跨不同的數據源和系統(tǒng)一致地實現和執(zhí)行。
- 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