三種在云中利用開源的方法
許多公共云服務至少部分基于開源平臺或工具,但云服務本身并不是開源的。然而,這并不意味著使用云意味著錯過了開源的好處。通過正確的方法,你可以同時享受開源和云計算的便利。
開源與云:一段麻煩的歷史
當云計算首次出現(xiàn)時,它在自由開源軟件的倡導者中引發(fā)了不少擔憂。例如,GNU創(chuàng)始人Richard Stallman警告說,云平臺“讓其他人掌握了你的計算能力”。
他提出的觀點是,當你使用云服務或軟件即服務(SaaS)應用程序時,你使用的是一個由外部供應商控制的計算環(huán)境。云供應商很少發(fā)布其服務和應用程序的源代碼。即使他們這樣做了,用戶也無法修改代碼來改變服務的工作方式、控制它如何管理他們的數(shù)據(jù),或者享受與在自己的計算機或服務器上運行開源軟件相關的其他基本自由。
開源和私有云
解決這個難題的一種方法是使用開源平臺(如OpenStack或CloudStack)構(gòu)建私有云。
如果你有自己建立和管理云計算環(huán)境所需的資源,這是一個好主意。但這是相當多的工作。它還要求有自己的托管基礎設施。這樣你錯過了公共云的便利性、無限的可擴展性和無資本支出的好處。
在公共云上運行開源軟件
在云中運行開源軟件還有另一種方法,它提供了開源的大部分好處和公共云的大部分好處:使用公共云基礎設施托管自己管理的開源軟件。
換句話說,你可以在AWS EC2實例或Azure虛擬機上運行任何你想要的開源應用程序,比如Apache HTTP服務器、WordPress或Elasticsearch。
當然,你不會完全控制底層基礎設施。你也不能阻止公共云提供商收集關于你在其服務器上所做工作的數(shù)據(jù)。在這些方面,如果在自己的私有服務器上運行開源,你將無法充分利用隱私和可擴展性。
折衷的是,你可以無限制地擴展主機基礎設施,只需要為實際使用的托管資源付費,而且你不必預先購買任何服務器來運行應用程序。
開源即托管服務
第三種方法是使用云供應商提供的托管服務在云中運行開源軟件。例如,你可以通過AWS EKS或Azure AKS運行Kubernetes。或者,你可以使用AWS OpenSearch,而不是自己設置Elasticsearch(及相關軟件)。
開源作為公共云中的托管服務的好處在于它簡單方便。你不必自己配置基礎設施或安裝開源軟件。
另一方面,你失去了開源帶來的所有靈活性。你只能以云供應商支持的方式使用軟件,修改軟件配置的能力通常是有限的。當然,你不能修改軟件的源代碼。換句話說,你最終會遇到“軟件作為服務替代品”的情況。
從好的方面來看,有人可能會說,在公共云中使用開源作為托管服務可能是以授予用戶更多自由的方式使用相同開源平臺的墊腳石。例如,如果你運行EKS,可能最終會決定自己部署Kubernetes,而不是依賴托管服務?;蛘哂幸惶炷憧赡軙腛penSearch轉(zhuǎn)向一個自我管理的ELK棧。
結(jié)論
無論你如何劃分,在云中運行開源,而不是在你自己的私有基礎設施上,都有一些缺點。它可能需要比其他基于云的部署選項付出更多的努力,而且你對軟件和數(shù)據(jù)的控制可能會減少。
但是,考慮到不同的部署方法,通??梢栽谠浦幸砸环N讓你實現(xiàn)大部分目標的方式運行開源,同時最小化缺點。你只需要選擇正確的策略。