Firebase Hosting チームが Go を使ってどのようにスケーリングしたか

Firebase

Firebase Hosting チームは、Google Cloud の顧客向けに静的ウェブホスティングサービスを提供しています。彼らはグローバルコンテンツデリバリネットワークの背後にある静的ウェブホストを提供し、ユーザーに使いやすいツールを提供しています。チームはまた、サイトファイルのアップロードからドメインの登録、利用状況の追跡まで、さまざまな機能を開発しています。

Google に入社する前、Firebase Hosting の技術スタックは Node.js で書かれていました。チームが Go を使い始めたのは、他のいくつかの Google サービスと相互運用する必要があったときでした。彼らは「並行処理が今後も大きなニーズになる」ことを知っていたため、簡単かつ効率的にスケーリングするために Go を使うことを決めました。チームのソフトウェアエンジニアである Michael Bleigh 氏は、「Go の方がパフォーマンスが高いと確信していた」と述べ、検討していた他の言語よりも「Go の方が簡潔である点が気に入った」と語りました。

Go で書かれた小さなサービスから始まり、チームは一連の移行でバックエンド全体を移行しました。チームは、実装したい大きな機能を段階的に特定し、その過程でそれらを Go で書き換え、Google Cloud と Google の内部クラスタ管理システムに移行しました。現在、Firebase Hosting チームはバックエンドの Node.js コードの 100% を Go に置き換えています。

Go でのコーディング経験は、一人のエンジニアから始まりました。「ピアツーピア学習と Go が一般的に始めやすいおかげで、チーム全員が Go 開発の経験を持つようになりました」と Bleigh 氏は述べました。彼らは、チームに新しく加わった人の大多数は Go の経験がないにもかかわらず、「ほとんどが数週間で生産的になる」ことを発見しました。

「Go を使うと、コードがどのように整理されているか、コードが何をしているかを見ることが簡単です」と Bleigh 氏はチームを代表して述べました。「Go は一般的に非常に読みやすく、理解しやすいです。言語のエラーハンドリング、レシーバー、インターフェースは、言語のイディオムのおかげで、すべて理解しやすいです。」

スケーリングするにつれて、並行処理はチームにとって引き続き焦点となっています。ソフトウェアエンジニアの Robert Rossney 氏は、「Go は、すべての難しい並行処理のものを一か所にまとめるのを非常に簡単にし、他のすべての場所で抽象化されています」と共有しました。Rossney 氏はまた、並行処理を念頭に置いて構築された言語を使用する利点についても語り、「Go には並行処理を行う多くの方法もあります。どのルートが最適か、問題が並行処理の問題であるかどうかを判断する方法、デバッグする方法を学ぶ必要がありました。しかし、それは Go コードで実際にこれらのパターンを記述できるという事実から生じています。」と述べました。

一般的に言って、チームで Go に不満を感じることはありません。Go はただ道を譲ってくれて、仕事に集中させてくれるようなものです。

— ロバート・ロスニーソフトウェアエンジニア

何十万もの顧客が Firebase Hosting でウェブサイトをホストしており、これは Go コードが毎日数十億のリクエストを処理するために使用されていることを意味します。「Go に移行して以来、顧客基盤とトラフィックは何度も倍増しましたが、微調整された最適化を必要とすることはありませんでした」と Bleigh 氏は共有しました。Go を使用することで、チームはソフトウェアとチームの両方でパフォーマンスの向上を経験し、優れた生産性の向上を見ました。「一般的に言って」と Rossney 氏は述べ、「...チームで Go に不満を感じることはありません。Go はただ道を譲ってくれて、仕事に集中させてくれるようなものです。」

Firebase Hosting チームに加えて、Google 全体のエンジニアリングチームが開発プロセスで Go を採用しています。 Core Data Solutions チームと Chrome チームが、Go を使用して大規模で高速、信頼性、効率的なソフトウェアを構築する方法についてお読みください。

Firebase Firebase

Firebase について

Firebase は、高品質なアプリを素早く開発し、ビジネスを成長させるのに役立つ Google のモバイルプラットフォームです。

Firebase Hosting チームは、Node.js からのバックエンド移行、新しい Go 開発者のオンボーディングの容易さ、Go がどのようにスケーリングに役立ったかなど、Go との旅を共有しました。