LoginSignup
6
8

More than 1 year has passed since last update.

GCPサーバレスサービスの比較

Last updated at Posted at 2021-05-25

はじめに

Cloud FunctionsとCloud Runはどのように使い分けたらいいのか?
そもそもサーバレスはどのような状況で使用するべきなのか。
本記事ではGCPにおける各サーバーレスサービスの違いについて、これらの疑問を解決できるようまとめました。
記事内でははCloud Functions, Cloud Run, App Engineの3つを比較しています。

サーバレスコンピューティングについて

サーバーレスコンピューティングは、従量制のバックエンドサービスを提供する方法です。ユーザーはインフラなどを意識することなく、コードを書き込んだりデプロイしたりすることができます。

メリット

  • インフラの管理が不要
  • 自動拡張(Scalability)
  • 料金管理の最適化

サーバレスのメリットは大きく上の3つだと私は考えています。
これらのメリットのおかげで開発者はコードを書くことに集中できるので、スタートアップやベンチャー企業を中心に広く使われているみたいで、メルカリの技術ブログなどでも時たま取り上げられています。

ユースケース

  • ステートレスなHTTPアプリケーション
  • Web、モバイルのバックエンド
  • リアルタイム、イベントドリブンなデータ処理
  • 機能のプロトタイプ

注意:サーバを持たないのでデータ等の保存は外部にサーバを立てるなどする必要があります。

GCPのサーバレス

GCPでは、Cloud Functions, Cloud Run, App Engineの三種類のサーバレスアーキテクチャがあります。
Cloud FunctionとCloud Runについて以下の表にまとめました。

Cloud Functions Cloud RUn
トリガー HTTP or Event HTTP
実装方法 関数 Container or GKE
language JS/Node.js, Python, Go 言語、ライブラリに依存せずなんでも使える

大きな違いは実装方法がFunctionsの方は関数で実装しなければならないので使用できる場面が限定的であるのに対し、Cloud Runではコンテナーベースの実装となっているため、ライブラリや言語に依存せずに柔軟に使用することができます。また、Cloud RunはGoogle Kubernates Engine(GKE)にもデプロイすることができ、これにより、ステートフルなサーバレス環境を構築することができるのも大きな特徴の一つです。

よって自分がよくする各サーバレスサービスの使い分けとしては、
Functionsの要件内で事足りる比較的軽めの処理、もしくはリアルタイムイベント駆動を実装する必要がある場合にはCloud Functionsを用います。
すでにDockerコンテナでパッケージ化しているもの、もしくはステートフルなサーバレスアーキテクチャが必要な時はCloud Runを用います。
そしてApp EngineはWebアプリ全体をデプロイしたい場合に使用します。

また、使用感としては、App Engineが最も費用が高く、Cloud Functionsが最も低いです。

また、Cloud Functionに関して、Azure FunctionsやAWS Lambdaと比較すると、使用可能な言語が極端に限られていたり、ランタイムの制限が短かったりと若干使いづらいです。
AWS Lambdaがランタイム制限も1番長く、使用可能な言語も豊富でC#なども使えます。

そして、Cloud FunctionsがNodeやPythonなどの処理の遅い言語で描かれることが多いことから、、軽く速度が求められていない処理はCloud Functionsで行い、重い処理を伴うものはCloud RunやApp Engineことがベストプラクティスです。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8