マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Spinnaker

【OSS情報アーカイブ】Spinnaker

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

「Spinnaker」とは

概要

Spinnaker(スピネーカー)とは、マルチクラウド継続的デリバリープラットフォームです。複数クラウドに対するデプロイやクラスタ管理を実施し、アプリケーションリリースについて高速かつ確実にリリースするためのインテリジェントな継続的デリバリープロセスを自動化できます。

基本説明

Spinnakerは、「柔軟なパイプライン管理システム」と「主要クラウドプロバイダー統合」を組み合わせており、強力な抽象化レイヤーを通じて、開発者がコミットから配信までアプリケーションコードを所有できるツール類を提供します。

Spinnakerは、成熟し広く利用されている継続的デリバリープラットフォームとして、「SDLC(Software Development Life Cycle:ソフトウェア開発ライフサイクル)」をサポートします。

経緯

Spinnakerは、2015年11月、Netflixによってオープンソース化されました。

オフィシャルサイト情報

■オフィシャルサイト

→spinnaker.io

■GitHub

→github.com →spinnaker/spinnaker

■ライセンス情報

Spinnakerのライセンスは「Apache License 2.0」です。

詳細について、こちらを参照ください。
→github.com →spinnaker/spinnaker →LICENSE.txt

■インストール方法

→spinnaker.io →setup →install

■導入事例

Spinnakerのユーザー企業には「Salesforce」「Airbnb」「Adobe」「JPMorganChase」などがあります。

数百万を超える展開で数百のチームによって本番環境での導入が進んでいます。

→spinnaker.io →success-stories

同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Jenkins」など。

ソフトウェア開発ライフサイクル管理

■アプリケーションワークフローの構築

Spinnakerでは、「GUI:グラフィカルユーザーインターフェイス」または「config-as-code」を使用して、1つ以上のリソースを含むアプリケーションワークフローを構築し、ソフトウェア開発ライフサイクルを管理します。

・クラウドプロバイダーへの仮想マシンの展開
・不変インフラストラクチャとして焼き付け
・クラウドへのコンテナのデプロイ
・Kubernetesへのコンテナのデプロイ
・ロードバランサー設定
・セキュリティグループ設定
・サーバグループ設定
・クラスタ設定
・ファイアウォール設定
・関数設定 など

■開発者にアプリのプロビジョニング制御を許可

Spinnakerでは、GitOpsを促進し、開発者にアプリのプロビジョニングインフラストラクチャ制御を許可できます。

SpinnakerのClouddriverを使用して、すべての主要なパブリッククラウドプロバイダーとKubernetesにデプロイします。

Spinnaker配信パイプラインの一部として、構成とファームウェアの変更を調整することもできます。

マネージドデリバリー

■宣言型定義を提供

Spinnakerの機能セットであるマネージドデリバリーは、「一般的インフラストラクチャ」および「その他要件」について宣言型定義を提供します。

ユーザーは、これらの事前構築された定義を使用して要件を宣言し、ビジュアルインターフェースを介して、環境間で要件を移動できます。

■アプリケーション配信用の「舗装道路」を作成

Spinnakerを使用すると、有効な「インフラストラクチャ」+「構成」のみが本番環境に到達することを保証するガードレールを使用して、アプリケーション配信用の「舗装道路」を作成できます。

ビジネス要件と規制要件の強化を自動化しながら、開発チームを煩わしい運用プロビジョニングから解放します。

■展開パイプライン作成

統合テストとシステムテストを実行し、サーバグループをスピンアップおよびスピンダウンし、ロールアウトを監視する展開パイプラインを作成します。

以下のパイプライントリガーに対応しています。
・gitイベント
・Jenkins
・Travis CI
・Docker
・CRON など

■構成ドリフト問題を排除

「不変イメージデプロイ」「ロールアウト高速化」「ロールバック容易化」などにより、デバッグが難しい構成のドリフト問題を排除します。

■カナリアリリースなどの配信自動化対応

「カナリアリリース」とは、新バージョンアプリのリリース時に、従来バージョンのアプリを並行稼働させ、一部ユーザーのみを新バージョンにアクセスさせるデプロイ手法を指します。

