亞馬遜 Prime Video 團隊從 serverless 架構遷移到 monolith,為什麼他們要這麼做?

2023年12月29日

💎 加入 E+ 成長計畫 與超過 350+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

本篇最早收錄於《ExplainThis 全端雙週報》第 1 期

這週亞馬遜的 Prime Video 團隊發表了一篇新的技術文章《Scaling up the Prime Video audio/video monitoring service and reducing costs by 90%》,在文中描述它們如何透過把架構從 serverless 遷移到 monolith 來節省 90% 的成本。這件事在社群中掀起極大的討論,因為這幾年的架構趨勢都是往 serverless 靠攏,但是沒想到有團隊反而選擇從 serverless 遷移到 monolith,而且還因此更省成本。

非常推薦大家讀一下原文。在讀這篇原文時,有幾個我們認為值得思考的點。首先,架構方式沒有絕對的好與壞,而是有其適用的場景。在文中有提到,該團隊最開始選擇 serverless 的架構讓他們能夠非常快速開始專案,因此不能說最開始的架構選擇是錯的。只是隨著系統的使用量增加,該團隊意識到原本的架構變得不是最佳的形式,因而決定調整架構。

在真實世界的系統設計,很難真的在一開始就預知未來會發生的事,因此適時回頭檢視既有架構是否需要被重構,是非常重要的。沒有所謂完美的系統設計,只有最符合當下階段與情境的系統設計,該團隊的例子給了一個非常好的示範。

此外,在真實的系統設計中,成本永遠是一個重要的考量。而用 serverless 架構代表在分散式的元件之間有更高的資料傳輸成本,所以該團隊的高吞吐量使用情境下,若把這些元件從分散式改到單一進程的 monolith 當中,能大幅降低傳輸資料的成本。但不是所有團隊都會遇到像這個團隊在的情境,以及不是系統中的所有元件都有這種特性。因此實際的作法,可能會是有高運算與吞吐需求的子系統,放到 monolith 當中,而其他子系統維持用 serverless 的方式。

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們