可觀測性平臺,企業選擇自建還是購買?3000字幫你捋清思路

0 評論 5702 瀏覽 4 收藏 13 分鐘

我在接觸企業做咨詢的時候,問的頻率最高的是關于搭建可觀測性平臺的困惑,在數字化程度高的業務系統里面,可觀測性平臺確實能夠極高的提高運維效率,那么企業最感興趣的是:建立可觀測性,是應該自己搭建還是直接購買商業產品?

一、成本?v.s.?收益

當考慮自建還是采購可觀測平臺時,普遍會認為自建更劃算——因為開源軟件是免費的,而商業軟件通常需要付費。這是一個片面的說法,實際上,我們應該考慮的是總體擁有成本(Total Cost of Ownership,TCO)。

Total Cost of Ownership(TCO)是指一個產品或服務的全部擁有成本,包括購買價、使用成本、維護費用、升級成本、以及最終處理費用等。通俗來說,TCO 是指購買一個東西的總成本,而不僅僅是購買它時的價格。這個概念常常用于企業采購決策,因為企業在采購產品或服務時,需要考慮到產品或服務的全部擁有成本,而不僅僅是它的購買價,這樣才能更好地做出決策。

舉個例子,假設你正在考慮購買一輛汽車。如果只考慮購買時的價格,可能會選擇價格較低的車型。但是,如果你考慮到汽車的使用成本、維護費用、油耗、保險費等,那么價格可能就不是唯一的考慮因素了。因此,TCO 能夠幫助你更全面地了解一個產品或服務的全部成本,才能做出更明智的決策。

那轉化成現在討論的自建還是采購這個問題上,企業不僅包括考慮購買商品或服務的費用,還要考慮以下這些成本的付出:

  • 資源成本:無論是自建還是購買商業產品,都需要考慮安裝和部署所需的計算、存儲等資源成本。如果使用SaaS產品,還需要考慮將遙測數據傳輸到SaaS端所需的流量成本。
  • 人力成本:自己搭建和購買商業產品的主要區別在于人力成本。自己搭建需要花時間來安裝、設置和根據需要進行二次開發,而購買商業產品需要進行相應的培訓。這些時間都會轉化為員工的工資,也是企業的重要開支之一。
  • 拆除或最終處置成本:在某些情況下,無論是自建還是購買,如果不再使用相關工具或產品,都不能簡單地扔掉。我們需要考慮如何替換它,是否需要進行遷移工作,這也會帶來一些成本。

成本總是伴隨著預期收益的,建立可觀測性主要是為了提升系統的可靠性。可觀測性可以讓最終用戶獲得更好的體驗和服務,滿足業務需求,甚至推動業務發展。

同時,正如我之前提到的,在云原生時代,隨著系統復雜性的增加,不存在完全沒有問題的系統。因此,在出現問題或故障時,快速找到問題的根本原因,縮短故障平均恢復時間(MTTR)變得非常重要。這些都是建立可觀測性的價值收益。接下來,我們將看一下自建和購買商業產品分別涉及哪些成本和收益。

二、自建可觀測性平臺

這里的自建不是指從零開始自己研發一整套可觀測平臺(這種方式的時間、人力成本非常高),而是基于開源產品進行構建和二次開發,這也是更多企業能夠接受和采用的方式??捎^測性不僅僅是監控,自建可觀測平臺還需要考慮監控、日志和鏈路追蹤。此外,除了計算和存儲資源,還需要根據數據量的規??紤]消息中間件、緩存、數據庫等多種組件所需的資源。例如,以下是日志分析平臺ELK的典型架構(ELK是Elasticsearch、Logstash和Kibana三個開源項目的首字母縮寫):

如果你想通過開源軟件自建可觀測性,可能需要以下組件:

  • 監控:Prometheus+Grafana。
  • 日志:Logstash+Kibana。
  • 鏈路追蹤:SkyWalking。
  • 數據存儲:Elasticsearch集群。
  • 消息隊列:Kafka集群。
  • 數據庫:MySQL集群。
  • 內存數據庫:Redis集群。

這時,需要考慮資源、人力和一些隱性成本。

1. 資源成本

  1. 要滿足大數據量的情況,幾臺1核2G的虛擬機很難解決問題。特別是在生產環境中,如果數據量大,Elasticsearch的計算節點需要高配置,通常需要兩個16C 64GB的主機節點和一個控制節點。
  2. 日志的原始數據到后端存儲,雖然存在一定的壓縮,但實際容量還需要考慮索引、兩份數據副本等因素占據的存儲空間。
  3. 如果使用公有云,還需要考慮各個計算節點的存儲成本。此外,自建數據中心還涉及服務器成本、機房費用、后續擴容成本等。
  4. 災備資源成本,可觀測性平臺被稱為“Lastdance?service”,它需要比其他服務的可用性更高,所以在災備方案上的成本遠高于普通服務。

