企業(yè)容器化如何選型?全方位對(duì)比Heroku與Docker

2022-10-04    分類: 網(wǎng)站建設(shè)

Heroku 和 Docker 都可以讓開發(fā)人員能夠在容器內(nèi)開發(fā)、部署和運(yùn)行應(yīng)用程序。容器是在單個(gè)操作系統(tǒng)內(nèi)核上運(yùn)行的虛擬環(huán)境,使應(yīng)用程序能夠使用虛擬機(jī)或裸機(jī)計(jì)算機(jī)系統(tǒng)所需資源的一小部分來運(yùn)行。容器還使我們能夠快速擴(kuò)展應(yīng)用程序,并輕松地從開發(fā)過渡到生產(chǎn)。雖然 Heroku 和 Docker 都為軟件部署和管理提供了一個(gè)容器化的解決方案,但是它們?cè)趯?shí)現(xiàn)和術(shù)語(yǔ)方面有很大的不同。每個(gè)系統(tǒng)也有著不同的利與弊。

什么是容器?

容器是使應(yīng)用程序能夠共享單個(gè)操作系統(tǒng)的軟件系統(tǒng)。容器系統(tǒng)通常由容器引擎、主機(jī)操作系統(tǒng)和處理器組成。

容器引擎

——在這種情況下,Docker 或 Heroku 是一種用于部署容器化應(yīng)用程序的托管環(huán)境。容器引擎管理內(nèi)核和內(nèi)存。它還管理各個(gè)應(yīng)用程序的空間隔離和安全性,并允許可伸縮性。

主機(jī)操作系統(tǒng) (OS)

——主機(jī)操作系統(tǒng) (通常是 Linux) 提供用戶界面,內(nèi)存等資源的管理,并為應(yīng)用程序提供服務(wù)。

處理器

——也稱為中央處理器,它基于來自操作系統(tǒng)和應(yīng)用程序的指令,負(fù)責(zé)執(zhí)行所有的任務(wù)。

容器的優(yōu)點(diǎn)

因?yàn)槿萜髟试S應(yīng)用程序共享資源,所以它們提供了以下幾個(gè)優(yōu)點(diǎn):

降低成本

——容器通過允許應(yīng)用程序共享資源來降低成本。

增加的可靠性和健壯性

——容器使我們可以做到快速的故障切換和恢復(fù)。

可伸縮性

——容器使我們可以快速且容易地伸縮應(yīng)用程序的數(shù)量。

隔離

——容器在名稱空間中使用自己的資源隔離每個(gè)應(yīng)用程序。因此,盡管應(yīng)用程序共享資源,但它們?cè)诼毮苌鲜窍嗷ジ綦x的。這還意味著一個(gè)應(yīng)用程序中的故障是與其他應(yīng)用程序隔離的,從而使容器比虛擬機(jī)或裸金屬系統(tǒng)更安全。

持續(xù)集成

——因?yàn)槿萜骱苋菀妆淮輾Ш筒渴?,所以它們支持迭代過程,比如敏捷。

可移植性

——容器非常便攜,允許從開發(fā)到生產(chǎn)的輕松轉(zhuǎn)換,在云環(huán)境中效果尤為顯著。

安全

——容器的模塊化設(shè)計(jì)增加了隔離性,使系統(tǒng)更難被攻擊,并限制了惡意軟件的影響。

容器進(jìn)程必須只向容器特定的文件系統(tǒng)寫入信息。

容器命名空間必須與私有內(nèi)部網(wǎng)隔離。

容器特權(quán)必須隔離。

Heroku

企業(yè)容器化如何選型?全方位對(duì)比 Heroku 與 Docker

Heroku 是一個(gè)平臺(tái)即服務(wù) (PaaS) 平臺(tái),是 2007 年創(chuàng)建的第一批云平臺(tái)之一。Heroku 最初只支持 Ruby,但現(xiàn)在已支持 Java、Node.js、Python、 PHP 等。Heroku 由以下組件組成:

BuildPack—Heroku BuildPack 是一組用于創(chuàng)建鏡像的腳本。BuildPack 確定應(yīng)用程序可以運(yùn)行的語(yǔ)言,包括 Java、Python、Ruby 和其他語(yǔ)言。Heroku 為各種語(yǔ)言提供了默認(rèn)的 BuildPack ,開發(fā)人員也可以構(gòu)建自己的 BuildPack。

