GitHubは200万行規模のRailsアプリケーションであり、毎週RailsとRubyを最新版にアップデートし続けている

今回は「GitHubは200万行規模のRailsアプリケーションであり、毎週RailsとRubyを最新版にアップデートし続けている」についてご紹介します。

関連ワード (可能性、運用、開発等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


4月10日でサービス開始からちょうど15周年を迎えたGitHubは、当初からRuby on Railsを用いたモノリシックなアプリケーションとして作られてきました。現在では200万行近い規模のコードになっているそうです。

今年1月には1億人以上のデベロッパーが利用することも発表しており、GitHubはまさに世界最大級のRailsアプリケーションと言っていいでしょう。

そのGitHubは5年前の2018年、Railsのバージョンを3.2から5.2に上げる作業に1年半を費やし。そして二度とこのようなことにならないよう、より頻繁にアップデートを行うべき、などの教訓を得たとしていました。

そして現在、GitHubは毎週月曜日にRailsのアップデート作業を開始するようになっており、またRubyも毎週アップデートを行っていることをブログ「Building GitHub with Ruby and Railsで明らかにしました。

See how we've matured from taking months to migrate from our custom fork of #RubyonRails to a newer stable release to now upgrading in under a week thanks a thorough test suite, great testing environments, and progressive rollout deploys. https://t.co/cXtgDqRz0z

— GitHub (@github) April 6, 2023

現在のGitHubがどのようにRailsとRubyをアップデートしているのか、ブログで書かれているポイントを見てみましょう。

200万行近い規模のコード、Railsを毎週アップデート

前述の通り、ブログによると現在のGitHub.comは200万行近い規模のコードとなっており、1000人以上のエンジニアが開発に取り組んでいるとのことです。

そして1日に20回以上デプロイをし、毎週Railsをアップデートしているとも説明されています。

Railsのアップデートの様子をブログから以下に引用します。

Every Monday a scheduled GitHub Action workflow triggers an automated pull request, which bumps our Rails version to the latest commit on the Rails main branch for that day. All our builds run on this new version of Rails. Once all the builds pass, we review the changes and ship it the next day.

毎週月曜日にはスケジュール化されたGitHub Actionのワークフローが自動的にプルリクエストを実行し、その日のRailsのメインブランチの最新のコミットが、私たちのRailsバージョンに反映されます。
私たちのビルドは、すべてこの新しいバージョンのRailsで実行されます。すべてのビルドがパスした後に変更点がレビューされ、翌日には本番環境へと出荷されるのです。

毎週Railsをアップデートするようになったことで次のようなメリットが得られたとしています。

GitHubを利用しているデベロッパーに最新のツールを提供できる
より優れたデータベース接続処理、より高速なビューレンダリングなど、最新のRailsの機能をユーザーに提供できる

自社独自のRailsパッチが不要になる
自社向けのパッチを作り、それがRailsに反映されるのを待つのではなく、Rails自体にパッチを提案できるようになる

Railsとの協業が容易になる
Railsに提案して次バージョンで反映されるのを待つ代わりに、Railsに対して作業し、翌週には反映されるのを見るようになる

最新の依存関係を維持することで、よりよいセキュリティの状態が得られる
日常的にアップデートしているため、脆弱性の報告があったとしても、なにか特別な作業が発生するわけではない

ビッグバン的なマイグレーションがなくなる
アップデートごとに小さな変更しか行われないため、アップデートによる非互換があったとしても理解しやすく、対処しやすい。

メインブランチのバグを発見し、フィードバックしやすい
これにより開発チームが強化され、アプリケーションへの理解を深めることにもなる

Rubyも毎週アップデート

GitHubではRailsと同じように、Rubyについても毎週アップデートを行っているとのことです。下記もブログからの引用です。

Naturally, we have a similar process for Ruby upgrades. In February 2022, shortly after upgrading to Ruby 3.1, we started building and testing Ruby shas from 3.2-alpha in a parallel build. When CI runs for the GitHub Rails application, two versions of the builds run: one build uses the Ruby version we are running in production and one uses the latest Ruby commit including the latest changes in Ruby, which we update weekly.

当然ながら、Rubyのアップグレードも同様のプロセスで行っています。2022年2月、Ruby 3.1にアップグレードした直後に、Ruby 3.2-alphaのビルドとテストも並行して開始しました。GitHubのRailsアプリケーションのCIが実行されると、2つのバージョンでビルドが実行されます。1つのビルドは本番で運用しているRubyのバージョンを使い、1つは毎週更新しているRubyの最新の変更を含むRubyを使っています。

GitHubは、このようなRailsやRubyのアップデートを行うために、徹底したテストスイートを維持し改善するために働く多くの優秀なエンジニアが必要だと説明しており、それによって自社のテストスイートは問題を発見する可能性が高く、もし発見できなかったとしても、それがユーザーで発覚する前のデプロイ中に発見できると確信していると説明。

それだけGitHubのエンジニアリングは成熟しているのだ、としています。

  • Building GitHub with Ruby and Rails | The GitHub Blog

COMMENTS


Recommended

TITLE
CATEGORY
DATE
出張手配・管理の自動化および出張費の最適化SaaS「AI Travel」を提供するAIトラベルが3億円の資金調達
IT関連
2022-02-04 23:36
「iOS 15」発表、FaceTimeの“共同視聴”や「集中モード」などを搭載–iPhone 6s以上
IT関連
2021-06-08 12:59
グーグルが自動車用Androidアプリの開発にライブラリの提供などで便宜強化
ソフトウェア
2021-05-20 19:32
コロナ禍の1年を経て、AI分野はいかに成長したか
IT関連
2021-04-14 23:58
第一線のDXコンサルタントが新会社を設立した思いとは
IT関連
2021-02-12 10:23
Snowflake、マーケットプレイスの国内展開を本格化–国内7社がデータ提供に参画
IT関連
2022-10-26 19:21
primeNumber、データテクノロジー事業でインドに進出–現地でビジネス開発チームを発足
IT関連
2024-02-22 14:03
Facebookの「MySQL 8.0」への移行作業、エンジニアが詳細をブログに
IT関連
2021-07-29 02:49
ランサムウェアの影響で検知までの日数が短縮–ファイア・アイ調査
IT関連
2021-06-14 07:31
フロリダ州の「禁止の禁止」令はSNS企業の言論の自由の試金石となる
ネットサービス
2021-05-26 18:21
「メルブラ」新作 TYPE-MOONの人気格闘ゲームが“月姫リメイク”に合わせリニューアル マルチプラットフォーム展開で2021年発売
くらテク
2021-03-29 12:08
Apple、Google、マイクロソフト、Mozillaらがブラウザ間の相互運用性を測定し改善するためのプロジェクト「Interop 2023」を実施中
Apple
2023-02-15 01:56
TikTokと連携、タカラトミーが電動ヨーヨーとARエフェクトを組み合わせた新感覚トイ「MUGENYOYO」発売
IT関連
2022-03-09 17:46
NTT西子会社で900万件の個人情報漏えい、システム管理の元派遣社員が持ち出し
IT関連
2023-10-19 12:02