上位 6 つのコンテナ パイプラインの比較: 構成、利点、制限、価格

上位 6 つのコンテナ パイプラインの比較: 構成、利点、制限、価格

[51CTO.com クイック翻訳] ご存知のとおり、DevOps によってもたらされた大きな変化により、コンテナにより開発チームはこれまでにないスピードでプログラム コードを配信できるようになりました。もちろん、コンテナの構築、パッケージ化、デプロイのプロセスを実行する必要があります。これがコンテナ パイプラインを使用する理由です。

[[321441]]

現在、コンテナ パイプラインにはさまざまなオプションがありますが、どれがあなたとあなたのプロジェクトに適しているでしょうか?この記事では、6 つのコンテナ パイプラインを検討し、その構成、利点、制限、価格について説明して比較します。

コンテナパイプラインとは何ですか?

まず、コンテナ パイプラインが実際に何であるかについて説明します。パイプラインは、ソフトウェア開発プロセスのさまざまな段階、特に継続的インテグレーションと継続的デリバリー (CI/CD) 段階の自動化に役立ちます。コンテナ パイプラインは、初期イメージの構築から本番環境への展開まで、コンテナ プロセスのすべての段階を自動化します。つまり、コンテナ パイプライン全体は通常、次の 3 つのステージで構成されます。

  • 統合: ソース コード管理への変更をチェックインすると、ビルド プロセスとユニット テストがトリガーされます。
  • 受け入れテスト: コンテナをテスト環境にデプロイし、その機能を検証します。
  • 展開: 包括的なテストを完了した最終イメージが実稼働環境に展開されます。

現在、各種コンテナ パイプライン ツールによって違いはありますが、通常は上記の 2 ~ 3 つのステージが含まれます。以下では、最も一般的な 6 種類のコンテナ パイプラインについて説明します。

1. ヘロク

Heroku は、Docker を活用した完全なコンテナ パイプラインです。追加のハードウェアを構成したり、さまざまなサービス プロバイダーを活用したりすることなく、同じプラットフォーム上でさまざまなコンテナーを構築、テスト、検証、およびデプロイできます。

構成

Heroku アプリケーションは、heroku.yml マニフェストを使用して構成されます。マニフェストは、コンテナの構築とデプロイに必要な手順を定義します。以下は、カスタム Dockerfile を使用したアプリケーションのマニフェストの例です。

  1. Dockerファイル 
  2. 建てる:  
  3. ドッカー:  
  4. ウェブ: Dockerfile