このようなカナリアリリースなどの配信自動化戦略は、ビジネスやエンドユーザーの利便性を保護しながら、迅速なイノベーションから価値を獲得するために必要な安全性を提供します。

マルチクラウド

Spinnakerは各種クラウドプロバイダーをサポートしています。

・Amazon Web Services—Amazon EC2
・Microsoft Azure
・Google Compute Engine—Google App Engine、Google Kubernetes Engine
・Openstack
・Kubernetes
・Cloud Foundry
・Oracle Cloud Infrastructure
・DC/OS など

統合とカスタマイズ

■SDLC(ソフトウェア開発ライフサイクル管理)用ツール統合

Spinnakerは、多数の独立したマイクロサービスで構成されており、「HalyardCLIツール」または「KubernetesOperator」が他サービスのライフサイクルを管理します。

Spinnakerのプラグインフレームワークにより、SDLC(ソフトウェア開発ライフサイクル管理)用のさまざまなツールをSpinnakerと統合することで、ニーズに合わせて簡単にカスタマイズできます。

■プラグイン

プラグインを使用する場合は、Spinnakerを更新せずに追加できるため、ソフトウェア配信ツールチェーン全体を簡単に活用できる可能性は高まります。

この仕組みにより、Spinnakerはパフォーマンスと運用上の利点を実現しています。

「Spinnaker」のコア機能

オープンソースのマルチクラウド継続的デリバリープラットフォームであるSpinnakerは、ソフトウェア更新を高速かつ確実にリリースするために、「アプリケーション管理機能」と「アプリケーション展開機能」の2つのコアセット機能を提供します。

コア機能①「アプリケーション管理機能」

■概要

Spinnakerのアプリケーション管理機能は、クラウドリソースを管理する機能を提供します。

Spinnakerにおける「アプリケーション」は、一般的に「アプリケーション」または「マイクロサービス」と呼ばれるサービスコレクションの概念をモデル化しています。

■アプリケーション

Spinnakerにおける「アプリケーション」とは、Spinnakerを使用してデプロイする「サービス」「サービスのすべての構成」「実行されるすべてのインフラストラクチャ」を表します。

「アプリケーション」=「クラスタのコレクション」であり、「クラスタ」=「サーバグループのコレクション」です。アプリケーションには、ファイアウォールとロードバランサーも含まれています。

一般的に、Spinnakerを使用する場合、サービスごとに異なるアプリケーションを作成します。

■クラスタ

Spinnakerにおける「クラスタ」とは、サーバグループの論理グループとして定義できます。

クラスタセクションは、アプリケーションのデプロイに関連する情報を階層化できるコマンドアンドコントロールベースとして機能します。

■サーバグループ

基本リソースであるサーバグループでは、基本的な構成設定を定義します。

・デプロイ可能なアーティファクト—VMイメージ、Dockerイメージ、ソースの場所
・インスタンス数
・自動スケーリングポリシー
・メタデータ
・(オプション)ロードバランサー
・(オプション)ファイアウォール など

サーバグループはデプロイされると、実行中のソフトウェアのインスタンス(VMインスタンス、Kubernetesポッド)のコレクションになります。

■ロードバランサー

ロードバランサーは「プロトコル」および「ポート範囲」に関連付けられ、サーバグループ内のインスタンス間でトラフィックのバランスを調整します。

ロードバランサーのヘルスチェックオプションを有効にすると、ヘルス基準を定義し、ヘルスチェックエンドポイントを柔軟に指定できます。

■ファイアウォール

ファイアウォールは、ネットワークトラフィックのアクセスを定義します。

これは事実上、ファイアウォールルールのセットであり、「通信プロトコル(TCPなど)」「ポート範囲」「IP範囲(CIDR)」などによって定義されます。

コア機能②「アプリケーション展開機能」

■概要

Spinnakerのアプリケーション展開機能を使用することで、継続的デリバリーワークフローについて構築および管理を実施できます。

■パイプライン

概要

Spinnakerにおける「パイプライン」とは、展開の管理構造であり、「一貫性」「再現性」「安全性」を実現するためにデプロイメントを管理します。

