エンタープライズコンテナ化を選択するには? HerokuとDockerの包括的な比較

エンタープライズコンテナ化を選択するには? HerokuとDockerの包括的な比較

Heroku と Docker はどちらも、開発者がコンテナ内でアプリケーションを開発、デプロイ、実行できるようにします。コンテナーは、単一のオペレーティング システム カーネル上で実行される仮想環境であり、仮想マシンまたはベアメタル コンピューター システムに必要なリソースの一部を使用してアプリケーションを実行できます。コンテナを使用すると、アプリケーションを迅速かつ簡単に拡張し、開発から本番環境に移行することもできます。 Heroku と Docker はどちらもソフトウェアの展開と管理のためのコンテナ化されたソリューションを提供していますが、実装と用語は大きく異なります。それぞれのシステムにはそれぞれ異なる長所と短所があります。

コンテナとは何ですか?

コンテナは、アプリケーションが単一のオペレーティング システムを共有できるようにするソフトウェア システムです。コンテナ システムは通常、コンテナ エンジン、ホスト オペレーティング システム、およびプロセッサで構成されます。

コンテナ エンジン- この場合、Docker または Heroku は、コンテナ化されたアプリケーションをデプロイするためのホスティング環境です。コンテナ エンジンはカーネルとメモリを管理します。また、個々のアプリケーションの空間的な分離とセキュリティを管理し、スケーラビリティを実現します。

ホスト オペレーティング システム (OS) - ホスト オペレーティング システム (通常は Linux) は、ユーザー インターフェイスを提供し、メモリなどのリソースを管理し、アプリケーションにサービスを提供します。

プロセッサ(中央処理装置とも呼ばれる) は、オペレーティング システムとアプリケーションからの指示に基づいてすべてのタスクを実行する役割を担います。

コンテナの利点

コンテナを使用するとアプリケーションがリソースを共有できるため、次のようないくつかの利点があります。

コストの削減- コンテナはアプリケーションがリソースを共有できるようにすることでコストを削減します。

信頼性と堅牢性の向上- コンテナにより、フェイルオーバーとリカバリを高速化できます。

スケーラビリティ– コンテナを使用すると、アプリケーションの数を迅速かつ簡単に拡張できます。

分離– コンテナーは、名前空間内の独自のリソースを使用して各アプリケーションを分離します。したがって、アプリケーションはリソースを共有しますが、機能的には互いに分離されています。また、1 つのアプリケーションの障害が他のアプリケーションから分離されるため、コンテナは仮想マシンやベアメタル システムよりも安全になります。

継続的インテグレーション- コンテナは簡単に破棄およびデプロイできるため、アジャイルなどの反復的なプロセスをサポートします。

移植性- コンテナは移植性が非常に高く、特にクラウド環境では開発から本番環境への移行が容易になります。

セキュリティ– コンテナのモジュール設計により分離性が高まり、システムへの攻撃が困難になり、マルウェアの影響が制限されます。

  • コンテナ プロセスは、コンテナ固有のファイル システムにのみ書き込む必要があります。
  • コンテナ名前空間はプライベート イントラネットから分離する必要があります。
  • コンテナ権限は分離する必要があります。

ヘロク

[[282212]]

Heroku は Platform as a Service (PaaS) プラットフォームであり、2007 年に作成された最初のクラウド プラットフォームの 1 つです。Heroku は当初 Ruby のみをサポートしていましたが、現在は Java、Node.js、Python、PHP などもサポートしています。 Heroku は次のコンポーネントで構成されています。

  • BuildPack - Heroku BuildPack は、イメージを作成するためのスクリプトのセットです。 BuildPack は、Java、Python、Ruby など、アプリケーションを実行できる言語を決定します。 Heroku はさまざまな言語用のデフォルトの BuildPacks を提供しており、開発者は独自の BuildPacks を構築することもできます。
  • Slug - BuildPack を実行すると、Slug と呼ばれるアプリケーションのパッケージ化されたコピーが作成されます。 Slugs にはアプリケーションの実行に必要なすべての機能が含まれており、迅速かつ簡単にデプロイできます。
  • Heroku によれば、「Dynos は、ユーザーが指定したコマンドに基づいてコードを実行する、分離された仮想化された Linux コンテナです。」 Dynos を使用すると、リソース要件に応じてアプリケーションを任意のレベルに拡張できます。
  • より複雑なアプリケーションを構築するために、Heroku 用の事前設定されたビルディング ブロックであるアドオンを購入できます。
  • コマンドライン インターフェース (CLI) - Heroku コンテナを管理するためのコマンドライン インターフェース。

