天天看點

《資料中心設計與營運實戰》—— 2.7 購買還是自建

本節書摘來自異步社群《資料中心設計與營運實戰》一書中的第2章,第2.7節,作者: 【美】luiz andré barroso , 【美】jimmy clidaras , 【瑞士】urs hölzle 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

傳統it架構會大量使用第三方軟體元件,如資料庫軟體和系統管理軟體,把精力集中在開發專門的業務軟體上以提供産品直接的價值,例如運作在應用伺服器和資料庫引擎上的商業邏輯就屬于這類軟體。而google這樣的大型網際網路服務供應商則通常采用不同的做法:應用層特定的邏輯以及很多叢集級基礎架構軟體均自行開發,平台層軟體則采用第三方元件,但也都是開源的,在需要的時候可以自行修改。是以,google整個軟體棧的絕大部分是在服務開發者掌控之下的。

這種方式增加了大量的軟體開發和維護工作,但卻有利于程式的靈活性并節約成本。靈活性的重要性展現在當關鍵功能或性能出現漏洞必須馬上解決時,程式可以在各開發層級間快速周轉以修複漏洞,并可以提供解決問題的多種選擇,進而解決複雜的系統問題。例如,一個不必要的網絡行為在應用層級可能不好處理,但在rpc庫的層面卻相對容易解決,反之亦然。

從曆史上來看,一個自建而不是購買的主要原因是,當時需要的倉儲規模的軟體基礎架構根本沒有商業産品。此外,除非第三方軟體供應商自己維護叢集,否則充分測試這樣規模的軟體是很難做到的。最後,自開發的軟體可能更簡單和迅速,因為可以設計僅滿足很小部分的服務需求,是以在該領域中可以更加高效。例如,bigtable為了滿足預期應用場景的更高吞吐量和可擴充性需求,就略去了一些傳統sql資料庫的核心功能,gfs也是因為相同原因不再提供完整的posix相容檔案系統。