Git を使用してコンテナをデプロイする必要がある場合 (https://devcenter.heroku.com/articles/git)、次のコマンドを実行します。

  1. $ heroku スタック:コンテナを設定する 
  2. $ git にheroku.ymlを追加します 
  3. $ git commit -m "heroku.yml を追加"    
  4. $ git プッシュ heroku マスター

Heroku ではパイプラインがサポートされているため、継続的デリバリー ワークフローのさまざまな段階を反映するために、コンテナを複数の異なる環境にデプロイできます。たとえば、パイプラインを使用して、本番環境にデプロイする前にステージング環境で変更をテストできます。

長所と限界

Heroku は非常に使いやすく、パイプライン全体に必要なのは 1 つの YAML ファイルだけです。完全に管理されているため、変更のテストと展開のための複数の環境が提供されます。変更が正しく展開されなかった場合は、変更をロールバックすることもできます。

もちろん、Heroku のすべての機能が Docker デプロイメントで利用できるわけではありません。たとえば、Heroku CI を使用してアプリケーションのテスト スイートを実行することはできません。これは、イメージをビルドするときにテスト スイートを実行するか、マルチステージ ビルドを使用することを意味します。また、パイプラインのプロモーションを使用して、コンテナーをパイプラインの 1 つのステージから次のステージに昇格させることはできません。代わりに、コンテナをターゲット ステージに再デプロイする必要があります。

価格

Heroku では、毎月 1,000 回の無料ランタイムを備えた Web dyno とワーカー dyno を含む無料プランを提供しています。有料プランは、実行時間あたり 1 ダイノあたり 7 ドルから始まり、大容量の dyno やスケーラビリティの向上などの機能が含まれます。 Heroku の価格設定の詳細については、 を参照してください。

私の意見

Heroku は、コンテナ パイプライン向けの非常にシンプルでコスト効率の高いソリューションです。完全に管理された環境を提供するため、CI/CD プロセスを完全に制御できます。無料版と標準版の両方が提供されているので、試してみる価値があります。

2. Azure DevOps

Azure DevOps は、プロジェクト管理、ソース コード管理 (SCM)、CI/CD のための Microsoft のオールインワン サービスです。 DevOps ライフサイクルのほぼすべての段階を制御できるだけでなく、コンテナ固有の高度な機能も多数提供されます。これらには、プライベート コンテナー レジストリや、Azure Kubernetes Service (AKS) との統合が含まれます。同時に、Azure Pipelines はプラットフォームベースの CI/CD サービスを提供します。

構成

Web ベースのユーザー インターフェイスを使用して、Azure DevOps 全体を管理できます。もちろん、チェックインされたアプリケーション ソース コードと YAML ベースのマニフェストを使用して Azure Pipelines を構成することもできます。 Web UI を使用すると、デプロイメント環境、リリース、成果物を管理および追跡できます。

長所と限界

チームが Azure を使用している場合、Azure DevOps は既存のワークフローの自然な拡張となります。ホスト型とオンプレミス型の両方のインストール、および Azure App Service、Kubernetes、Azure Functions を含む複数の Azure ターゲットへのデプロイをサポートします。

ただし、Azure DevOps は Azure を含む他のサービスと簡単に統合できません。統合を構成するときに、Azure Container Registry などのサービスから値をコピーして貼り付ける必要がある場合もあります。このタイプのセットアップは面倒で非効率的です。

価格

Azure Pipelines では、1 か月あたり 1,800 分の無料同時 CI/CD ジョブを含む無料レベルが提供されます。その他の「ジョブ」の料金は 40 ドルですが、ホストされた成果物 (画像など) の料金は 1 GB あたり月額 2 ドルです。もちろん、Azure Boards などの付加価値サービスも月額料金が発生します。 Azure DevOps Services の価格の詳細については、 を参照してください。

私の意見

Azure DevOps は、ワンストップの DevOps 管理ソリューションを必要とするチームや、既に Azure を使用しているチームに最適です。開発ライフサイクルを 1 か所に集中させることで、開発ライフサイクルが大幅に簡素化されます。ただし、基本的なコンテナ パイプラインだけを必要とするチームにとっては、複雑すぎる可能性があります。

3. GitLab CI/CD

GitLab はオープンソースの SCM から生まれましたが、すぐに完全な DevOps 管理ソリューションへと発展しました。 Azure DevOps と同様に、プロジェクト管理、プライベート コンテナー レジストリ、Kubernetes を含むキュレーションされた環境などの機能を提供します。

構成

GitLab CI/CD は GitLab Runner によって駆動され、CI/CD パイプラインの各ステップを自己完結型の環境で実行できます。これは、gitlab-ci.yml マニフェストを介して構成されます。マニフェストは、条件付きロジックや他のマニフェストのインポートを含む高度な構成をサポートします。

あるいは、Auto DevOps を使用して、構成なしでパイプライン全体を自動化することもできます。 Herokuish を使用すると、GitLab は Heroku ビルドパックを使用し、ソース コード (Dockerfile など) に基づいてアプリケーションのビルド方法を自動的に決定します。 Auto DevOps は、ユニット テストを自動的に実行し、コード品質分析を実行し、イメージをスキャンしてセキュリティの問題を検出できます。

GitLab はデプロイメントに dpl ツールを使用します。このツールは、クラウド プラットフォームや Kubernetes クラスターなど、さまざまなプロバイダーをサポートしています。

長所と限界

GitLab は非常に柔軟なパイプラインを提供しており、自分で構成することも、組み込みツールを使用して完全に自動化することもできます。 YAML 構成により、プロジェクトの依存関係の作成や、異なるプロジェクトからの複数のパイプラインの結合など、より幅広いプロジェクト構造とステップが可能になります。 GitLab は Herokuish や dpl などのオープンソース ツールを使用しているため、幅広いプロジェクト タイプ、言語、デプロイメント ターゲットをサポートしています。

GitLab は既存の環境にランナーとアーティファクトをデプロイできますが、それらの環境を GitLab 自体で構成したり維持したりすることはできません (もちろん、Google Kubernetes Engine と Amazon Elastic Kubernetes Service は除きます)。また、Azure Pipelines を使用するのと同じくらい直感的なグラフィカル パイプライン構成ツールもありません。

価格

GitLab はオープン コア モデルを採用しており、オープン ソース ベース バージョンと追加機能を備えた有料のエンタープライズ エディションを提供しています。有料プランの価格は、ユーザーあたり月額 4 ドルから 99 ドルです。価格設定の仕組みはユーザー数に基づいて決まります。 CI パイプラインの実行と特定の機能へのアクセスに、毎月分数が割り当てられます。もちろん、すべてのプランには無制限のコード リポジトリ、プロジェクト計画ツール、および 1 か月あたり 2,000 分の無料パイプラインが含まれています。

私の意見

GitLab は強力な CI/CD ツールです。オープンソース版は多くの商用ツールと同様に機能が豊富で、ホスティングもサポートしています。ただし、別のデプロイメント環境を維持する必要があります。

4. AWS エラスティック ビーンズトーク

Elastic Beanstalk は単純なパイプラインというよりは、AWS リソースをオーケストレーションするためのツールです。 ECS コンテナ、S3 バケット、EC2 インスタンスなどのリソースのセットアップ、負荷分散、スケーリング、監視を自動化します。特定のニーズに基づいて、AWS 内で完全にカスタマイズされたパイプラインを作成できます。

構成

Beanstalk 構成では、コンテナをデプロイする方法と、コンテナがデプロイされる環境について説明します。これはまさに Dockerrun.aws.json ファイルで定義されているものです。さらに、Beanstalk では次のような独自の概念も導入されています。

  • アプリケーション: 環境とバージョンを含む Beanstalk コンポーネントの論理的なコレクション。
  • アプリケーションリリース: 簡単に展開できるソースコードリリース。
  • 環境: アプリケーションのバージョンを実行するために必要な AWS リソースのセット。

長所と限界

Beanstalk は非常に強力なツールです。 Docker だけでなく AWS でも動作します。自動スケーリング、ローリングアップデート、監視、リリース管理などのサービスを提供し、ユーザーがリソースに直接アクセスして管理できるようにします。

ただし、Beanstalk は通常のパイプラインよりも複雑です。単一のコンテナ環境を使用しており、コンテナのバージョンを環境に密接に結合できる場合を除き、イメージ リポジトリでさまざまな Docker イメージを事前にビルドしてホストする必要があります。さらに、関連する更新は Beanstalk CLI を通じてのみトリガーできます。したがって、コンテナに障害が発生した場合は、Beanstalk コンソールを使用して手動で解決する必要があります。

価格

Beanstalk 自体は無料ですが、提供される AWS コンポーネントには通常料金がかかります。たとえば、ECS ノードと ELB ロードバランサーを使用して環境を構成する場合、ノードとロードバランサーの両方が通常の構成に従って課金されます。

私の意見

Beanstalk は、利用可能な多数の AWS サービスを利用して、すべてのサービスを効率的に管理する方法を提供します。オーケストレーション ツールとしては非常に強力ですが、コンテナ パイプラインとしては構成が複雑すぎます。

5. Google クラウドビルド

Cloud Build は、Google Cloud Platform (GCP) 上に構築されたコンテナベースの CI サービスです。ソースコードまたは Dockerfile から直接イメージを構築し、GKE、Cloud Run、その他の GCP サービスに直接デプロイできます。

構成

Cloud Build は、cloudbuild.yaml または JSON ファイルを介して構成されます。イメージを構築するプロセスと、結果のイメージを保存する場所を定義できます。たとえば、次のような簡単なコマンドを使用して、Docker イメージをビルドし、Google Container Storage にプッシュできます。

  1. 名前: gcr.io/cloud-builders/docker
  2. 引数: [ 'build' , '-t' , 'gcr.io/$PROJECT_ID/myimage' , '.' ]
  3. 画像: [ 'gcr.io/$PROJECT_ID/myimage' ]

Cloud Build は、ソースコードの変更に基づいてビルド プロセスを自動的に開始するトリガーもサポートしています。

長所と限界

Cloud Build は、GKE、App Engine、Cloud Run などの他の GCP サービスとうまく統合されます。ビルド ホストのサイズと容量を直接制御できるほか、イメージ レイヤーをキャッシュしてビルドを高速化することもできます。ビルドの検証またはデバッグが完了したら、ローカル ビルドを実行して Cloud Run にプッシュすることもできます。

Cloud Build は GCP を中心に構築されているため、サポートされるデプロイメント ターゲットの数は限られています。コンテナを他のプラットフォームにデプロイする場合は、追加の手順が必要です。さらに、GitLab と同様に、Cloud Build では視覚的なパイプライン構成ツールは提供されていません。

価格

価格は主にビルド​​マシンのサイズとビルドにかかる時間に基づいて決まります。標準の n1-standard-1 インスタンスのコストはビルド 1 分あたり 0.003 ドルなので、n1-highcpu-32 インスタンスでは最大 0.064 ドルになります。 n1-standard-1 インスタンスでは、1 日あたり 120 分の無料ビルド時間が提供されます。

私の意見

Cloud Build の主な利点は、シンプル、高速、習得が簡単、安価、そして他の GCP サービスと適切に統合されていることです。すでにデプロイ環境をお持ちの場合や、GCP をご利用の場合は、Cloud Build を試してみることをお勧めします。

6. ジェンキンスX

Jenkins は最も人気のある CI/CD ツールの 1 つですが、Jenkins X は包括的な Kubernetes 統合を追加することでさらに一歩前進しています。 Jenkins X は Kubernetes にデプロイできるだけでなく、Kubernetes クラスターを構成および管理することもできます。

構成

Jenkins X Pipelines は、Kubernetes 上で CI/CD パイプラインを実行するのに役立つ Tekton Pipelines 上に構築されています。パイプラインを構成するには、jenkins-x.yml ファイルを使用できます。 Jenkins X は、ソース コードをイメージにパッケージ化して Kubernetes にデプロイするのに役立つビルドパックも提供します。

長所と限界

Jenkins X は、Jenkins と Kubernetes という 2 つの人気のある既存のプロジェクトを活用して、スケーラブルな CI/CD プラットフォームを作成します。 CI/CD パイプライン全体を自動化し、プレビュー環境とパイプラインのアップグレードをサポートします。 Jenkins が含まれているため、Jenkins 開発者のコ​​ミュニティ全体にアクセスできるようになります。

ただし、Jenkins X には Kubernetes が必要なので、クラスター構成などの問題が伴うことは留意しておく必要があります。もちろん、コマンドライン ツールを使用すると、このプロセスの大部分を自動化できます。

価格

Jenkins X はオープンソースです。

私の意見

Jenkins を使用しているチームにとって、Jenkins X は自然な進化です。厳しい制限と要件はいくつかありますが、Kubernetes を使用するチームの場合、既存のインフラストラクチャとネイティブに統合できます。

要約する

  • Heroku は、安定した環境で Docker コンテナを簡単にデプロイおよびホストしたいチームに最適です。高速で構成可能なプラットフォームを提供し、幅広い統合をサポートし、サードパーティのプラグインの大規模なマーケットプレイスを備えています。
  • Elastic Beanstalk は、AWS リソースをオーケストレーションできるため、複雑な要件を持つチームに適しています。
  • コンテナ CI の場合、GitLab は幅広い機能を備えた最も包括的な選択肢です。
  • Auto DevOps には、基本機能に加えて、オープン カーネル モデルもあります。
  • Google Cloud Build は、Google Cloud Platform の効率性と容量を活用して高速ビルドを実現します。
  • Jenkins X は主に Jenkins プロジェクトの恩恵を受けています。

これらのサービスのほとんどはオープンソースであるか、無料トライアルを提供しているため、試してみて、ワークフローに最適なコンテナ パイプラインを見つけることができます。

コンテナ パイプラインの比較 (Michael Bogan 著)

[51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください。

<<:  2020年のクラウドコンピューティング産業チェーンの現状分析

>>:  東南アジアにおけるクラウドコンピューティングの発展方向は何ですか?

推薦する

SEO のための Python 教師なし単語抽出で単語をすばやく正確に分割する方法

単語をすばやく正確に分割する方法は、SEO のためのタグ集約と情報関連付けを抽出するのに役立ちます。...

webhostingbuzz - プロフェッショナル WordPress ホスティングが 50% オフ / VPS (onapp/managed) が 80% オフ

webhostingbuzz は、仮想ホスト\VPS などの割引コードを公開しています: 割引コード...

謝文:ザッカーバーグの法則

1年も経たないうちに、Facebookの創設者マーク・ザッカーバーグ氏はWeb 2.0サミットで、F...

マルチクラウド戦略を構築するための考慮事項

[[435236]]マルチクラウド戦略の実装は、それを採用するかどうかを決定するのと同じくらい難しい...

クラウド コンピューティングの導入が失敗する原因は何ですか?

調査会社ガートナーによれば、2020年までに、依然として「クラウドなし」のポリシーを持つ企業は、現在...

Alibaba Cloudは、クラウド上で5分でデータベースのバックアップを完了できるデータベースバックアップサービスDBSの正式商用化を発表

アリババクラウドは7月11日、データベースバックアップサービス「DBS」が正式に商用利用を開始したと...

Kubernetes ノードの規模が 7,500 を超える

[[382903]] [編集者注] 2018 年 1 月、OpenAI の公式ブログでは、Kuber...

ウォン・カークイの死から20年

黄家居が亡くなって20年が経ちました。彼の傑作をいくつか皆さんに紹介したいと思います。ファンの皆さん...

ウェブサイトの重みとランキングが低いのはなぜですか?

1. 外部リンクの品質が低い一部のウェブサイトでは外部リンクを大量に掲載していますが、その品質は非常...

清華紫光クラウドRPAロボット:人間と機械のコラボレーションの時代を切り開き、SaaS+アプリケーションを推進

床を掃いたり、箱を動かしたり、ダンスやパルクールをしたりと、あらゆる種類のかっこいいロボットが人々の...

alpharacks - $10/年/256M メモリ/512M スワップ/25G ハードドライブ/500g データ転送/ロサンゼルス

Alpharacks、年末プロモーションが始まりました。256Mメモリ、512M、1G、2Gの特別価...

ChinaJoyから2018年のゲーム業界を展望します!

今年のChinaJoyでは、私たちがよく知っているシーンが多く上演されたが、「一見微妙だが、実は大き...

2024 年のクラウド コンピューティングのトップ 10 トレンド

クラウド コンピューティングは、テクノロジーの世界に変革をもたらし、急速に成長し続けています。 20...

初心者はランキング変動への対処方法を知る必要がある

私は長年SEOをやっていますが、ウェブサイトの順位を保証することは決してありません。検索エンジンのト...

Dangdang.comがカテゴリー旗艦店としてTmallに参入すると発表

Dangdang.comがTmallへの参入を発表(写真提供:テンセントテクノロジー) Dangda...