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

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

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

Go でのチームのコーディング経験は、1 人のエンジニアから始まりました。Bleigh 氏は、「ピアツーピア学習と、一般的に Go が始めやすいことから、チームの全員が現在 Go の開発経験を持っています」と述べています。チームに新たに加わった人の大部分は Go の経験がないものの、「ほとんどの人が 2 週間以内に生産的になっている」ことがわかりました。

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

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

「一般的に言って、チームで Go に不満を感じることはなく、邪魔にならずに作業を進めることができます。」

— Robert Rossneyソフトウェアエンジニア

数十万の顧客が Firebase Hosting でウェブサイトをホストしており、これは Go コードが 1 日あたり数十億件のリクエストを処理するために使用されていることを意味します。Bleigh 氏は、「Go に移行して以来、お客様の数とトラフィックは複数回 2 倍になりましたが、微調整された最適化は必要ありませんでした」と述べています。Go により、チームはソフトウェアとチームの両方でパフォーマンスの向上を実感しており、生産性が大幅に向上しました。Rossney 氏は、「一般的に言って、…チームで Go に不満を感じることはなく、邪魔にならずに作業を進めることができます」と述べています。

Firebase Hosting チームに加えて、Google 全体のエンジニアリングチームも開発プロセスに Go を採用しています。コアデータソリューションChromeチームが、大規模で高速、信頼性があり、効率的なソフトウェアを構築するために Go をどのように使用しているかをご覧ください。

Firebase Firebase

Firebase について

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

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