パイプラインはステージと呼ばれる一連のアクションで構成され、ステージ間でパラメータを渡すことで機能します。

開始トリガー

以下のものを開始トリガーとして構成できます。

・手動開始
・Jenkinsジョブ完了
・レジストリに表示される新しいDockerイメージ
・CRONスケジュール
・別のパイプラインのステージイベント など

通知

パイプラインの「開始時」「完了時」「失敗時」などのタイミングで、「電子メール」「Slack」「SMS」などを介して関係者に通知を送信するように構成できます。

実行ログ

パイプラインの実行履歴を保存し表示できます。

これは、各デプロイメント操作の詳細を確認する手段として機能するだけでなく、プロセスやポリシーに関する監査ログとしても利用できます。

マネージドパイプラインテンプレート

マネージドパイプラインテンプレートは、さまざまなチーム間でパイプラインを共有管理できる機能です。

【テンプレート】
パイプラインテンプレートは、ユーザーが値を提供する変数のセットを使用して、パラメータ化されたパイプラインを定義します。
このテンプレートは、「パラメータ化されたパイプラインから、パイプラインインスタンスで発見されたパイプライン構成を差し引いたもの」であり、確立したパターンに従うパイプライン作成に役立ちます。

【構成】
テンプレートから作成されていないパイプライン構成と同じですが、「変数バインディング」と「テンプレート参照」があります。
「トリガー」「通知」「パラメータ」などについて、「継承」や「オーバーライド」が可能となっています。

■ステージ

Spinnakerにおける「ステージ」とは、パイプラインが線形または並列で実行するアクションのための「一連のタスク」および「構成されたステージ」のコレクションです。

Spinnakerはさまざまなステージを提供しています。
・インフラストラクチャ操作関数—デプロイ、サイズ変更、無効化
・Runbook定義用ユーティリティスキャフォールディング関数—手動判断、待機、Jenkinsジョブ実行 など

■オーケストレーション処理

Spinnakerは、クラウドネイティブの展開戦略をファーストクラスの構成として扱い、基盤となるオーケストレーションを処理します。

・ヘルスチェック検証
・古いサーバグループの無効化
・新しいサーバグループの有効化 など

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【ChatGPT探訪】「 無限議論 」〜最強スタンド考察〜🤔

ChatGPT探訪

2024.05.07

【ChatGPT探訪】「 無限議論 」〜最強スタンド考察〜🤔

マジセミSNSに投稿した 【担当者A】の「 無限議論 」〜最強スタンド考察〜💬 を記事化したものです。 ChatGPTに課金していないみなさんにも、 AI同士の議論をお楽しみいただけます👍 ※原稿テキストを放り込むだけで、 ジョジョ風イラストを作成してしまう生成AIがすごくないですか?

経営活動に活用できる 原価管理 を実現するには? 〜製造業の現実的な課題に向き合い、現場視点から改善する原価管理手法の必達プロセスをご紹介〜

ウェビナーまとめ

2024.05.15

経営活動に活用できる 原価管理 を実現するには? 〜製造業の現実的な課題に向き合い、現場視点から改善する原価管理手法の必達プロセスをご紹介〜

2024年3月12日に三菱電機ITソリューションズ株式会社とアットストリームパートナーズ合同会社の共催で、組立加工製造業向けのセミナー「なぜか高くなる原価を管理する 不確実性の時代を乗り切るためのコスト戦略とは」が開催されました。本セミナーでは、製造業における原価管理の現状と改善手法について深く掘り下げ、経営活動への具体的な活用方法を提示しました。今回は、その講演の要点をお伝えします。

【トレンド解説】米国における「 生成AI活用 」最新動向📈

トレンド解説

2024.05.07

【トレンド解説】米国における「 生成AI活用 」最新動向📈

「米国における 生成AI活用 最新動向」について解説しています。生成AIは日本企業にも多くの可能性をもたらし、「デスクワークの効率化」や「業務の自動化推進」に貢献しています。生成AIを理解し、活用することが、グローバルな競争力を高める鍵となります。