Slug——運(yùn)行 BuildPack 時(shí),它會(huì)創(chuàng)建應(yīng)用程序的打包副本,稱為 Slug。Slugs 包含運(yùn)行應(yīng)用程序所需的所有功能,可以快速輕松地部署。

根據(jù) Heroku 的說法,“Dynos 是隔離的、虛擬化的 Linux 容器,用于根據(jù)用戶指定的命令執(zhí)行代碼”。使用 Dynos,可以根據(jù)資源需求將應(yīng)用程序擴(kuò)展到任何級(jí)別。

可為 Heroku 購(gòu)買 Add-Ons-Preconfigured 構(gòu)建塊,以構(gòu)建更復(fù)雜的應(yīng)用程序。

命令行界面 (CLI)——用來管理 Heroku 容器的命令行界面。

有沒有考慮過將 DeployPlace 作為 Heroku 的替代方案以避免被供應(yīng)商鎖定?

Docker

企業(yè)容器化如何選型?全方位對(duì)比 Heroku 與 Docker

Docker 是一個(gè)開源工具,用于在容器中創(chuàng)建、管理、部署和運(yùn)行應(yīng)用程序。與 Heroku 必須在自己的云環(huán)境中運(yùn)行不同,Docker 可以安裝在筆記本電腦、服務(wù)器或如 Amazon Web Services (AWS) 之類基于云的環(huán)境中。Docker 由以下高級(jí)組件組成:

Dockerfile——Dockerfile 是一組用于構(gòu)建 Docker 鏡像的命令 (參見下文)。Dockerfiles 也代表著 Docker 鏡像的最終配置。

Docker 鏡像——通過運(yùn)行 Dockerfile 創(chuàng)建的 Docker 鏡像 (參見上文)。Docker 鏡像是一個(gè)多層文件,包含運(yùn)行應(yīng)用程序所需的所有資源、依賴項(xiàng)、數(shù)據(jù)、文件和設(shè)置。每次啟動(dòng)一個(gè) Docker 鏡像時(shí),它都會(huì)創(chuàng)建一個(gè)同一個(gè)應(yīng)用程序的容器,從而提供了簡(jiǎn)單的可伸縮性。

Index——Docker 圖像可以上傳到 Index 分享給 Docker 社區(qū)。這樣可以讓其他用戶基于從 Index 下載的單個(gè) Docker 鏡像組件構(gòu)建復(fù)雜的應(yīng)用程序。

命令行界面(CLI)——與 Heroku 類似,Docker 提供了用于管理容器的 CLI。

Docker 和 Heroku 術(shù)語(yǔ)

企業(yè)容器化如何選型?全方位對(duì)比 Heroku 與 Docker

Docker vs Heroku

雖然 Docker 和 Heroku 有一個(gè)共同的概念,即應(yīng)用程序的容器化,但是這兩個(gè)平臺(tái)之間有著一些主要的區(qū)別。Heroku 提供了運(yùn)行應(yīng)用程序的容器和托管應(yīng)用程序的基礎(chǔ)設(shè)施。換句話說,Heroku 提供了容器化的所有優(yōu)點(diǎn),但是你也必須在 Heroku 平臺(tái)上運(yùn)行它。這使得 Heroku 非常容易搭建和運(yùn)行,但是同時(shí)也有一些限制。與 Docker 不同,Heroku 不能在本地服務(wù)器或基于私有云的服務(wù)上運(yùn)行。

Heroku

Heroku 的優(yōu)點(diǎn):

Heroku 易于搭建、實(shí)施和部署。Heroku 管理硬件、軟件和其他資源,使開發(fā)人員可以幾乎只專注于開發(fā)他們的應(yīng)用程序。

Heroku 支持多種語(yǔ)言,包括Ruby、Java、Node.js、Scala、Clojure、Python、PHP和Go。

Heroku 是一個(gè)通曉多種語(yǔ)言的平臺(tái)——通過使用各種構(gòu)建包,開發(fā)人員可以在幾乎任何編程語(yǔ)言中部署應(yīng)用程序。