ベンダーロックインを回避するために、Heroku の代替として DeployPlace を検討しましたか?

ドッカー

[[282213]]

Docker は、コンテナ内でアプリケーションを作成、管理、デプロイ、実行するためのオープンソース ツールです。独自のクラウド環境で実行する必要がある Heroku とは異なり、Docker はラップトップ、サーバー、または Amazon Web Services (AWS) などのクラウドベースの環境にインストールできます。 Docker は次の高レベル コンポーネントで構成されています。

  • Dockerfile - Dockerfile は、Docker イメージを構築するために使用される一連のコマンドです (以下を参照)。 Dockerfile は、Docker イメージの最終的な構成も表します。
  • Docker イメージ – Dockerfile を実行して作成された Docker イメージ (上記参照)。 Docker イメージは、アプリケーションの実行に必要なすべてのリソース、依存関係、データ、ファイル、設定を含む多層ファイルです。 Docker イメージを起動するたびに、同じアプリケーションのコンテナが作成され、簡単にスケーラビリティを実現できます。
  • Index – Docker イメージを Index にアップロードして、Docker コミュニティと共有できます。これにより、他のユーザーは、インデックスからダウンロードした単一の Docker イメージ コンポーネントに基づいて複雑なアプリケーションを構築できるようになります。

コマンドライン インターフェース (CLI) - Heroku と同様に、Docker はコンテナを管理するための CLI を提供します。

Docker と Heroku の用語

Docker 対 Heroku

Docker と Heroku はアプリケーションのコンテナ化という共通の概念を共有していますが、2 つのプラットフォームにはいくつかの重要な違いがあります。 Heroku は、アプリケーションを実行するコンテナと、アプリケーションをホストするインフラストラクチャを提供します。つまり、Heroku はコンテナ化のすべての利点を提供しますが、Heroku プラットフォーム上でコンテナ化を実行する必要もあります。これにより、Heroku のセットアップと実行が非常に簡単になりますが、いくつかの制限もあります。 Docker とは異なり、Heroku はローカル サーバーやプライベート クラウド ベースのサービスでは実行できません。

ヘロク

Heroku の利点:

Heroku はセットアップ、実装、展開が簡単です。 Heroku はハードウェア、ソフトウェア、その他のリソースを管理するため、開発者はアプリケーションの開発にほぼ専念できます。

Heroku は、Ruby、Java、Node.js、Scala、Clojure、Python、PHP、Go など、複数の言語をサポートしています。

Heroku は多言語プラットフォームであり、開発者はさまざまなビルドパックを使用して、ほぼすべてのプログラミング言語でアプリケーションをデプロイできます。

Heroku Dynos を使用すると、Heroku がアプリケーションを管理および実行するため、開発者はオペレーティング システムやその他のシステム構成の管理から解放され、開発と可用性がシンプルになります。

Heroku は即時のスケーラビリティを実現します。Heroku は Dyno の数を増減することで簡単にスケールアップまたはスケールダウンできます。

Heroku の欠点:

Heroku で実行されるアプリケーションは、Heroku プラットフォームでのみ実行できます。したがって、Heroku は社内サーバーやプライベート クラウドでは実行できません。ベンダーロックインを回避するには、DeployPlace を検討してください。

Heroku アプリケーションは、Linux オペレーティング システムを使用してのみ実行できます。

Heroku では無料版を提供していますが、標準プランは月額 25 ドルから始まります。

Heroku の神話:

