GCPのPHP on Cloud Functionsを触ってみた

by

Screenshot from 2021-04-30 04-38-35

Web開発担当の木下です。

さて今回は、先日発表されたGCPの新機能「PHP on Cloud Functions」についてです。

Cloud Functionsとは

Googleの説明によれば、「サーバー管理なしでコードを実行するためのスケーラブルな従量課金制 Functions as a Service(FaaS)」とあります。
サーバーレスコンピューティングの1種で、PythonやGoなどで記述されたコードをアップロードするだけでGoogleがフルマネージドで実行してくれるサービスのことです。
自動でスケールし、実行した時間分(100ミリ秒単位)で課金されるため、サーバーのスペックを気にする必要がなく、かつほとんどの場合自分でサーバーをホスティングするよりコストを抑えられる、というメリットがあります。

AWSでいうとLambdaがこれに近いですが、Lambdaの場合はHTTPで公開しようとするとAPI Gateway等と組み合わせる必要があるのに対し、Cloud Functionsの場合はアップロードするだけでHTTPエンドポイントまで発行されるので、よりシンプルにAPIを作成できます。

これまでCloud FunctionsもLambdaもPHPをサポートしていませんでした(ランタイムをねじ込むという方法はありました)が、4月24日にGoogleがCloud FucntionsでのPHPサポートをプレビューとして開始することを発表しました

これまではPythonかNode.jsで書いてきましたが、使い慣れたPHPが使えるようになるのであれば、今後はぜひこちらで書いていきたいところです。

さっそく触ってみる

DB(Firestore)と組み合わせて、現在位置をリクエストすると近くにあるお気に入りのラーメン屋さんの位置をJSONでレスポンスするAPIを作ってみましょう。

構成はこんな感じです:
Screenshot from 2021-04-30 04-38-35

さっそくFirestoreにコレクションを作成し、お気に入りのラーメン屋さんの情報を入れていきます。
Screenshot from 2021-04-30 04-42-33

Cloud Functionsで関数を作成し、ソースを書いていきます。
Screenshot from 2021-04-30 04-44-42
composer.jsonを置いておけばライブラリをインストールでき、php.iniを置いておけば環境設定を変えられるようです。便利ですね。

関数を作成してHTTPエンドポイントが発行されたら、Postmanでたたいてみましょう。
Screenshot from 2021-04-30 04-48-32
リクエストした位置情報から半径5km以内にあるラーメン屋さんの情報がJSONで返却されました!

ソースはGitHubで公開しています

非常に便利なのですが、おそらくCloud FunctionsでAPIを作る時の最大の悩みどころが、DBをどうするか?だと思います。
RDBであればリッチな検索クエリを組める一方、サーバーレスという訳にはなかなかいかないため、結局RDBはずっとホスティングしておく必要があるのと、アクセスが集中した際にコネクション数が大変なことになるためコネクションプール等を噛ませておく必要があると考えると、サーバーレスのメリットを活かすには構成をよく考える必要があります。
一方でNoSQLであればサーバーレスのメリットを存分に活かせますが、RDBほど柔軟な検索クエリに対応できないというデメリットが発生します。今回はFirestoreを使いましたが、複数のインデックスに対して不等号条件を付けられないため、ある程度データを絞り込んでFirestoreから取得し、Cloud Functions側でさらに絞り込むという流れになります。件数が増えたりページネーションが欲しくなったりすると、これはこれでしんどくなるため、使いどころを考える必要があります。
結局はRDBとNoSQLを上手に組み合わせる形になるのでは、と思います。

サーバーレスの需要はますます高まっていくはずです

スマホアプリは瞬間風速的にアクティブユーザー数が増えることがよくあるため、使いどころを押さえればサーバーレスの採用はコスト面でもパフォーマンス面でも非常に大きなメリットがあります。
イーディーエーにはユーザー数が数十万・数百万人というアプリの開発実績が豊富にありますので、お気軽にお問い合わせください!

木下 晴晶
e.d.aではWeb全般の開発・運用保守を担当。Plamo->Fedora->Ubuntu->CentOS->Ubuntuと移り住んできたLinux好き。趣味はゆったりした鉄道旅行。最近はキャンプを始めようと画策中。

Egg Device Application

東京品川のスマホアプリ製作・開発会社です。
一般アプリ業務用アプリからVRアプリまで開発可能。

求人情報

スマホアプリ製作・開発の
相談を受け付けています

メールでのご相談

お電話でのご相談
TEL 03-5422-7524
平日10:00~18:00