Heroku Dynos 允許簡(jiǎn)單的開發(fā)和可用性——因?yàn)橛?Heroku 管理和運(yùn)行應(yīng)用程序,將開發(fā)人員從操作系統(tǒng)和其他系統(tǒng)配置的管理中解放出來。

Heroku 允許即時(shí)的可伸縮性——通過增加或減少 Dynos 的數(shù)量,可以很容易地按比例增加或減少 Heroku。

Heroku 的缺點(diǎn):

在 Heroku 上運(yùn)行的應(yīng)用程序只能在 Heroku 平臺(tái)上運(yùn)行。因此,Heroku 不能在內(nèi)部服務(wù)器或私有云上運(yùn)行。了解一下 DeployPlace,以避免被供應(yīng)商鎖定。

Heroku 應(yīng)用程序只能使用 Linux 操作系統(tǒng)運(yùn)行。

雖然 Heroku 提供了一個(gè)免費(fèi)的版本,但標(biāo)準(zhǔn)套餐每月 25 美元起。

Heroku 的流言:

Heroku 太貴了。許多公司更喜歡尋找、招聘和培訓(xùn) DevOps 工程師來搭建和支持部署基礎(chǔ)設(shè)施。招聘、培訓(xùn)、工資和辦公的成本常常被忽視。在主要關(guān)注開發(fā)更好的產(chǎn)品的同時(shí),DevOps 團(tuán)隊(duì)的招募和管理可能會(huì)被忽視。

有時(shí) Heroku 被認(rèn)為不夠安全。但是 Heroku 比你自主研發(fā)的部署基礎(chǔ)設(shè)施安全得多。Heroku 有一個(gè)單獨(dú)的團(tuán)隊(duì)處理安全問題。Heroku 的安全特性已經(jīng)在數(shù)千個(gè)實(shí)際客戶的應(yīng)用程序上進(jìn)行了測(cè)試。對(duì)于大多數(shù)不需要額外認(rèn)證的行業(yè)來說,Heroku 的安全性絕對(duì)沒有問題。

Heroku 的陷阱

Heroku 的客戶如果想通過免費(fèi)的途徑省錢,就會(huì)使用較低的成本級(jí)別,但在系統(tǒng)為了節(jié)省公司資金關(guān)閉資源的時(shí)候,可能會(huì)遭遇“休眠應(yīng)用”(https://blog.heroku.com/app_sleeping_on_heroku)。對(duì)于不知情的用戶來說,這種意外很是令人不快,這么度量簡(jiǎn)直太不方便了!它根本就是在“故意停機(jī)”,你花了錢卻不能掌控它!

服務(wù)器和進(jìn)程(Heroku 在多租戶共享服務(wù)器中存儲(chǔ)實(shí)例的地方)也缺乏所有權(quán)。從某種意義上說,客戶實(shí)際上沒有選擇服務(wù)器部署在何處的權(quán)利。

Docker

Docker 的優(yōu)點(diǎn):

幾乎可以在任何環(huán)境下運(yùn)行—docker 可以在內(nèi)部服務(wù)器、私有云系統(tǒng)甚至是在 Heroku PaaS 本身上運(yùn)行。

可定制——因?yàn)?Docker 幾乎可以在任何平臺(tái)上運(yùn)行,所以可以對(duì)它進(jìn)行定制以滿足你的所有需求。

安全性——因?yàn)?Docker 可以在內(nèi)部服務(wù)器上運(yùn)行,所以它的安全性可以讓你滿意。

操作系統(tǒng)——docker 可以運(yùn)行在各種操作系統(tǒng)上,包括 Linux、Windows 和其他操作系統(tǒng)。

成本——AWS 上的 Docker 相對(duì)便宜,大約每月 4.75 美元起。

Docker 的缺點(diǎn):

很難配置——與 Heroku 相比,Docker 的靈活性意味著它需要更多的配置才能正確設(shè)置。

Docker 的陷阱

