放棄了無服務器和微服務架構的亞馬遜,降低了 90% 的成本,這在業界了不小的轟動,也讓其他企業開始思考,是否 應該效仿。
作者 | DAVID HEINEMEIER HANSSON
譯者 | 彎月 責編 | 鄭麗媛
出品 | CSDN(ID:CSDNnews)
最近,亞馬遜的 Prime Video 團隊發布了一則案例研究,說他們決定放棄無服務器、微服務架構,并用單體取而代之——此舉為他們節省了 90%(震驚!)的運營成本,并簡化了系統。
除了為他們的明智之舉點贊外,我認為整個行業都能從這個故事中學到一個重要的經驗教訓:
“我們最初的解決方案采用了無服務器組件的分布式系統……理論上,我們能夠獨立擴展每個服務組件。但是,我們使用某些組件的方式,導致服務在負荷僅為預期值的 5% 時就達到了瓶頸。”
他們的這番話總結了長期以來席卷科技行業的微服務熱潮:理論上。
如今我們看到了所有這些理論的真實結果:很明顯,在實踐中,微服務是一種致命的誘惑,會為系統帶來不必要的復雜性。而無服務器只會令情況進一步惡化。
這個故事的獨特之處還在于,亞馬遜是最早的一批采用面向服務架構的典型代表。面向服務架構遠比微服務更合理,這是一種組織架構模式,用于處理公司內部的海量通信,遠遠優于定期的協調會議。
對于亞馬遜的規模來說,采用 SOA 更合適,因為沒有任何一個團隊能掌握 駕駛這樣一支 “超級油輪艦 隊”所需的一切。相比之下,團隊之間的協調依賴于 API 是一種天才之舉。
然而,與許多優秀的想法一樣,這種模式一旦在原有的環境之外采用就會“變質”,甚至一旦被推入單一應用程序架構的內部,就會造成嚴重破壞——而這恰好就是我們使用微服務的方式。
從許多方面來看,微服務是一種早已入土的架構、一種拒絕死亡的知識傳播“ 病菌”。從 J2EE 的黑暗時代開始,這種 “病菌”就消耗了大量的人力物力,如今又蔓延到了微服務和無服務器。
但如今這第三波浪潮似乎達到了巔峰,Kube.NETes 背后的主要推動力量之一 Kelsey Hightower 在 2020 年曾表示:
“我們要打破單體服務,并以某種方式找到我們從未有過的工程原則……如今我們從編寫糟糕的代碼轉變成了構建糟糕的基礎設施。
因為基礎設施帶來了很多新的支出,因此我們需要更多人手……很多人沉迷于資本和營銷帶來的繁榮,而實際上這只是一種營銷手段,無法解決根本問題。”
無論在何種情況下,將某個團隊和應用程序中的方法調用和模塊分離換成網絡調用和服務分區,都是一種瘋狂的舉動。
我很高興,我們能夠在第三次熱潮中擊敗這種可怕的僵尸襲擊,但我們仍需保持警惕,不要重蹈覆轍,有些壞點子是無論殺多少次都死不了的。你所能做的是,看清楚它們何時死灰復燃,然后拿到武器,裝好彈藥,準備射擊。