2022-10-04 分類: 網(wǎng)站建設(shè)
Heroku 和 Docker 都可以讓開發(fā)人員能夠在容器內(nèi)開發(fā)、部署和運行應(yīng)用程序。容器是在單個操作系統(tǒng)內(nèi)核上運行的虛擬環(huán)境,使應(yīng)用程序能夠使用虛擬機或裸機計算機系統(tǒng)所需資源的一小部分來運行。容器還使我們能夠快速擴(kuò)展應(yīng)用程序,并輕松地從開發(fā)過渡到生產(chǎn)。雖然 Heroku 和 Docker 都為軟件部署和管理提供了一個容器化的解決方案,但是它們在實現(xiàn)和術(shù)語方面有很大的不同。每個系統(tǒng)也有著不同的利與弊。
什么是容器?
容器是使應(yīng)用程序能夠共享單個操作系統(tǒng)的軟件系統(tǒng)。容器系統(tǒng)通常由容器引擎、主機操作系統(tǒng)和處理器組成。
容器引擎
——在這種情況下,Docker 或 Heroku 是一種用于部署容器化應(yīng)用程序的托管環(huán)境。容器引擎管理內(nèi)核和內(nèi)存。它還管理各個應(yīng)用程序的空間隔離和安全性,并允許可伸縮性。
主機操作系統(tǒng) (OS)
——主機操作系統(tǒng) (通常是 Linux) 提供用戶界面,內(nèi)存等資源的管理,并為應(yīng)用程序提供服務(wù)。
處理器
——也稱為中央處理器,它基于來自操作系統(tǒng)和應(yīng)用程序的指令,負(fù)責(zé)執(zhí)行所有的任務(wù)。
容器的優(yōu)點
因為容器允許應(yīng)用程序共享資源,所以它們提供了以下幾個優(yōu)點:
降低成本
——容器通過允許應(yīng)用程序共享資源來降低成本。
增加的可靠性和健壯性
——容器使我們可以做到快速的故障切換和恢復(fù)。
可伸縮性
——容器使我們可以快速且容易地伸縮應(yīng)用程序的數(shù)量。
隔離
——容器在名稱空間中使用自己的資源隔離每個應(yīng)用程序。因此,盡管應(yīng)用程序共享資源,但它們在職能上是相互隔離的。這還意味著一個應(yīng)用程序中的故障是與其他應(yīng)用程序隔離的,從而使容器比虛擬機或裸金屬系統(tǒng)更安全。
持續(xù)集成
——因為容器很容易被摧毀和部署,所以它們支持迭代過程,比如敏捷。
可移植性
——容器非常便攜,允許從開發(fā)到生產(chǎn)的輕松轉(zhuǎn)換,在云環(huán)境中效果尤為顯著。
安全
——容器的模塊化設(shè)計增加了隔離性,使系統(tǒng)更難被攻擊,并限制了惡意軟件的影響。
容器進(jìn)程必須只向容器特定的文件系統(tǒng)寫入信息。
容器命名空間必須與私有內(nèi)部網(wǎng)隔離。
容器特權(quán)必須隔離。
Heroku
Heroku 是一個平臺即服務(wù) (PaaS) 平臺,是 2007 年創(chuàng)建的第一批云平臺之一。Heroku 最初只支持 Ruby,但現(xiàn)在已支持 Java、Node.js、Python、 PHP 等。Heroku 由以下組件組成:
BuildPack—Heroku BuildPack 是一組用于創(chuàng)建鏡像的腳本。BuildPack 確定應(yīng)用程序可以運行的語言,包括 Java、Python、Ruby 和其他語言。Heroku 為各種語言提供了默認(rèn)的 BuildPack ,開發(fā)人員也可以構(gòu)建自己的 BuildPack。
Slug——運行 BuildPack 時,它會創(chuàng)建應(yīng)用程序的打包副本,稱為 Slug。Slugs 包含運行應(yīng)用程序所需的所有功能,可以快速輕松地部署。
根據(jù) Heroku 的說法,“Dynos 是隔離的、虛擬化的 Linux 容器,用于根據(jù)用戶指定的命令執(zhí)行代碼”。使用 Dynos,可以根據(jù)資源需求將應(yīng)用程序擴(kuò)展到任何級別。
可為 Heroku 購買 Add-Ons-Preconfigured 構(gòu)建塊,以構(gòu)建更復(fù)雜的應(yīng)用程序。
命令行界面 (CLI)——用來管理 Heroku 容器的命令行界面。
有沒有考慮過將 DeployPlace 作為 Heroku 的替代方案以避免被供應(yīng)商鎖定?
Docker
Docker 是一個開源工具,用于在容器中創(chuàng)建、管理、部署和運行應(yīng)用程序。與 Heroku 必須在自己的云環(huán)境中運行不同,Docker 可以安裝在筆記本電腦、服務(wù)器或如 Amazon Web Services (AWS) 之類基于云的環(huán)境中。Docker 由以下高級組件組成:
Dockerfile——Dockerfile 是一組用于構(gòu)建 Docker 鏡像的命令 (參見下文)。Dockerfiles 也代表著 Docker 鏡像的最終配置。
Docker 鏡像——通過運行 Dockerfile 創(chuàng)建的 Docker 鏡像 (參見上文)。Docker 鏡像是一個多層文件,包含運行應(yīng)用程序所需的所有資源、依賴項、數(shù)據(jù)、文件和設(shè)置。每次啟動一個 Docker 鏡像時,它都會創(chuàng)建一個同一個應(yīng)用程序的容器,從而提供了簡單的可伸縮性。
Index——Docker 圖像可以上傳到 Index 分享給 Docker 社區(qū)。這樣可以讓其他用戶基于從 Index 下載的單個 Docker 鏡像組件構(gòu)建復(fù)雜的應(yīng)用程序。
命令行界面(CLI)——與 Heroku 類似,Docker 提供了用于管理容器的 CLI。
Docker 和 Heroku 術(shù)語
Docker vs Heroku
雖然 Docker 和 Heroku 有一個共同的概念,即應(yīng)用程序的容器化,但是這兩個平臺之間有著一些主要的區(qū)別。Heroku 提供了運行應(yīng)用程序的容器和托管應(yīng)用程序的基礎(chǔ)設(shè)施。換句話說,Heroku 提供了容器化的所有優(yōu)點,但是你也必須在 Heroku 平臺上運行它。這使得 Heroku 非常容易搭建和運行,但是同時也有一些限制。與 Docker 不同,Heroku 不能在本地服務(wù)器或基于私有云的服務(wù)上運行。
Heroku
Heroku 的優(yōu)點:
Heroku 易于搭建、實施和部署。Heroku 管理硬件、軟件和其他資源,使開發(fā)人員可以幾乎只專注于開發(fā)他們的應(yīng)用程序。
Heroku 支持多種語言,包括Ruby、Java、Node.js、Scala、Clojure、Python、PHP和Go。
Heroku 是一個通曉多種語言的平臺——通過使用各種構(gòu)建包,開發(fā)人員可以在幾乎任何編程語言中部署應(yīng)用程序。
Heroku Dynos 允許簡單的開發(fā)和可用性——因為由 Heroku 管理和運行應(yīng)用程序,將開發(fā)人員從操作系統(tǒng)和其他系統(tǒng)配置的管理中解放出來。
Heroku 允許即時的可伸縮性——通過增加或減少 Dynos 的數(shù)量,可以很容易地按比例增加或減少 Heroku。
Heroku 的缺點:
在 Heroku 上運行的應(yīng)用程序只能在 Heroku 平臺上運行。因此,Heroku 不能在內(nèi)部服務(wù)器或私有云上運行。了解一下 DeployPlace,以避免被供應(yīng)商鎖定。
Heroku 應(yīng)用程序只能使用 Linux 操作系統(tǒng)運行。
雖然 Heroku 提供了一個免費的版本,但標(biāo)準(zhǔn)套餐每月 25 美元起。
Heroku 的流言:
Heroku 太貴了。許多公司更喜歡尋找、招聘和培訓(xùn) DevOps 工程師來搭建和支持部署基礎(chǔ)設(shè)施。招聘、培訓(xùn)、工資和辦公的成本常常被忽視。在主要關(guān)注開發(fā)更好的產(chǎn)品的同時,DevOps 團(tuán)隊的招募和管理可能會被忽視。
有時 Heroku 被認(rèn)為不夠安全。但是 Heroku 比你自主研發(fā)的部署基礎(chǔ)設(shè)施安全得多。Heroku 有一個單獨的團(tuán)隊處理安全問題。Heroku 的安全特性已經(jīng)在數(shù)千個實際客戶的應(yīng)用程序上進(jìn)行了測試。對于大多數(shù)不需要額外認(rèn)證的行業(yè)來說,Heroku 的安全性絕對沒有問題。
Heroku 的陷阱
Heroku 的客戶如果想通過免費的途徑省錢,就會使用較低的成本級別,但在系統(tǒng)為了節(jié)省公司資金關(guān)閉資源的時候,可能會遭遇“休眠應(yīng)用”(https://blog.heroku.com/app_sleeping_on_heroku)。對于不知情的用戶來說,這種意外很是令人不快,這么度量簡直太不方便了!它根本就是在“故意停機”,你花了錢卻不能掌控它!
服務(wù)器和進(jìn)程(Heroku 在多租戶共享服務(wù)器中存儲實例的地方)也缺乏所有權(quán)。從某種意義上說,客戶實際上沒有選擇服務(wù)器部署在何處的權(quán)利。
Docker
Docker 的優(yōu)點:
幾乎可以在任何環(huán)境下運行—docker 可以在內(nèi)部服務(wù)器、私有云系統(tǒng)甚至是在 Heroku PaaS 本身上運行。
可定制——因為 Docker 幾乎可以在任何平臺上運行,所以可以對它進(jìn)行定制以滿足你的所有需求。
安全性——因為 Docker 可以在內(nèi)部服務(wù)器上運行,所以它的安全性可以讓你滿意。
操作系統(tǒng)——docker 可以運行在各種操作系統(tǒng)上,包括 Linux、Windows 和其他操作系統(tǒng)。
成本——AWS 上的 Docker 相對便宜,大約每月 4.75 美元起。
Docker 的缺點:
很難配置——與 Heroku 相比,Docker 的靈活性意味著它需要更多的配置才能正確設(shè)置。
Docker 的陷阱
開發(fā)團(tuán)隊有時會遇到 Docker 的問題,其中許多問題與該技術(shù)的開源本質(zhì)有關(guān)。在許多不同類型的用例中,覆蓋網(wǎng)絡(luò)會導(dǎo)致延遲。這種延遲可能會成為一個問題,特別是對于那些需要接近裸機地運轉(zhuǎn)才能實現(xiàn)實時目標(biāo)的公司來說。
Docker 的另一個主要問題是需要將有價值的數(shù)據(jù)導(dǎo)入 Docker 容器鏡像,并將其保存在鏡像中。由于容器通常是為無狀態(tài)功能構(gòu)建的,因此會丟失本要持久保存的數(shù)據(jù)(https://docs.docker.com/v17.09/docker-for-ibm-cloud/persistent-data-volumes/)。當(dāng)這種情況發(fā)生時,就會變得非常麻煩。專家和經(jīng)驗豐富的開發(fā)人員總是警告不要將持久數(shù)據(jù)放在不應(yīng)該放的地方,每次都敦促其他人“堅守陣地”。
比較 Docker 和 Heroku
在 Heroku 上部署 Docker
通過在 Heroku 的基礎(chǔ)設(shè)施上部署 Docker,可以同時享受這兩個領(lǐng)域的好處。Heroku 的平臺簡化了設(shè)置和部署,并且?guī)缀鯖]有風(fēng)險。雖然與 AWS 這樣的平臺相比,在 Heroku 上部署的初始費用更昂貴,但是許多公司最終在 Heroku 上節(jié)省了資金,因為與其他平臺相比,節(jié)省了所有在配置上要花費的時間。
在 Heroku 上部署 Docker 的優(yōu)點包括:
開發(fā)環(huán)境和生產(chǎn)環(huán)境之間的差異更小。
更好地控制如何構(gòu)建包。例如,如果你的應(yīng)用程序使用了一門不使用標(biāo)準(zhǔn) buildpack 的語言,那么你可以在 Docker 中構(gòu)建它。
在 Heroku 平臺上部署 Docker 的主要缺點是丟棄了一些 Heroku 的自動配置特性,承擔(dān)了更多的責(zé)任。如果使用標(biāo)準(zhǔn)的 slug 編譯器和默認(rèn)的 stack,Heroku 將自動檢查安全性更新,更新 stack,然后自動遷移應(yīng)用程序。但是,如果使用 Docker 容器,Heroku 就不能這樣做了,責(zé)任就落在了管理應(yīng)用程序的人的身上。
哪些公司在使用 Docker 和 Heroku?
Docker 的客戶
Docker 在 G2Crowd 上的評分是 4.4 分 (滿分 5 分),共有 200 名用戶做了評價。許多公司選擇 Docker 以在容器中快速部署服務(wù)器環(huán)境,而不需要創(chuàng)建虛擬機。
ADP(https://www.adp.com/)——它使用 Docker 建立一個安全的軟件供應(yīng)鏈,為 113 個國家的近 4000 萬活躍用戶服務(wù)。
ALM. Brand(https://www.almbrand.dk/)——使用 Docker 企業(yè)版精簡了它的 Oracle WebLogic 應(yīng)用程序,并構(gòu)建了新的應(yīng)用程序。
ASSA ABLOY(https://www.assaabloy.com/)——ASSA ABLOY 是一家著名的鎖具制造商,利用 Docker 企業(yè)版來加速其電子接口和鎖具硬件的市場交付。
Baker Hughes GE(https://www.bhge.com/)——使用 Docker,將部署時間從 6 個月減少到 1 個小時。
GlaxoSmithKline(https://www.gsk.com/)——使用 Docker 企業(yè)版來加速藥物配送模型和改進(jìn)研究。
Visa(https://www.visa.com/)——Visa 利用 Docker 對其支付處理應(yīng)用進(jìn)行了重構(gòu),最終實現(xiàn)了 10 倍的可擴(kuò)展性提升。
Heroku 的客戶
Heroku 經(jīng)常被初創(chuàng)公司和行業(yè)領(lǐng)導(dǎo)者選擇,用于快速構(gòu)建強大的可以快速發(fā)布的數(shù)據(jù)驅(qū)動應(yīng)用程序。Docker 在 G2Crowd 上的評分是 4.3 分 (滿分 5 分),共有 76 名用戶做出了評價。
Altus Assessments(https://altusassessments.com/)——Altus Assessments 使用 Heroku 來運行成千上萬的數(shù)據(jù)密集型測試。
SwimTopia(https://www.swimtopia.com//)——Heroku 幫助 SwimTopia 在高峰期無縫地伸縮。
SHIFT Commerce(https://www.shiftcommerce.com/)——使用 Heroku 電子接口并聚集硬件市場,使 SHIFT Commerce 的快速增長成為可能。
ClickFunnels(https://www.clickfunnels.com/)——ClickFunnels 運用 Heroku 靈活的數(shù)據(jù)服務(wù)抓住了增長的機會。
Moneytree(https://www.getmoneytree.com/)——Moneytree 專注于他們的業(yè)務(wù),而 Heroku 負(fù)責(zé)數(shù)據(jù)安全和遵從性
DrivenData(https://www.drivendata.org/)——Heroku 為 DrivenData 的數(shù)據(jù)科學(xué)應(yīng)用提供了一個安全的平臺。
總結(jié)
Heroku 和 Docker 都是容器化的極佳選擇。它們都可以運行各種語言的應(yīng)用程序,包括 Java、Ruby、PHP 和其他語言。它們還提供了簡單的可伸縮性和部署。
Heroku 和 Docker 之間的主要區(qū)別在于它們的實現(xiàn)。Heroku 和 Docker 都使用容器進(jìn)行操作,容器是一個自包含的代碼實例,包含運行應(yīng)用程序所需的所有內(nèi)容,包括代碼、資源和工具。但是,Heroku 在它自己的 Heroku 部署流水線中提供容器。這使得 Heroku 非常容易配置,因為包、容器和環(huán)境整體上都已經(jīng)為你配置好了。Heroku 非常適合希望無需復(fù)雜的配置即可在一個固定的環(huán)境中部署應(yīng)用程序的新開發(fā)人員或者小公司。
另一方面,Docker 提供了一個容器化模型,它可以運行在各種各樣的平臺上,從內(nèi)部服務(wù)器到私有云、AWS 甚至是 Heroku 環(huán)境本身。因此,與 Heroku 相比,Docker 在部署方面要靈活得多。然而,伴隨這種靈活性而來的是更復(fù)雜的部署過程。
因此,Docker 更適合具有更具體配置要求的公司。例如,如果你的應(yīng)用程序需要一個非常安全的環(huán)境,你可以運行 Docker on-premise 并根據(jù)你的規(guī)范配置安全性。更大的靈活性也帶來了一定程度的復(fù)雜性。Heroku 基本上可以直接運行,而 Docker 則要根據(jù)你的需要進(jìn)行更多配置。
在某些情況下,開發(fā)人員可以通過在 Heroku 上部署 Docker 來利用兩個平臺的特性。這減輕了 Docker 在其他 PaaS 平臺上帶來的許多部署和實現(xiàn)難題,但是與純 Heroku 部署相比,它確實將更多的責(zé)任分配給了應(yīng)用程序管理者。另一方面,更大的責(zé)任也使你能夠更好地控制應(yīng)用程序。
網(wǎng)站題目:企業(yè)容器化如何選型?全方位對比Heroku與Docker
文章地址:http://jinyejixie.com/news1/201801.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、手機網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、網(wǎng)站改版、定制網(wǎng)站、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容