開發(fā)團(tuán)隊(duì)有時(shí)會(huì)遇到 Docker 的問題,其中許多問題與該技術(shù)的開源本質(zhì)有關(guān)。在許多不同類型的用例中,覆蓋網(wǎng)絡(luò)會(huì)導(dǎo)致延遲。這種延遲可能會(huì)成為一個(gè)問題,特別是對(duì)于那些需要接近裸機(jī)地運(yùn)轉(zhuǎn)才能實(shí)現(xiàn)實(shí)時(shí)目標(biāo)的公司來說。

Docker 的另一個(gè)主要問題是需要將有價(jià)值的數(shù)據(jù)導(dǎo)入 Docker 容器鏡像,并將其保存在鏡像中。由于容器通常是為無狀態(tài)功能構(gòu)建的,因此會(huì)丟失本要持久保存的數(shù)據(jù)(https://docs.docker.com/v17.09/docker-for-ibm-cloud/persistent-data-volumes/)。當(dāng)這種情況發(fā)生時(shí),就會(huì)變得非常麻煩。專家和經(jīng)驗(yàn)豐富的開發(fā)人員總是警告不要將持久數(shù)據(jù)放在不應(yīng)該放的地方,每次都敦促其他人“堅(jiān)守陣地”。

比較 Docker 和 Heroku

企業(yè)容器化如何選型?全方位對(duì)比 Heroku 與 Docker

在 Heroku 上部署 Docker

通過在 Heroku 的基礎(chǔ)設(shè)施上部署 Docker,可以同時(shí)享受這兩個(gè)領(lǐng)域的好處。Heroku 的平臺(tái)簡(jiǎn)化了設(shè)置和部署,并且?guī)缀鯖]有風(fēng)險(xiǎn)。雖然與 AWS 這樣的平臺(tái)相比,在 Heroku 上部署的初始費(fèi)用更昂貴,但是許多公司最終在 Heroku 上節(jié)省了資金,因?yàn)榕c其他平臺(tái)相比,節(jié)省了所有在配置上要花費(fèi)的時(shí)間。

在 Heroku 上部署 Docker 的優(yōu)點(diǎn)包括:

開發(fā)環(huán)境和生產(chǎn)環(huán)境之間的差異更小。

更好地控制如何構(gòu)建包。例如,如果你的應(yīng)用程序使用了一門不使用標(biāo)準(zhǔn) buildpack 的語(yǔ)言,那么你可以在 Docker 中構(gòu)建它。

在 Heroku 平臺(tái)上部署 Docker 的主要缺點(diǎn)是丟棄了一些 Heroku 的自動(dòng)配置特性,承擔(dān)了更多的責(zé)任。如果使用標(biāo)準(zhǔn)的 slug 編譯器和默認(rèn)的 stack,Heroku 將自動(dòng)檢查安全性更新,更新 stack,然后自動(dòng)遷移應(yīng)用程序。但是,如果使用 Docker 容器,Heroku 就不能這樣做了,責(zé)任就落在了管理應(yīng)用程序的人的身上。

哪些公司在使用 Docker 和 Heroku?

Docker 的客戶

Docker 在 G2Crowd 上的評(píng)分是 4.4 分 (滿分 5 分),共有 200 名用戶做了評(píng)價(jià)。許多公司選擇 Docker 以在容器中快速部署服務(wù)器環(huán)境,而不需要?jiǎng)?chuàng)建虛擬機(jī)。

