GitHub、Rails 6がリリースされてからわずか9日で移行を完了。短期間で問題なく移行できた理由とは?
2019年8月17日、Ruby言語によるWebアプリケーションフレームワークの「Rails 6」がリリースされました。
Rails 6は、Railsアプリケーションでのメールやリッチテキストなどを扱いやすくした新機能に加えて、マルチデータベース対応、パラレルテスト機能なども追加されています。
参考:Rails 6.0正式版がリリース。Action Textでリッチテキスト対応、Action Mailboxでメール処理、マルチデータベース、パラレルテストなど新機能
GitHubはRails 6の正式リリースから約9日で、同社の本番システムをRails 6に問題なくアップグレードしたことをブログ「Running GitHub on Rails 6.0」で報告しています。
On August 26, 2019, the GitHub application was deployed to production with 100 percent of traffic on the newest Rails version: 6.0. This change came just 1.5 weeks after the final release of Rails 6.0.
8月26日、GitHubのアプリケーションは最新のRails 6でトラフィックの100%を処理するように本番システムが展開された。この移行はRails 6がファイナルになってからわずか1.5週間程度で行われたのだ。
同社はいかにして短期間で、しかも問題なく移行できたのか、ブログから内容を拾ってみましょう。
GitHubはなぜ短期間で問題なくRails 6へ移行できたのか?
同社が問題なく短期間でRails 6へアップデートできた理由の1番目としてあげたのは、同社自身が積極的にRails 6の開発に関与したことでした。
First, we were more involved in this release than we have been in any previous release of Rails. GitHub engineers sent over 100 pull requests to Rails 6.0 to improve documentation, fix bugs, add features, and speed up performance.
まず最初に、われわれは過去のRailsのどのリリースよりもこのリリースに積極的に関与した。GitHubのエンジニアは100以上のプルリクエストをRails 6に送り、ドキュメントの改善やバグの修正、機能追加、性能向上などに努めたのだ。
そしてRails 6へのアップデートは、GitHubの利用者になんの悪影響も与えずに実行できたと強調。
Second, we deployed Rails 6.0 to production without any negative impact to customers—we had only one Rails 6.0 exception occur during testing, and it was hit by a bot!
次に、Rails 6の本番環境へのデプロイは利用者になんの悪影響もなく行えた。唯一、Rails 6の例外処理をテスト時に引き起こしたのは、ボットによるものだった。
なぜここまで安定した移行が可能だったのかというと、Rails 6の開発において毎週のようにその時点での最新版をテストし続けたからだと。
Instead of waiting for the final release, we’d upgrade every week by pulling in the latest changes from Rails master and run all of our tests against that new version. This allowed us to find regressions quickly and early—often finding regressions in Rails master just hours after they were introduced.
私たちはRails 6のファイナル版を待つ代わりに、Railsのマスターリポジトリから最新版への変更を毎週取得し、それをすべて私たちのテストで走らせていた。これによってレグレッションを早期に素早く発見できるようになった。ときにはRailsのマスターが変更されてから数時間で発見することもあったのだ。
GitHubはこうしたテストそのものを素早く実行しやすくするための機能追加をRails 6に対して行ってもいたことを説明しています。
In addition to ensuring that Rails 6.0 was stable, we also contributed to the new features of the framework like parallel testing and multiple databases.
Rails 6をより確実に安定したものにするために、私たちはパラレルテスティングやマルチデータベース対応といった新機能の追加も行った。
こうしてRails 6がファイナル版に到達するまでに、十分にGitHub自身によってテストされたコードがオープンソースとして公開されたと。
The code for these tools is used in our production application every day—it’s well-tested, GitHub-approved code in a public, open source framework.
こうしたツールのコードは私たちの本番アプリケーションで毎日使われており、十分テストされ、GitHubが認めたオープンソースフレームワークであり、公開されたコードなのだ。
GitHubにとってオープンソースであるRails 6の品質がGitHubのサービスの品質そのものを左右する重要なものである以上、GitHub自身が積極的にRails 6の開発に関与して徹底的に品質や機能を改善していく。それが結果的にオープンソースへの重要な貢献となり、Rails 6の利用者すべてにとって有益なものとなる。ここに、オープンソースとそのコントリビュータとエコシステムの全体にとって健全な関係を見ることが出来るのではないでしょうか。
あわせて読みたい
Google、「Flutter 1.9」リリース、Webアプリ生成機能を統合。Flutterは単一コードでネイティブアプリとWebアプリを開発できるフレームワークに
≪前の記事
Oracle Cloud、ダウンタイムなくVMのコア数やメモリ容量を変更可能な「Elastic Instances」、IOPSや容量を変更可能なストレージを発表。Oracle OpenWorld 2019