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