Herokuは高すぎます。多くの企業は、デプロイメント インフラストラクチャの構築とサポートを行うために、DevOps エンジニアを探し、採用し、トレーニングすることを好みます。採用、研修、賃金、オフィススペースにかかるコストは見落とされがちです。より良い製品の開発に主な重点が置かれているため、DevOps チームの採用と管理が見落とされてしまう可能性があります。

Heroku は安全ではないと考えられることがあります。しかし、Heroku は独自に開発したデプロイメント インフラストラクチャよりもはるかに安全です。 Heroku にはセキュリティを担当する別のチームがあります。 Heroku のセキュリティ機能は、何千もの実際の顧客アプリケーションでテストされています。追加の認証を必要としないほとんどの業界では、Heroku のセキュリティはまったく問題ありません。

Herokuの落とし穴

無料のルートを選択してコストを節約したい Heroku の顧客は、低コストの層を使用しますが、会社のコストを節約するためにシステムがリソースをシャットダウンすると、「スリープ アプリ」(https://blog.heroku.com/app_sleeping_on_heroku) が発生する可能性があります。知識のないユーザーにとって、この驚きは非常に不快であり、このような測定は単に不便すぎるのです。基本的に「意図的なダウンタイム」であり、お金はかかりますが、それを制御することはできません。

サーバーおよびプロセス (Heroku がマルチテナント共有サーバーにインスタンスを保存する場所) にも所有権がありません。ある意味、顧客には実際にサーバーをどこに展開するかを選択する権利はありません。

ドッカー

Docker の利点:

ほぼすべての環境で実行可能 - Docker は、内部サーバー、プライベート クラウド システム、さらには Heroku PaaS 自体でも実行できます。

カスタマイズ可能 – Docker はほぼすべてのプラットフォームで実行できるため、あらゆるニーズに合わせてカスタマイズできます。

セキュリティ – Docker は内部サーバー上で実行できるため、セキュリティを必要に応じて強化できます。

オペレーティング システム - Docker は、Linux、Windows などさまざまなオペレーティング システムで実行できます。

コスト – AWS 上の Docker は比較的安価で、月額約 4.75 ドルから始まります。

Docker の欠点:

設定が難しい – Heroku と比較すると、Docker の柔軟性により、正しくセットアップするにはより多くの設定が必要になります。

Dockerの落とし穴

開発チームは Docker で問題に遭遇することがありますが、その多くはテクノロジのオープン ソースの性質に関連しています。オーバーレイ ネットワークは、さまざまなタイプのユース ケースで遅延を引き起こす可能性があります。この遅延は、特にリアルタイムの目標を達成するためにベアメタルに近い状態で運用する必要がある企業にとって問題になる可能性があります。

Docker のもう 1 つの大きな問題は、貴重なデータを Docker コンテナ イメージにインポートし、イメージ内に保存する必要があることです。コンテナーは一般にステートレス機能用に構築されるため、永続化を意図したデータは失われます (https://docs.docker.com/v17.09/docker-for-ibm-cloud/persistent-data-volumes/)。これが起こると、非常に面倒なことになります。専門家や経験豊富な開発者は、永続的なデータを不適切な場所に置かないように常に警告し、常に「自分の立場を守る」よう他の人に促しています。

DockerとHerokuの比較

Heroku に Docker をデプロイする

Heroku のインフラストラクチャに Docker をデプロイすることで、両方の長所を享受できます。 Heroku のプラットフォームはセットアップと展開を簡素化し、実質的にリスクがありません。 Heroku へのデプロイの初期コストは AWS などのプラットフォームよりも高額ですが、他のプラットフォームと比較して構成に費やす時間が短縮されるため、多くの企業は Heroku でコストを節約しています。

Heroku に Docker をデプロイする利点は次のとおりです。

  • 開発環境と本番環境の違いが少なくなります。
  • パッケージの構築方法をより細かく制御します。たとえば、アプリケーションが標準ビルドパックを使用しない言語を使用している場合は、Docker でビルドできます。

Heroku プラットフォームに Docker をデプロイする場合の主な欠点は、Heroku の自動構成機能の一部が失われ、より多くの責任を負わなければならないことです。標準の slug コンパイラとデフォルトのスタックを使用する場合、Heroku は自動的にセキュリティ更新をチェックし、スタックを更新して、アプリケーションを自動的に移行します。ただし、Docker コンテナを使用する場合、Heroku ではこれを行うことができず、アプリケーションを管理する人が責任を負うことになります。

Docker と Heroku を使用している企業はどれですか?

Docker クライアント

Docker は G2Crowd で 5 点満点中 4.4 点の評価を受けており、200 人のユーザーがレビューを投稿しています。多くの企業は、仮想マシンを作成せずにコンテナ内にサーバー環境を迅速に展開するために Docker を選択しています。

ADP (https://www.adp.com/) – Docker を使用して安全なソフトウェア サプライ チェーンを構築し、113 か国で約 4,000 万人のアクティブ ユーザーにサービスを提供しています。

AL.M. です。 Brand (https://www.almbrand.dk/) - Oracle WebLogic アプリケーションを合理化し、Docker Enterprise Edition を使用して新しいアプリケーションを構築しました。

ASSA ABLOY (https://www.assaabloy.com/) – 有名なロックメーカーである ASSA ABLOY は、Docker Enterprise Edition を使用して、電子インターフェースとロックハードウェアの市場投入を加速しています。

Baker Hughes GE (https://www.bhge.com/) — Docker を使用して、デプロイメント時間を 6 か月から 1 時間に短縮しました。

GlaxoSmithKline (https://www.gsk.com/) — Docker Enterprise Edition を使用して薬物送達モデルを加速し、研究を改善します。

Visa (https://www.visa.com/) — Visa は Docker を使用して支払い処理アプリケーションを再構築し、最終的にスケーラビリティが 10 倍向上しました。

Heroku のお客様

Heroku は、すぐにリリースできる強力なデータ駆動型アプリケーションを迅速に構築するために、スタートアップ企業や業界リーダーに頻繁に選ばれています。 Docker は G2Crowd で 5 点満点中 4.3 点の評価を受けており、76 人のユーザーがレビューを投稿しています。

Altus Assessments — Altus Assessments は、Heroku を使用して何千ものデータ集約型テストを実行します。

SwimTopia — Heroku は、SwimTopia がピーク時にシームレスに拡張できるように支援します。

SHIFT Commerce (https://www.shiftcommerce.com/) – Heroku 電子インターフェースを使用し、ハードウェア マーケットプレイスを集約することで、SHIFT Commerce の急速な成長が可能になりました。

ClickFunnels — ClickFunnels は、Heroku の柔軟なデータ サービスを活用して成長の機会を活用しました。

Moneytree (https://www.getmoneytree.com/) — Moneytree はビジネスに注力し、Heroku はデータセキュリティとコンプライアンスを担当します。

DrivenData — Heroku は、DrivenData のデータ サイエンス アプリケーション向けの安全なプラットフォームを提供します。

要約する

Heroku と Docker はどちらもコンテナ化に最適な選択肢です。これらはすべて、Java、Ruby、PHP など、さまざまな言語でアプリケーションを実行できます。また、拡張性と展開も容易です。

Heroku と Docker の主な違いは実装です。 Heroku と Docker はどちらもコンテナを使用して動作します。コンテナは、コード、リソース、ツールなど、アプリケーションの実行に必要なすべてのものが含まれる自己完結型のコードインスタンスです。ただし、Heroku は独自の Heroku デプロイメント パイプラインでコンテナを提供します。これにより、パッケージ、コンテナ、環境全体がすでに構成されているため、Heroku の構成が非常に簡単になります。 Heroku は、複雑な構成なしで固定された環境にアプリケーションを展開したい新しい開発者や小規模企業に最適です。

一方、Docker は、オンプレミス サーバーからプライベート クラウド、AWS、さらには Heroku 環境自体に至るまで、さまざまなプラットフォームで実行できるコンテナ化モデルを提供します。したがって、Docker は Heroku と比較して、展開の柔軟性がはるかに高くなります。ただし、この柔軟性には、より複雑な展開プロセスが伴います。

したがって、Docker は、より具体的な構成要件を持つ企業に適しています。たとえば、アプリケーションに非常に安全な環境が必要な場合は、オンプレミスで Docker を実行し、仕様に応じてセキュリティを構成できます。柔軟性が高まると、ある程度の複雑さも生じます。 Heroku は基本的にそのまま使用できますが、Docker ではニーズに応じてさらに設定が必要になります。

場合によっては、開発者は Heroku に Docker をデプロイすることで、両方のプラットフォームの機能を活用できます。これにより、Docker が他の PaaS プラットフォームにもたらすデプロイメントと実装の多くの問題が軽減されますが、純粋な Heroku デプロイメントよりもアプリケーション マネージャーに多くの責任が課せられます。一方、責任が大きくなると、アプリケーションをより細かく制御できるようになります。

<<:  中華人民共和国建国70周年記念国慶節ライブ放送の徹底レビュー:ソベイがCCTVグローバルニュースクラウドの目覚ましい成果達成に貢献

>>:  マルチクラウド環境のセキュリティを確保するには、まず問題があることを認識する必要がある

推薦する

リンクの偽装と百度の本物と偽物のスパイダー

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています以前、グル...

ネットワークの課題: クラウドからデータセンターまでの監視

サイバー課題を推進する問題ほとんどのネットワーク チームには、急速に進化するネットワークを効果的に管...

Aruba が AWS Transit Gateway Connect をサポートし、ブランチ オフィスから AWS への自動接続を実現

最近、AWS re:Invent 2020 カンファレンスで、Aruba は SD-WAN 製品ポー...

入手可能: oplink-$24.5/L5420/16g メモリ/120g SSD/100m 無制限

oplink は 2006 年に登録され、AS40156 でヒューストンに独自のコンピュータ ルーム...

Googleがユーザーに注意喚起:リンクの交換はPRインデックスを下げる

ウェブマスターは長い間、自分のウェブサイトを宣伝する際の PR を向上させる主な手段としてリンク交換...

ウェブサイトの最適化に欠かせない要素について簡単に説明します。多様な開発

ウェブ業界と検索業界が成熟するにつれて、検索アルゴリズムはよりインテリジェントでユーザーフレンドリー...

メガレイヤー: 高防御サーバー + 高速回線、40% 割引、月額 79 ドル、香港 CN2、シンガポール CUII/AS9929

Megalayerは、香港サーバー(オプション:CN2/直結/国際回線)、シンガポールサーバー(オプ...

ルーティンと反ルーティン、「延禧宮物語」の人気から学ぶオンラインマーケティングの36の戦略!

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています最近話題の...

最高人民法院と最高人民検察院:意図せず、または知らずにネット上で虚偽の情報を報告しても犯罪にはならない

9月9日、最高人民法院と最高人民検察院は共同で「情報ネットワークを利用した名誉毀損等の刑事事件の処理...

Baiduの製品シリーズを正しく見る方法

ウェブサイトの最適化の過程で、多くの人が、Baidu Encyclopedia、Baidu Know...

iFlytekは停止と是正の承認手続きをすべて完了したが、事前に通知されていなかった。

月給5,000~50,000のこれらのプロジェクトはあなたの将来ですA5ベンチャーネットワーク(公開...

地域観光ポータルサイトの開発可能性を分析する方法

今日は、地域観光ポータルの可能性を分析する方法についてお話ししたいと思います。諺にあるように、自分と...

クラウド アプリケーション コンテナの左向き監視アプローチ

弾力性のあるコンテナ化された環境では、非効率的なコードは非常にコストがかかります。左監視アプローチと...

外部リンク構築の4つのタイプの簡単な紹介

外部リンクの役割は SEO の 70%~80% を占めます。一般的に、ウェブサイトがトラフィックを獲...