MicrosoftによるGitHub買収発表で、GitHubと競合するGitLabに多くのオープンソース開発者が流れた。そして、そのGitLabが今度はコードリポジトリを「Microsoft Azure」から「Google Cloud Platform」(GCP)に移行する。
GitLabでGoogle Cloud Platformへの移行プロジェクトを主導するAndrew Newdigate氏は移行の目的について、サービスのパフォーマンスと信頼性を改善するためだと述べている。
さらに具体的に言うと、GitLabはKubernetesに将来性を見出していることを移行の理由に挙げている。GitLabは、Kubernetesが「大規模な環境での信頼性確保を可能にする」技術だと表現する。Kubernetesは元々Googleが開発したシステムであり、Kubernetesのサポートという意味では「Google Kubernetes Engine」(GKE)の安定性や成熟度にかなうものはない。KubernetesとGitLabを統合管理できることを考えると、GCPを選択するのは自然な流れである。
Newdigate氏の投稿によると、移行開始後は「GKE上のKubernetes環境の運用に人的リソースを投下し、GitLab.comの安定性とスケーラビリティ向上に注力する。移行に際しては、GitLab 11.0のリリースでベータ版になったGitLab Helm Chartsを利用する」という。また、GitLabのGeoも使われる。GeoはGitLabインスタンスを読み取り専用でミラーリングしてくれるプロダクトだ。
もっとも、GitLabはMicrosoftがGitHub買収を発表する前から移行の検討にとりかかっており、Microsoftと距離を置くためにこのたびの決断をしたわけではない。
Newdigate氏によると、GitLabでは何カ月も前からGeoを使って、gprd.gitlab.comというGitLab.comのセカンダリサイトをGoogle Cloud Platformで運用してきた。ここでは、200テラバイトのGitデータ、2テラバイトのPostgreSQLのリレーショナルデータのコピーを同期しているという。Git LFSやそのほかのファイルなどのレプリケーションも作成したが、(後述の通り)並行してオブジェクトストレージの「Google Cloud Storage」(GCS)に移動した。
事情により、GitLabはGCPでは米国東部(サウスカロライナ州)リージョンを、Azureデータセンターでは米国東部 2(バージニア州)リージョンを利用している。往復の距離はおよそ800km、3光ミリ秒(光ミリ秒とは光が1ミリ秒間に進む距離)相当だ。インターネットの世界でなじみのある単位に置き換えると、pingの応答時間は30ミリ秒だそうだ。
Newdigate氏は、AzureとGCPの間で同期するデータの量を考えてレイテンシが大きくなることを心配していたが、初期テストの結果、ネットワークのレイテンシや帯域の問題はボトルネックにならないことが分かったという。
この移行と並行して、GitLabはすべてのファイル類200テラバイト相当をGoogleのオブジェクトストレージであるGCSに移行している。
これまでGitLabではこれらのファイルをNFSサーバに保存していたが、これには単一障害点(SPOF)の問題が付きまとい、スケールすることも難しかった。GCSに移行することで、GCSが擁する冗長性やマルチリージョンの強みを生かすことができる。GitLabのGit RPC(リモートプロシージャコール)サービスである「Gitaly」プロジェクトもこの取り組みの対象となる。NFSサーバの利用を止めることは、GitLabをKubernetesに移行する上で必須だった。
すべてが順調に進んだ場合、切り替えは2018年7月28日に行われる。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。