株式会社ジラフ:Google Cloud Platform への移行でインフラ管理の課題を解消、新サービス開発への集中が可能に
Google Cloud Japan Team
Twitter や Instagram、Facebook を活用した匿名質問サービスである Peing-質問箱-(以下、質問箱)を展開する株式会社ジラフ(以下、ジラフ)。当初は、Kubernetes を使って運用していましたが、トラフィックの増加によりより効率的な管理体制を求めてマネージド サービスへの移行を決定。Google Cloud Platform を利用した質問箱のマイグレーションについて、ジラフのエンジニアに話を伺いました。
利用している Google Cloud Platform サービス: Compute Engine、Google Kubernetes Engine、Cloud SQL、Cloud Memorystore、Cloud Storage
Kubernetes が容易に管理できる Google Cloud Platform を採用
SNS と連動して、質問の募集、回答がおこなえる匿名質問サービス「質問箱」。自分の SNS アカウントに質問を募集する「質問箱」を設置することができ、フォロワーからの匿名質問を受け取って、回答したり、またその回答をシェアすることもできます。主に Twitter 上で利用されていますが、Instagram や Facebook からもログインできるようになっています。2017 年 12 月に、個人の開発者が運営していたサービスの事業譲渡を受けて、新たにジラフのサービスとして提供を開始。2019 年 8 月からは、匿名のダイレクト メッセージ(DM)を送ることができる有料サービスをスタート、海外展開も実施し、現在、月間 3 億 PV 、MAU は 2,000 万人を超え、サービス全体で大きく利用者数を伸ばしています。
代表的な利用のされ方は大きく 2 つ。知りたいことを知っていそうな誰かに質問するツールとして利用するケースと、新たなコミュニケーションの 1 つとして利用するケースです。個人利用はもちろん、匿名という特性上、芸能人や政治家のオフィシャルアカウント、企業アカウントなどにも利用されています。
開発統括部 エンジニアの梅本稜さんは、サービス開始当時を次のように振り返ります。
「国内レンタル サーバー事業者の VPS サービス上に 12 台程度の仮想マシンを構築し、その上でサービスを提供していました。ただ当時は、仮想マシンにファイルを同時にコピーしてデプロイする方法でソースコードを反映していたため、途中で仮想マシンが止まると、古いソースコードと新しいソースコードが混在したシステムになってしまい、うまく動作しなくなることが多々ありました。そこで 2018 年 4 月、レンタル サーバー上の仮想マシンをクラウド サーバーに移行するとともに、サービスをコンテナ化して、Kubernetes で管理する仕組みを構築しました。」
コンテナ化当初はうまく動いていたものの、トラフィックが増えるにつれ、今度は Kubernetes 内のネットワークを管理できなくなる事態に。
そこで、いよいよ Kubernetes が容易に管理できるマネージド サービスを求めて、2018 年 11 月、 Google Cloud Platform(GCP)を採用することを決定。すぐにシステムの構築を開始し、1 か月後の 2018 年 12 月に GCP 上で質問箱のサービス提供を開始させます。
「システムの内部でトラフィックを転送するときに、ネットワーク詰まりが発生してしまい、レイテンシーとデータベースの負荷が一致しない状況で、どんなにデバッグしても対処できませんでした。GCP に移行しないと、Kubernetes の管理ができない状態だったうえ、短期間での移行作業が不可欠だったんです。」(梅本さん)
アプリケーションの実装や新サービスの開発に集中できる環境に
質問箱の移行では、Compute Engine をはじめ、Google Kubernetes Engine(GKE)、Cloud SQL、Cloud Memorystore、Cloud Storage、Stackdriver などの GCP のサービスが利用されています。基本的には、ウェブアプリケーション フレームワークである Ruby on Rails でサーバーを構築し、enginx(エンジンエックス)のロードバランサー機能を利用し、その後ろに GCP によるシステムが構成されています。
質問箱を移行するクラウドサービスとして、GCP の採用を決めた理由を梅本さんは、次のように話しています。「Kubernetes のマスターと、それ以外のノードの両方のアップデートに対応しているのが GKE だけでした。また Kubernetes は、もともと Google が開発したシステムなので、GKE と Kubernetes の親和性が高いはずだと思ったことも、GCP を採用した理由の 1 つでした 。」
現在の質問箱のシステムは、コンテナ化されたすべてのサービスが、GKE で管理されています。また、Cloud SQL により、3 台のデータベースを構成してデータを蓄積。Cloud Memorystore をキャッシュに利用しています。データベースのデータ量が多かったため、移行に時間がかかったものの、移行後は問題なく稼働。さらに Stackdriver で、ログの監視はもちろん、モニタリングによりメトリクスを収集して分析をしています。
質問箱は、海外でもサービスを展開しており、海外向けの質問箱の仕組みも GCP を使って構築しています。海外向けサービスでは、海外リージョンを利用、ドメインを完全に分け、Kubernetes のクラスタも、Cloud SQL によるデータベースも、日本の質問箱とは別に運用管理がされているとのこと。
GCP を採用した効果については、梅本さんはこう話します。「GCP が凄いなと思ったのは、ボタン 1 つで何でもできることです(笑)。以前から自前で Kubernetes を使っていたノウハウがあったので、アプライ先を変更するだけで GKE 対応ができ、さらにこれが、1 か月という短期間での移行の実現にもつながりました。また、Stackdriver にログ管理とモニタリングの機能が 1 つにまとまっているのも非常に便利だと思いました。」
「また、GCP を採用したことで、トラフィックの増加による負荷にもネットワークが耐えられるようになりましたし、ネットワークの管理が不要になったことで、アプリケーションの実装や新サービスの開発に集中できるようになりました。これまで、社内で Kubernetes を扱えるのが自分だけだったこともあり、特になにか問題が発生した場合には対応に苦労することもありましたが、その点、ノードの自動修復やオート アップグレードなどの機能も本当に便利で助かっています。」(梅本さん)
今後、質問箱では、GCP で構築した仕組みの一部を、Cloud Functions や Cloud Run に移行していくことを計画しています。梅本さんは「Cloud SQL のデータベースへのコネクションの増加にも対応が必要そうです。また、トラフィックの増加に比例して増えるサーバーコストをいかにおさえるかも今後の課題。サーバーレスで、必要なときだけ使う方法も検討中です」と話します。
「現状、収益のほとんどが広告収入なので、今後は課金型の楽しいサービスの拡充にも取り組んでいきたい」と話す梅本さん。最後にエンジニアとしての夢も語ってくれました。「とにかく“強くなりたい”と思っています(笑)。“強い”という意味は、社内外問わず、自分自身に依頼してくる相手の期待に 100 %応えられるということ。会社でやるべきことと、自分の勉強したいことを一致させながら、 GCP への知見・経験も増やしていきたい。Google Cloud のサポートも活用して、さらに”強く”なっていきたいですね。」
2014 年に設立。「2030 年のスタンダードをつくる」という企業理念に基づき、インターネットサービスの企画、開発、運営、および中古機器の買取り、販売を事業として展開。サービスとして、中古機器の買取りプラットフォーム「ヒカカク!」、SNS 上で利用できる匿名質問サービス「Peing -質問箱-」、トレカ専用フリマアプリ「magi」などを提供しています。
その他の導入事例はこちらをご覧ください。