ADP(https://www.adp.com/)——它使用 Docker 建立一個(gè)安全的軟件供應(yīng)鏈,為 113 個(gè)國(guó)家的近 4000 萬(wàn)活躍用戶服務(wù)。

ALM. Brand(https://www.almbrand.dk/)——使用 Docker 企業(yè)版精簡(jiǎn)了它的 Oracle WebLogic 應(yīng)用程序,并構(gòu)建了新的應(yīng)用程序。

ASSA ABLOY(https://www.assaabloy.com/)——ASSA ABLOY 是一家著名的鎖具制造商,利用 Docker 企業(yè)版來加速其電子接口和鎖具硬件的市場(chǎng)交付。

Baker Hughes GE(https://www.bhge.com/)——使用 Docker,將部署時(shí)間從 6 個(gè)月減少到 1 個(gè)小時(shí)。

GlaxoSmithKline(https://www.gsk.com/)——使用 Docker 企業(yè)版來加速藥物配送模型和改進(jìn)研究。

Visa(https://www.visa.com/)——Visa 利用 Docker 對(duì)其支付處理應(yīng)用進(jìn)行了重構(gòu),最終實(shí)現(xiàn)了 10 倍的可擴(kuò)展性提升。

Heroku 的客戶

Heroku 經(jīng)常被初創(chuàng)公司和行業(yè)領(lǐng)導(dǎo)者選擇,用于快速構(gòu)建強(qiáng)大的可以快速發(fā)布的數(shù)據(jù)驅(qū)動(dòng)應(yīng)用程序。Docker 在 G2Crowd 上的評(píng)分是 4.3 分 (滿分 5 分),共有 76 名用戶做出了評(píng)價(jià)。

Altus Assessments(https://altusassessments.com/)——Altus Assessments 使用 Heroku 來運(yùn)行成千上萬(wàn)的數(shù)據(jù)密集型測(cè)試。

SwimTopia(https://www.swimtopia.com//)——Heroku 幫助 SwimTopia 在高峰期無縫地伸縮。

SHIFT Commerce(https://www.shiftcommerce.com/)——使用 Heroku 電子接口并聚集硬件市場(chǎng),使 SHIFT Commerce 的快速增長(zhǎng)成為可能。

ClickFunnels(https://www.clickfunnels.com/)——ClickFunnels 運(yùn)用 Heroku 靈活的數(shù)據(jù)服務(wù)抓住了增長(zhǎng)的機(jī)會(huì)。

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)用提供了一個(gè)安全的平臺(tái)。

總結(jié)

Heroku 和 Docker 都是容器化的極佳選擇。它們都可以運(yùn)行各種語(yǔ)言的應(yīng)用程序,包括 Java、Ruby、PHP 和其他語(yǔ)言。它們還提供了簡(jiǎn)單的可伸縮性和部署。

Heroku 和 Docker 之間的主要區(qū)別在于它們的實(shí)現(xiàn)。Heroku 和 Docker 都使用容器進(jìn)行操作,容器是一個(gè)自包含的代碼實(shí)例,包含運(yùn)行應(yīng)用程序所需的所有內(nèi)容,包括代碼、資源和工具。但是,Heroku 在它自己的 Heroku 部署流水線中提供容器。這使得 Heroku 非常容易配置,因?yàn)榘?、容器和環(huán)境整體上都已經(jīng)為你配置好了。Heroku 非常適合希望無需復(fù)雜的配置即可在一個(gè)固定的環(huán)境中部署應(yīng)用程序的新開發(fā)人員或者小公司。

另一方面,Docker 提供了一個(gè)容器化模型,它可以運(yùn)行在各種各樣的平臺(tái)上,從內(nèi)部服務(wù)器到私有云、AWS 甚至是 Heroku 環(huán)境本身。因此,與 Heroku 相比,Docker 在部署方面要靈活得多。然而,伴隨這種靈活性而來的是更復(fù)雜的部署過程。

因此,Docker 更適合具有更具體配置要求的公司。例如,如果你的應(yīng)用程序需要一個(gè)非常安全的環(huán)境,你可以運(yùn)行 Docker on-premise 并根據(jù)你的規(guī)范配置安全性。更大的靈活性也帶來了一定程度的復(fù)雜性。Heroku 基本上可以直接運(yùn)行,而 Docker 則要根據(jù)你的需要進(jìn)行更多配置。

在某些情況下,開發(fā)人員可以通過在 Heroku 上部署 Docker 來利用兩個(gè)平臺(tái)的特性。這減輕了 Docker 在其他 PaaS 平臺(tái)上帶來的許多部署和實(shí)現(xiàn)難題,但是與純 Heroku 部署相比,它確實(shí)將更多的責(zé)任分配給了應(yīng)用程序管理者。另一方面,更大的責(zé)任也使你能夠更好地控制應(yīng)用程序。

Docker企業(yè)容器化Heroku

網(wǎng)站題目:企業(yè)容器化如何選型?全方位對(duì)比Heroku與Docker
文章地址:http://www.bm7419.com/news1/201801.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站手機(jī)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站改版、定制網(wǎng)站小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)