こんにちは。エムスリーで SRE エンジニアをしている伴です。
このブログは SRE チームブログリレー 5日目の記事です。
M3 Tech Blog でも AI を開発に活用した記事が多く出ていますが、弊社では開発への AI 活用が積極的に進められています。
その流れで、GitHub が構築している AI のエコシステムを積極的に活用するため、昨年末からセルフホスティング版の GitLab Server から GitHub Enterprise Cloud への移行を進めています。
SRE チームは、GitLab の運用経験を活かし、GitHub への移行支援と運用サポートを担っています。 本記事では、このGitHub移行という『旅』の途中でありながらも、SREチームがどのようにこの道を進んでいるかをご紹介します。
移行の目的
GitHubへの移行には様々な目的がありますが、主要な点は次の通りです。
GitHub Copilot Agent や Devin などの AI ツール導入
冒頭でも述べた AI 活用を進めるためです。
GitHub へ移行することで、GitHub が提供する Copilot Coding Agent や Copilot code review などの AI ツールを利用できるのは大きな魅力の1つです。
Devin も GitLab との連携は可能ですが、まだベータ版です。実際に試したところ、GitHub との連携の方がよりスムーズだと感じました。
GitHub エコシステムの活用
GitHub は世界中で利用されており、GitHub App などを活用した外部ツールとの連携が豊富です。
もちろん、ほとんどのツールは GitLab との連携も可能ですが、参考にできるドキュメントやブログの数は圧倒的に GitHub の方が多いのが現状です。こうした背景から、GitHub への移行を望む声が社内からも多く上がっていました。
強力な GitHub Actions
GitLab にも CI/CD 機能はありますが、GitHub Actions はテンプレートや Marketplace が豊富で、CI/CD の構築がより手軽で簡単だと感じる開発者も多いです。 また、入社してくるメンバーの多くが GitHub の利用経験がある一方で、GitLab の利用経験者は多くありません。そのため、GitLab の CI/CD を使いこなすにはキャッチアップが必要となる状況でした。
移行で SRE が行っていること
エムスリーでは SRE チームが GitHub 移行を一部サポートしています。
具体的には、GitHub Organization の作成、ポリシー設定や監視、そして Action Runner である Self-hosted Runner の提供などを行っています。
ここからは、私たちが行っていることの一部をご紹介します。
Organization の管理
SRE チームでは、Enterprise アカウントを用いた複数 Organization の管理をしています。
Enterprise アカウント配下の GitHub Organization を利用するには各ユーザーへのライセンス割り当てが必要となるため、ライセンスの管理も合わせて実施しています。
Organization の作成と各 Organization へのユーザー招待は、integrations/github provider を利用して Terraform 管理しています。
Terraform を使うことで、各 Organization のユーザー管理や、ユーザーごとの権限管理を効率化しています。
特に、Enterprise ライセンスとは別に、一部ユーザーには Copilot 利用のためのライセンス割り当ても必要なため、複雑なライセンス管理を容易にするために Terraform を活用しています。
Organization ポリシーの設定
Enterprise 配下の GitHub アカウントの利用にはいくつかの制限を設けています。 例えば、次のような制限があります。
- SAML 認証の必須化
- アクセス元 IP のホワイトリスト形式での制限
- Copilot や GitHub Runner などの従量課金ツールの予算上限の制限
これまでセルフホスティング版 GitLab Server を利用していたため、それほど気にする必要がなかった点も、GitHub Enterprise Cloud を利用するにあたって考慮が必要になりました。上記の制限はその一部です。 これらに加えて独自の監視なども用意し、安全に GitHub を利用できるよう環境を整備しています。
監視の作成
例えば、意図しない Public リポジトリの作成などを監視しています。
独自に用意しなくても、Enterprise アカウントからは各 Organization のポリシー設定が可能で、Public リポジトリ作成に関する項目も含まれています。
しかし、Owner 権限を持つアカウントによる Public リポジトリ作成や、既存の Internal または Private リポジトリが Public に変更されることは制限できません。
これまでのセルフホスティング版 GitLab Server では、サーバーへのアクセス自体をIPで制限していたため、Public リポジトリについて深く意識する必要はありませんでした。しかし、GitHub Enterprise Cloud では、たとえIP制限をかけていても、誤操作でPublicリポジトリに変更されてしまうと全世界に公開されてしまいます。こうした意図しない公開を防ぐための対策が不可欠です。
現在は、各 Organization 作成時にインストールした GitHub App の Webhook を経由して、意図しない Public リポジトリの作成や Terraform 管理外のユーザーが招待されたことなどを検知できる仕組みを独自に実装し、セキュリティを強化しています。

Self-Hosted Runner の提供
エムスリーでは、GitHub Actions で利用できる Self-Hosted Runner を準備しています。 Self-Hosted Runner は、github-aws-runners/terraform-aws-github-runner リポジトリを利用して、Organization ごとにランナーを用意しています。
このリポジトリには、Self-Hosted Runner を Organization に登録するためのリソース一式を作成できる Terraform モジュールと、それに利用できる AMI イメージを作成するための Packer ファイルが含まれています。
そして、Self-Hosted Runner を使うメリットのひとつは、やはりコスト面です。
GitHub の Hosted Runner は多くのツールがプリインストールされており便利ですが、単価が高いという側面があります。
例えばエムスリーで利用する Runner の場合、次の表のように大きな差が生まれます。
| Runner スペック | GitHub-hosted | EC2 Spot |
|---|---|---|
| Linux x86_64 4コア 1分当たり | $0.016 | $0.001398 (約 91.26% OFF) |
※ EC2 は、ap-northeast-1 の m5a.xlarge で計算
もちろん、実際には Lambda や SQS、Cloudwatch などのリソースや、使用していない時間に Pool している Runner の費用もかかるため、一概にここまでは安くならないですが、それでも十分に安くなると考えています。
また一部のチームでは、iOS App のビルドを CI/CD で行っているため、macOS の Runner も必要となります。GitHub の Hosted Runner の場合、macOS Runner は Linux の 10 倍のコストが設定されているため、頻繁に実行するとかなりの費用になってしまいます。
同様に EC2 macOS Runner を用意する場合も、Linux より多くの単価がかかります。
エムスリーでは、macOS の PC を CI/CD Runner 用に用意し、サーバルームで CI Runner として稼働させることで、費用を抑える工夫をしています。
Runner 周りのノウハウは GitLab 時代から引き継いでいるものも多いですが、GitHub のエコシステムに合わせた最適化はまさに進行中の課題です。既存の知見を活かしつつ、さらなる効率化とコスト削減を目指し、SREとして試行錯誤を続けています。
まとめ
本記事では、現在進めている GitHub 移行についてご紹介しました。
GitHub 移行はまだ道半ばですが、既に移行したチームからは開発体験の向上が聞かれ、この『旅』の確かな手応えを感じています。SREチームとしては、引き続きこの移行を加速させ、AI 活用による開発スピード向上という最終目標に向かって邁進していきます。
セルフホスティング版 GitLab Server のメンテナンスからの解放という、私たち自身の『道の終点』も視野に入れながら。
We are Hiring!
エムスリーではSREを募集中です。
もしSREの仕事に興味をお持ちいただけたならぜひ詳細をご確認ください。SRE以外にも多数の職種がありますので他の職種ももちろん大歓迎です!
エンジニア採用ページはこちら
カジュアル面談もお気軽にどうぞ
エンジニア新卒採用サイトもオープンしました!
インターンもこちらから。常時募集しています!