web-dev-qa-db-ja.com

SpinnakerとJenkins 2.0を継続的デリバリーツールとして比較する

ご存じのように、Jenkins 2.0がリリースされ、継続的インテグレーション(CI)から継続的デリバリー(CD)に拡張されています。それでは、Jenkins 2.0と比較したSpinnakerの競争上の利点は何ですか?

35
feihujiang

私は、SpinnakerでのJenkins統合とNetflixのPipelines機能で広範囲に取り組んでいます。

Spinnakerは、エンドツーエンドのビルドツールになることを意図していませんでした。 Jenkinsは、SCMの管理、テストの実行、パッケージの構築、ガジリオンプラグインの作成などの点で優れていることがあります。

Spinnakerがうまくやろうとするのは、公開したソフトウェア(debianパッケージ、dockerイメージ、またはデプロイ可能なJAR)を取得し、高度にカスタマイズ可能な予測可能なソフトウェアデプロイメントサイクルを実行することです。つまり、Spinnakerのすべての機能は、高可用性、マルチアカウント、マルチクラウドのアーティファクトの展開を簡単に行えるように構築されています。

Spinnakerパイプラインはクラウド中心のビューを取ります。パイプラインステージとAPIコントロールのほとんどは、予測可能な使いやすい方法で新しいサーバーグループを作成し、既存のサーバーグループを変更することに関係しています。疑わしい場合は、最適化の対象となります。

クラウドデプロイの外観について強い意見があり、CDパイプラインでクラウドデプロイタスクを処理するときにポイントアンドクリックUIを使用することがよくあります---クラスターxでイメージを見つけ、このクラスターを無効にし、サーバーグループのサイズを変更します、このクラスターの縮小、このクラスターのトラフィックの取得、この古いクラスターの破壊など。

2年前にSpinnakerを書き始めたとき、Jenkinsのパイプライン機能は利用できなかったため、必要な機能を構築しました。 Netflixの他のチームが数千の展開パイプラインを内部で構築するのを支援するニーズから進化したJenkinsのサポート。 NetflixはビルドとテストをJenkinsに大きく依存しているため、JenkinsのジョブとSpinnakerステージ間の移行は非常にシームレスです。

Netflixには、Spinnakerパイプライン機能を使用せず、JenkinsジョブでSpinnaker APIをAWSにデプロイするためのショートカットとして使用するチームがあります。 Jenkinsパイプラインまたは同様のCDツールを使用している場合、Spinnakerは展開フェーズを非常に柔軟にします。

また、SpinnakerがJenkinsのジョブを1つのアプリケーションに関するアトミックで再利用可能なタスクに分割する方法を好むチームもあります。クラウドにデプロイしないチームはSpinnakerを使用します。これは、当社のパイプラインがJenkinsの世界で見つけることができるものよりもニーズに合っているためです。

Jenkinsのパイプラインはかなりきれいです。 SpinnakerがJenkinsとそれが行う100万のことを完全に置き換えるとは思わない。私たちの目標は、「クラウドへのデプロイ」ステップをよりシンプルで拡張性の高いものにすることです。どちらを使用するか、一緒に使用するか、まったく使用しないかは、ユーザー次第です。

72
Tomas Lin

CDツールとしてJenkins(2.0)PipelineよりSpinnakerを選択する理由はいくつかあります。

  1. Spinnakerには、複数のクラウド環境で実際にリソースをプロビジョニングできるWeb UIが含まれています。そのため、VM、ロードバランサー、クラスターなどの基本的なリソースを作成するには、配信ツールと同じUIからこれを実行できます。
  2. アーキテクチャがNetflixのアーキテクチャに類似している場合、Netflixはこれをクラウド管理プラットフォーム全体として使用するため、配信およびインフラストラクチャ管理をサポートするための無秩序なツールはほとんど必要ありません。

一方、SpinnakerよりもJenkins Pipelineを選択する理由はたくさんあります

  1. Spinnakerにはまだビルドツールが必要なので、とにかくJenkinsを維持する必要があるかもしれません。そのため、Jenkins PipelineがCDツールになったら、executor固有のタスクを既にネイティブに実行できます。
  2. Spinnakerにはきめ細かなアクセス制御はありません(最近追加された種類の認証のみ)が、Jenkinsにはリソースレベルのアクセス制御を提供するためにPipeline内に多くのプラグインとネイティブ構成があります。
  3. すべてが単一のグルーヴィーなスクリプトによって駆動されるため、コードとしての本当の構成です。他のCDツールでは不可能な(または少なくとも簡単な)単純なフロー/ロジック/制御が可能です。
  4. マルチブランチパイプラインサポート、ブランチの簡単な作成/削除/変更
  5. Jenkinsの広範なプラグインサポートは既に。たとえば、 AWS ECS Plugin を使用して、パイプラインの動的なdockerノードを許可しています。
  6. パイプラインに向けてコードを簡単に共有/共同編集します。確かに、複数のパイプラインで利用したい再利用可能な関数があります。Jenkinsは Remote Loader Plugin などのツールでこれを簡単にします
  7. 大規模なコミュニティサポート

最終的に、Jenkins 2.0 PipelineをSpinnakerなどのCDツールとして選択しました。

23
Neil

Mavenを使用して、コードベース全体とconfigsプロパティ(つまり、GitHubでバージョン管理されているすべてのもの)をパッケージ化し、そこからRPMを作成します。このフローが終了すると、AWSまたはその他のクラウドでSpinnakerパイプラインがトリガーされ、CDパーツが開始されます。

SpinnakerはこのCDスコープで非常にユニークです。

  1. コードプロモーション:プロモーションと同じRPMにより、基になるコード/ envが不変になります。

  2. Spinnakerコンソール自体からインスタンスのサイズ変更を制御できます

  3. ロールバックはワンクリックです。

  4. Blue-green/Red-Black、Canary、highlanderなどの最新のデプロイメントコンセプトはすべて、ここでOOBです。

  5. パイプラインログは、高レベルと低レベルの両方の非常に洞察に富んだビューを提供します

  6. マルチリージョン展開(DR戦略)

spinHELKをRHELにインストールする際にヘルプ(無料ヘルプ!)が必要な場合は、お知らせください。

ただし、Spinnakerはクラウド中心の展開にのみ使用する必要があります。

1
Debajit Kataki