DeNAでのGCP活用事例とGCP NEXTでの事例紹介

こんにちは。オープンプラットフォーム事業本部システム開発部の nekokak です。

2016年9月6日(火) に行われた GCP NEXT WorldTour Tokyo において発表およびパネルディスカッションをさせていただきました。

Google Cloud Platform(以後GCP)は、Googleが提供するパブリッククラウドで、今年にはいって各所で急激に利用が進んでいます。

先年までは、GCPの中でもBigQueryというデータウェアハウスの利用が広がっていましたが、データウェアハウスをBigQueryにする延長線上でアプリケーションでもGCPを利用することが多くなったようです。

GCPには様々なプロダクトがありますが、中でも、私が大きな価値を感じているのは「Google AppEngine Standard Environment (以後 GAE SE)」です。

GAE SEを利用すれば、アプリケーション開発者は基本Infraなどを必要以上に意識することなく、アプリケーションの開発のみに集中することができます。

また、実運用が始まった際も、オンプレやAWSのEC2などを単純に利用するとサーバ故障やトラフィックが急増した場合に人手によって作業する必要がありますが、GAE SEではそういったことはすべてGoogleが自動的に対応してくれます。

つまり、「エンジニアがものづくりに最大限集中できるような仕組み」を提供できるようになるわけです。

 

AndAppでのGCP活用について

GCPを AndApp という、DeNAが新しく提供する「PC向けのアプリケーションプラットフォーム」において全面的に採用しています。

AndAppとは

AndAppは、スマートフォン向けに作られたゲームを、スマートフォンよりもハイスペックなPCでプレイ出来るようにするために用意されたPC向けのプラットフォームとなります。

現在は一部パートナー様へSandboxを提供しており、まもなく一般ユーザ様へサービス提供が出来るように開発を進めています。

AndAppにおけるシステム構成概要

実際にはこの図以上にコンポーネントがあるのですが、ここでは参考までに概要として見ていただければと思います。

これらは、すべてGAE SE上にモジュールを展開しており、開発言語はgolang、フレームワークにgin(一部echo)を利用しており、データストアには主にCloud Datastoreを利用しています。

また、iOS/AndroidにあるPushNotificationをPCプラットフォームでも提供出来るように、Firebaseを利用した通知システムも新規で構築しました。

このように、基本GAE SEに配置するプログラムを開発してGAE上に配置するだけでサービスの提供が可能で、リクエストに応じてサーバをスケールさせたりなどはGCPが勝手にやってくれますし、もしサーバーインスタンスがダウンしたとしても、自動的に代わりのインスタンスが起動し、アプリケーションが動き始めます。

通常、新規でインスタンスを立ち上げ、アプリケーションが動くようになるまでは、かなりの時間を要し、多大なサービス影響を出すことが多いのですが、GAE SEでは一瞬でインスタンスが立ち上がり、アプリケーションがspinupしてくるまでの時間も(利用している言語にもよりますが)数秒 と、サービス影響をほとんど出さないことが可能です。

 

GCPを利用する経緯

オープンプラットフォーム事業本部(以後OPF)は、MobageおよびMobageオープンプラットフォームの開発運用、他社様との協業プラットフォームの開発運用などを行っている事業部で、今までInfraは、オンプレもしくはAWS。開発言語は、PerlもしくはRubyというのがメインでした。

新しいプロダクトを開発する際には、microserviceを取り入れたり、JSON Schemaを取り入れたりなど新しいテクノロジーを導入することを推進してはきましたが、所詮は今までの延長線上、技術的に大きなブレークスルーを作れたという実感があまりありませんでした。

リリース計画上、スケジュールに余裕があるわけではなかったのですが、「このタイミングを逃しては」と思い、AndApp開発において、InfraにGCP、開発言語にgolangというまったく新しいテクノロジーを利用する意思決定をしました。

この意思決定をした直後は、現場エンジニアの一部から不安の声も上がりましたが、今まで以上に新しい技術的チャレンジが出来ることが大きく、仕上がりとして皆がモチベーション高く開発に取り組むことができています。

 

最後に

OPFでは今後新規に開発するプロダクトはGCPを積極的に活用し、その知見を貯め、メリット・デメリットを他の事業部にも伝えていく予定です。

また、社内だけでなく、社外にも積極的に導入事例や技術的なトピックをアウトプットできればと思っています。