2. 人力成本

維護自建工具需要2~3人的團隊進行安裝部署、功能開發、問題排查和處理、性能調優等工作。此外,二次開發也需要人力成本。許多企業沒有二次開發的能力,即使進行二次開發,也可能由于主導開發的技術負責人或相關人員離職而導致項目難以繼續。由于可觀測性需要不斷迭代,如果人手不足,就無法跟上技術發展,整個團隊的技術應用也會受到限制。

隨著業務增長,維護工具的團隊人數也會隨之增長,從開始的2~3人,到幾十人甚至上百人。作者曾在AWS Cloudwatch工作過,當時核心研發人數就已過百人。

另外,隨著業務增長,所需的人才門檻也會提高,不僅對大型分布式系統設計、開發和運維有極高的要求,同時還需要了解網絡通信、操作系統、網絡安全,以及數據科學。為此Google針對這類復合性人才制定了一個崗位 – SRE(站點可靠性工程師),根據統計,這類人才的工程師平均薪資大約在100萬人民幣/年。而且這類人才通常集中在頭部的互聯網大廠,招聘難度遠比招傳統研發高。

3. 隱性成本

由于這種將開源軟件組合起來的方案只能稱為工具的組合,而不是完整的可觀測平臺(它并沒有完全解決數據孤島問題)。當遇到業務問題時,仍然需要訪問不同的工具進行問題分析,并需要與不同團隊進行溝通,這會花費很多時間,尤其是在線上救火的時候,服務宕機5分鐘和宕機5小時,帶來的損失,不僅僅是經濟上的損失,很有可能就會失去客戶信任,持續流失客戶。

持續維護也需要成本。技術棧中的第三方組件必須及時更新和修補,同時還需要考慮自建組件的安全性。假如維護團隊出現人員流失或者變更,其交接成本比重新搭建一套新的系統還要高,因為開源組件每天都會迭代更新,假如維護團隊沒有開源社區里的核心成員,基本上1年之后,系統升級會成為整個團隊一整年的KPI。

自建的收益:通常來說,很考驗企業的技術能力,企業的技術實力過硬可以快速上手、構建原型,并通過不斷完善逐漸完善平臺。另外,成熟的開源軟件通常有強大的技術社區支持。成百上千的程序員來自世界各地,共同維護一套軟件,保持其活力并使其不斷更新和修復問題。此外,自建軟件可以建立企業內部的專業知識。每個企業都有自己的需求,這些需求需要轉化為軟件功能。自建平臺讓企業內部利益相關者的溝通和協調更加順暢,能更好地服務于業務需求。

三、使用商業產品構建可觀測性

購買的成本:企業在購買第三方產品和服務時,通常會考慮以下因素:

  1. 一次性花費這么多錢,這個產品對業務有什么價值?
  2. 前期Proof of Concept(PoC)看起來很好,但實際使用會不會完全不同?
  3. 供應商是否能夠滿足新的業務需求,還是必須等待他們更新?如何確保購買的產品能夠持續滿足不斷變化的需求?
  4. 是否能夠避免供應商鎖定?如果因某種原因需要選擇新產品,需要多少時間和精力進行遷移和切換?

這些都是購買商業軟件需要考慮的成本因素。購買商業產品的流程通常比較漫長。經過測試、招投標等一系列過程后,如果產品無法滿足客戶的使用需求,或者因各種原因需要重新開始,那么整個過程所消耗的財務、時間和人力成本將是巨大的。另一方面,許多商業軟件按許可證收費。如果公司處于快速成長階段,需要考慮公司在發展壯大后繼續使用商業軟件的額外開銷。

購買的收益:如果購買和使用的是SaaS軟件,可以減少自建平臺所需的計算、存儲等資源投資和維護成本。即使購買的平臺需要安裝部署,通常也由供應商負責,完成初始配置后,即可開始使用。更重要的是,原本需要進行開源軟件二次開發的工程師可以將時間和精力投入到業務保障上,不再需要全面研究和掌握開源軟件的開發和維護。另一方面,選擇合適的商業產品也意味著將專業事務交給專業人士處理。你可能會獲得一個擁有專業知識的合作伙伴,在可觀測性領域有自己的積累,能夠為你提供專業服務,解決各種問題。如果自己去研究,可能需要數年才能達到這個水平。

相比之下,購買商業產品需要考慮的成本更少,因為這些產品通常都是一站式解決方案,可以滿足企業所有的可觀測性需求。此外,商業產品通常會提供更好的技術支持和服務,保證系統的穩定性和可靠性。綜上所述,企業在選擇自建還是購買可觀測性平臺時,需要綜合考慮各種成本和收益,做出明智的決策。

作者:Nicholas,InsightMon CTO

本文由@Nicholas 原創發布于人人都是產品經理,未經作者許可,禁止轉載。

題圖來自Unsplash,基于CC0協議。

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!