# Rapid ## 概要 [[Google]] が開発した自動リリースシステム。スケーラブルでヘルメティック(hermetic)かつ信頼性の高いリリースを提供するフレームワークとして、社内の複数の技術基盤(ビルドツール [[Blaze]]、クラスタ管理システム Borg、パッケージ管理システム Midas Package Manager)を統合する。[[@2016__OReilly__SRE Book - Chapter 8 Release Engineering]] で詳述される。 ## 仕組み Rapid のプロジェクトは *blueprint* と呼ばれる内部設定言語のファイルで構成され、ビルド・テスト対象、デプロイルール、プロジェクトオーナー等の管理情報を定義する。ロールベースのアクセス制御リストにより、プロジェクトごとに操作権限が管理される。Rapid はワークフロー(直列・並列に実行できるアクションの集合、他のワークフローの起動も可能)に基づき、作業要求を本番サーバー上の Borg ジョブとしてタスクへディスパッチする。この仕組みにより、Google の本番インフラを利用して数千件のリリース要求を同時に処理できる。 典型的なリリースプロセスは以下の流れをとる。 1. 継続テストシステムから自動取得したリビジョン番号でリリースブランチを作成する。 2. [[Blaze]] でバイナリをコンパイルし単体テストを実行する(多くの場合並列に、専用環境で実施)。 3. ビルド成果物をシステムテストとカナリアデプロイに供する。 4. 各ステップの結果をログに記録し、前回リリース以降の全変更のレポートを作成する。 Rapid はブランチ+チェリーピック方式でリリース内容を管理し、個々のチェリーピック要求を承認・却下できる。単純なデプロイは Rapid が直接、Borg ジョブを新しい MPM パッケージへ更新する形で駆動する。より複雑なデプロイは、SRE が開発した汎用ロールアウト自動化フレームワーク Sisyphus に委譲され、Rapid はビルド ID に紐づく MPM のビルドラベルを指定して長時間実行の Sisyphus ジョブとしてロールアウトを作成する。 ## 関連 - [[@2016__OReilly__SRE Book - Chapter 8 Release Engineering]]: 本エンティティの一次出典 - [[Blaze]]: Rapid が呼び出すビルドツール - [[Borg]]: Rapid のワークフローが実行される基盤クラスタ管理システム - [[SRE Book]]: 収録書籍 ## 出典 - Betsy Beyer, Chris Jones, Jennifer Petoff, Niall Murphy (eds.), *Site Reliability Engineering*, O'Reilly, 2016, Chapter 8 (Written by Dinah McNutt).