雲原生應用是一種在容器化環境中運行的應用,而且正在從根本上改變資料庫的構建和部署。以往,單體應用讓IT部門可針對相同數據共享存取,且確保跨應用的數據一致性;但缺點是缺乏彈性,增加新功能時需要花費時間與精力更新應用。將應用分解為一系列鬆散耦合組件的微服務是一種解決方案,透過提升更新的簡易性,協助企業加速業務轉型。
企業可善用雲原生的力量更快落實數據洞察、提高員工生產力、更好的客戶體驗和加快應用部署。
基於微服務的應用更具彈性。不同於整個單體應用癱瘓,每當微服務無法使用時,數據存取請求就會重新轉到其他微服務,讓應用仍然可運行。然而,企業必須理解沒有一體適用的方案,可滿足每個微服務的獨特數據儲存要求:
‧每個微服務都有不同的數據儲存方式。雖然微服務可以透過通用模式共享資料庫存取,但負責微服務的開發團隊傾向於部署自己的資料庫。這些資料庫的性質根據微服務的類別而有很大差異。一項微服務可能重度依賴文檔資料庫的讀時模式(Schema-on-read),而另一個可能需要關聯式資料庫的完整性層級。
‧每個微服務都有不同的數據模型、查詢或讀/寫模式。因此,開發團隊偏好為其特定的微服務優化數據儲存。有些微服務需要垂直擴充存取數據;有些微服務則需要橫向擴充存取非結構化數據。
‧每類微服務都有不同的數據儲存要求。微服務具有相互依賴性,讓延遲變得很重要。相互依賴的微服務的所有數據都需要相互協調,這需要IT團隊仔細規畫如何在微服務之間傳播更新,以確保數據一致性。
‧容器很普遍,但可能不適用於所有微服務。容器讓開發人員易於刪除和替換功能,所以大部分的微服務都是使用容器來構建的。然而,當使用容器構建狀態(stateful)應用時,挑戰就會出現。在默認情況下,在容器內創建的所有文件都儲存在可寫容器層上,這意味著當該容器不存在時,就無法保留數據。因為容器生命週期短,儲存數據的需求可能會為儲存系統帶來很大的I/O壓力。
‧容器的可寫層需要存取儲存驅動程式來管理文件系統。相較於傳統直接寫入主機文件系統的數據量相比,此方法因增加一個抽象層而影響效能。在某些情境裡,IT 團隊會嘗試使用外部儲存系統,儲存基於容器的微服務狀態。然而,這可能會增加一定程度的延遲,反而影響效能。
基於微服務的雲原生應用將從每層面改變IT的運作。目前,這種轉變的挑戰之一是微服務對數據儲存的影響。然而,這只是時間問題,與單一供應商合作透過集中管理儲存滿足所有要求,將變得至關重要。