Spinnakerの紹介

Spinnakerの紹介

1. 概要

このチュートリアルでは、Netflixによって構築されたオープンソースのcontinuous deliveryプラットフォームであるSpinnakerについて見ていきます。 これを使用して、複数のクラウドプロバイダーにアプリケーションを展開できます。

このシステムはSpring Bootの上に構築されており、多くのクラウドプロバイダーをサポートしています。

それがどのように機能し、どのような場合に使用できるかを見ていきます。

2. バックグラウンド

ソフトウェア開発の歴史を見てみましょう。 まず、リリース頻度の低いウォーターフォールがありました。

その後、アジャイルの作業を開始し、スプリントごとに機能を提供しました。 However, we still didn’t deploy to production every sprint.残念ながら、ユーザーはまだ棚に置かれていた新機能を使用できませんでした。

定期的に展開しない理由がいくつかありました。 その1つは、展開手順が手動で実行されることが多く、ヒューマンエラーが発生しやすいという事実でした。

また、一部の人々は、より多くの場合、展開することで潜在的な問題のリスクが高まると考えていました。 Nowadays, we mostly agree that deploying small changes means less risk for big mistakes.それでも、間違いがあった場合は、小さな変更ですぐに見つけて、問題を解決する新しいバージョンをリリースできます。

3. スピネーカー

With Spinnaker, we can use continuous delivery or continuous deployment to release our application on production automatically.継続的デリバリーとは、すべてが製品リリースに向けて準備されていることを意味します。

ただし、リリースは、アプリケーションが実稼働環境にデプロイされる前に手動で承認されます。 継続的な展開は、手動による介入がないことを意味します。 All steps are executed, including the deployment to production.アプリケーションコードをバージョン管理システムにプッシュするだけです。

コードをバージョン管理にプッシュしてから運用環境に展開するまで、多くの手順を実行できます。 コードをビルドし、コードを単体テストし、テスト環境に展開して機能テストを実行できます。 いわゆるパイプラインを使用して、これらすべてのステップを構成します。

Spinnakerを使用すると、このようなパイプラインを作成して、ほとんどのクラウドプロバイダーにアプリケーションをデプロイできます。

4. コンポーネント

Spinnakerは基本的に2つの部分で構成されています。さまざまなクラウドプロバイダーの最上位にある抽象化レイヤーと、継続的な配信のためのツールです。

4.1. 従来のクラウド展開

クラウドプロバイダーを見ると、ほぼすべて同じサービスを提供しています。 これらのサービスには、インスタンス、サーバーレス、コンテナサポートなどが含まれます。

ただし、これらのサービスの構成はプロバイダーによって大きく異なります。 これにより、プロバイダーを切り替えることが難しくなります。 別のクラウドプロバイダーに移動してすべての詳細を学習するには時間がかかります。つまり、クラウドプロバイダーとのベンダーロックインが基本的にあります。

Netflixは、1つだけに依存するのではなく、クラウドプロバイダーを簡単に切り替える可能性を望んでいました。 そのため、彼らはクラウドプロバイダーの上に抽象化レイヤーを構築しました。

4.2. 抽象化レイヤー

When we use Spinnaker, it’s the same on all cloud providers. Amazon Web Services、Microsoft Azure、Google Cloud Platform、OpenStack、Google App Engine、またはKubernetesで使用できます。 これにより、価格がより競争力のある場合、別のクラウドプロバイダーに移行できます。

Even more, we can choose to deploy to multiple providers at the same time.このようにして、冗長性を高めるために2つ以上のプロバイダーでアプリケーションを実行できます。

Another benefit of the abstraction layer is that it focuses on the applications instead of the resources.通常、クラウドプロバイダーは、現在使用しているリソースを表示します。 ただし、どのアプリケーションがどのリソースを使用しているかを把握する必要があります。

しかし、リソースは私たちにとって興味深いものではありません。 リソースの追跡に時間を費やすことなく、アプリケーションを実行したいのです。 Spinnakerにはアプリケーション中心のビューがあります。 そのため、これを見ると、最初にアプリケーションが表示され、次にアプリケーションで使用されるリソースが表示されます。

4.3. 継続的デリバリー

On top of the abstraction layer, Netflix built a continuous delivery platform.このプラットフォームを使用すると、アプリケーションを1つ以上のクラウドプロバイダーにデプロイできます。 Jenkinsに少し似ていますが、クラウドプロバイダーとのより良い統合を提供し、より少ない構成を必要とします。

たとえば、Jenkins、アップロードされたDockerイメージ、またはgit pushから連続配信パイプラインをトリガーできます。 その後、アプリケーションでイメージまたはコンテナを作成し、実稼働で開始するだけです。

ただし、実稼働環境に展開する前の自動テストや手動承認など、さらに多くのオプションが利用可能です。

既存のアプリケーションの新しいバージョンを展開するときに、どの戦略に従うかを決定することもできます。 そのため、古いバージョンを新しいバージョンに置き換えるだけで済みます。 ただし、より良い戦略は、最初に並べて実行することです。 そうすれば、新しいバージョンが機能するかどうかを自動または手動で確認し、可能であれば古いバージョンを削除できます。

5. Netflixクラウドモデル

Every application consists of one or more server groups.同じバージョンのアプリケーションがサーバーグループ内のすべてのインスタンスで実行されます。 次の命名規則が使用されます:-<(optional)stack>-<(optional detail)>-。 (オプション)スタックフィールドは、サーバーグループがテスト、実稼働、またはその他の目的のいずれであるかを指定するために使用されます。 オプションの詳細フィールドは、追加情報に使用されます。

Finally, we have the concept of a cluster that contains one or more server groups with the same name, stack, and detail.ただし、ほとんどの場合、クラスター内の各サーバーグループは異なるバージョンのアプリケーションを実行します。 失敗したインスタンスは、新しいインスタンスに置き換えられます。

増加した負荷に対応するために、サーバーグループにインスタンスを自動的に追加することもできます。

6. 展開戦略

When we deploy a new version of an application, the ‘red/black' strategy is normally chosen.最初に、新しいバージョンのアプリケーションを含む新しいサーバーグループがクラスターにデプロイされます。 アプリケーションの展開後、新しいサーバーグループが正常かどうかを確認するためのチェックが実行されます。

これで、サーバーグループが有効になり、お客様が使用できるようになりました。 最後に、古いサーバーグループが無効になります。

In this scenario, it’s easy to roll back if something goes wrong with the new application server.古いバージョンでサーバーグループを再度有効にして、顧客が利用できるようにするだけです。

7. なぜSpinnakerなのか

With Spinnaker, we can focus on our application instead of the cloud resources that we use.これにより、アプリケーションのデプロイと保守が容易になります。

さらに、Spinnakerを使用すると、複数のクラウドプロバイダーで同時に実行できます。 さらに、価格戦略と利用可能な機能に応じて、他のクラウドプロバイダーに簡単に切り替えることができます。

8. 結論

Spinnaker builds on the experience of Netflix.最小限の労力で、彼らの知識を活用し、同じように作業することができます。 これらのツールに基づいて、展開パイプラインを簡単に実装して、アプリケーションを運用環境に展開できます。

Spinnakerの詳細については、無料のContinuous Delivery with Spinnaker電子ブックをダウンロードしてください。