Atlassianが先頃リリースしたStash Data Centerは,オンプレミスソースコードとGitリポジトリの管理ソリューションであるStashに,高可用性と水平拡張性を加える展開オプションだ。ダウンタイムなしで新たなノードを追加可能とすることで,アクティブ-アクティブなクラスタリングと速やかなスケーラビリティを実現する。
Stash Data Centerは,JIRAとConfluence Data Centerのエディションを結びつけたもので,“高可用性とスケールアップ実行時のパフォーマンス”を要件とする企業シナリオを念頭に設計されている。すべてのサービスは単一のサーバ製品として,同じエンドユーザ機能を提供すると同時に,ユーザ処理能力やアプリケーション回復力,サービス品質のために,同じクラスタリング技術を使用している。予測可能なコストで,柔軟なカスタムインフラストラクチャを選択可能にするため,サーバやCPUの数ではなく,あえてユーザ数によるライセンスとなっている。
“世界中の13,000以上の組織で採用”されているStash Serverは,次のような企業環境用の機能を備える。
- プルリクエスト,ブランチの自動マージ,品質要件の適用チェックなど,さまざまなGitワークフローに基づいた,コードレビューとコラボレーションのサポート。
- JIRAおよびBambooとの開発ワークフロー統合による,イシューからのGitブランチ生成と自動移行,ビルドプラン作成のためのブランチ削除といった機能の提供。
- 包括的REST APIやAtlassian Marketplace由来のアドオンによる拡張性。
- グローバル,プロジェクト,リポジトリおよびブランチレベルでのアクセス許可に加えて,プルリクエストの受入やマージの許可もコントロール可能なコードアクセス制御。
Stash Serverの企業運用や高可用性,スケールアップに関する詳細なガイダンスが用意されている。Stash Data Centerクラスタにより,さらに高度な要求にも対応できるようになった。
- スケールアップによるパフォーマンス向上 – ノードに追加により,より多くのユーザへのサービス提供が可能になる。
- 高可用性とフェールオーバ – アクティブ/アクティブクラスタリングにより,ノード損失によるユーザへの影響を最小限あるいは皆無にすることが可能。
- スケールアップが容易 – 新規ノードをダウンタイムなしに提供できる。
InfoQではEric Wittman氏(開発ツール担当ゼネラルマネージャ)に,Atlassianの最新データセンタについて話を聞いた。
InfoQ: Stash Serverは現在でも,単一サーバで数千人のユーザに対する垂直スケーリングを提供可能で,企業の大小を問わずに使用されています。Stash Data Centerでさらなるスケーラビリティ向上を目指した動機は何なのでしょう?
Wittman: 多数のユーザに対するスケールアップが可能な場合でも,物理的なサーバによる制限は必ず存在します。水平的なスケールアップ機能を提供することによって,これを克服したかったのです。10,000を越えるユーザ規模での運用を視野に入れた顧客の存在に加えて,Stash Data Centerによるスケーラビリティ向上の動機になったのは,組織のCIプラクティスの拡大に伴ったピークロードを処理するSCMシステムのビルドサーバに対する,強い要望です。
InfoQ: Stash Data Centerの資料には,少なくとも4ノードまではほぼ直線的に水平スケーリングする,と記されています。ユーザ数ベースの価格設定ということもあって,“必要な数のノードを追加”するように推奨されていますが,サポートするユーザ数に上限はあるのでしょうか?
Wittman: Stash Data Centerのサポート可能なユーザ数には,固定的な上限は設けてはいません。社内では4ノードまでのテストを実施済です。スケーラビリティの測定では,クラスタの処理可能な全体のスループットを確認しています。サポート可能なユーザ数は,ノードの数だけではなく,CIのような自動化システムによってシステムに課せられる負荷量にも依存します。
InfoQ: Gitのスケールアップは重要な技術的課題だと考えられますが,それを達成した方法について,簡単に説明して頂けますか?例えば,Gitの既定方法から変更されたものは何かありますか?
Wittman: 複数のマシンにスケールアウトすることで,CPUやメモリ,ローカルディスクキャッシュが追加され,特にGitのホスティング処理でのリソース使用状況が改善されます。クラスタノード上の高速なローカルディスクを追加することは,当社のSCMキャッシュの性能向上にも寄与しています。それら以外で,Git自体に変更を加えるようなことはしていません。
- Gitの基本概念に対する詳細な検討,そこから生じる課題,その緩和策などについては,Stefan Saasen氏(Atlassian Stashのアーキテクト)がAtlassian Summit 2014で行ったプレゼンテーション "Scalling Gift" に紹介されています。
InfoQ: Stashはそのワークフロー統合の優秀さから,JIRAやBambooなどのAtlassianのツールと組み合わせて使用されるのが普通ですが,Stash単独でも使用できるのでしょうか?
Wittman: Stashだけを所有して,その詳細なアクセス許可を活用しているユーザもいます。ですが,ほとんどのStashユーザは,コードアクセス管理に加えてJIRAやBambooとの統合ワークフローのメリットも活用しています。
InfoQ: あなたの同僚であるTim Pettersonさんが先日,StashとBitbucketで使用されている“改良型プルリクエストモデル”の解説をしました。このモデルのアルゴリズムはこれまでより複雑で,実装には多くのリソースが必要ですが,なぜこのアプローチを選択したのか,簡単に説明して頂けますか?
Wittman: StashとBitbucketで採用しているプルリクエストアルゴリズムには,2つの大きなメリットがあります。いずれも他のGitソリューションには見られないものです。
- プルリクエストにマージ競合を表示可能であるため,競合するコードの開発者が,その解決方法を検討することができる。
- 機能ブランチ上の変更がマスタブランチにどう影響するか,レビュアが確認することができる。製品として実際に出荷されるコードのイメージをより適確に把握できると同時に,最終的にユーザに出荷される欠陥数の削減が可能になる。
InfoQ: AtlassianではStash on Dockerをすでにリリースしていますが,現時点ではまだ評価目的に留まっています。こちらもクラスタ展開に対応するのでしょうか,また,製品展開オプションとして,将来的にサポート対象にすることを検討していますか?
Wittman: Docker展開オプションは,開発者による評価が主なユースケースですので,現時点ではクラスタ展開に対応していません。Dockerのプラットフォームとしての成熟とユーザの要望を見ながら,将来的にはDockerイメージを,サポート対象の展開オプションとして評価するつもりです。
先日リリースされたStash 3.8では,完全にヘッドレスなプロビジョニングに加えて,"プロジェクトとリポジトリの数,Gitプッシュとプルの数,さまざまなスレッドプールの計測値"JXMパフォーマンスカウンタの導入によって,さらに操作面が改善されている。
Stash Data Centerの資料には,フェールオーバ,パフォーマンス,スケーラビリティに関する章やFAQなど,さらに詳細な説明がある。同じことがユーザマニュアルにも当てはまる。また開発者用の資料では,プラグインやリモートREST APIを通じたStashの拡張が取り上げられている。一般的なStashサポートリソースは,Atlassianサポートポータルを通じて提供される。専用の企業向けサービスとサポートプログラムも用意されている。