Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to choose between Google Cloud Functions and Google App Engine?

Google Cloud Functions seems very interesting as it is serverless and zero maintenance solution. But, when is it appropriate to use Google Cloud Functions over Google App Engine?

like image 520
Akshar Patel Avatar asked Mar 10 '17 10:03

Akshar Patel


People also ask

What is the difference between cloud functions and App Engine?

While App Engine supports many different services within a single application, Cloud Functions support individualized services. It's an important detail when comparing Google App Engine vs Cloud Functions. If your requirements don't include multiple services then Cloud Functions is a great choice.

When should I use cloud and App Engine?

Use Cloud Run if you just need to deploy a containerized application in a programming language of your choice with HTTP/s and websocket support. Examples: websites, APIs, data processing apps, webhooks.

Is Google App Engine and Google Cloud same?

Google App Engine and Google Cloud Platform are primarily classified as "Platform as a Service" and "Cloud Hosting" tools respectively. Snapchat, Accenture, and Movielala are some of the popular companies that use Google App Engine, whereas Google Cloud Platform is used by Sentry, WePay, and BetterCloud.

What is the difference between cloud run and cloud function?

Comparing Cloud Function and Cloud Run Cloud Functions only supports a single request at a time for each cloud function instance whereas Cloud Run is able to handle multiple requests at the same time and is able to scale up based on demand.


2 Answers

Update:
As of June 12, 2018, Node.js 8.x is supported in Google App Engine Standard environment along with the Flexible Environment.

Short answer: It depends upon your need.

Long answer: Here's the checklist

Runtime
Cloud Functions supports only Node.js at the moment and there aren't any plans, as far as I know, to introduce new runtimes there. If you're good with that, you can put Cloud Functions in your options.

App Engine does support Node.js, although it's only available in the Flexible environment. App Engine Standard Environment supports Python 2.7, Java 8, Java 7, PHP 5.5, Go 1.8 and 1.6, while App Engine Flexible Environment supports Python, Java, Node.js, Go, Ruby, PHP, or .NET. You can also provide your own runtime using a dockerfile in Flexible environment. So if you want to develop your application in anything other than Node.js, App Engine is the better option there.

Serverless Architecture
Are you looking for a serverless architecture? Are you frustrated with managing instances and having them scale up or down? Do you want to spend no time to manage your server? Go for Cloud functions if you answer yes to all of these questions.
Are you looking for fine grain control on no. of instances and billing of those. Do you want to have separate versions and want better control of those. Look for App Engine in this case.

Microservice
Can you break your code into smaller independant functions? Go for Cloud Functions.
App Engine do support Microservice architecture using same code base, but different yaml files to split the services, but it's upto you if you want to break them into services or not. We are running all our code into one monolithic application for last few years and it's still working good on App Engine.

Database
Is your app data stored in Firebase? Then Cloud functions can be used easily there. If not, App Engine is the better alternative. App Engine can connect to Firebase too, in case you're wondering.

There're other things to consider too, such as pricing and if you're looking to migrate existing application or if you're writing things from scratch. You can in fact, use both of the options. We are using App Engine (Python) Standard Environment for our application, but we have recently migrated few of our long running tasks on Cloud functions and they are working amazingly.

In my opinion App Engine is the answer to most of the things, where as Cloud Functions are made for specific requirements.

like image 90
noob Avatar answered Oct 12 '22 02:10

noob


When what you desire is to execute a function (some logic of some sort) in response to an event originated in the cloud and you don't want to build (and be billed for) a full web application for just that.

From Product Overview:

Cloud computing has made possible fully serverless models of computing where logic can be spun up on-demand in response to events originating from anywhere. Construct applications from bite-sized business logic billed to the nearest 100 milliseconds, only while your code is running. Serve users from zero to planet-scale, all without managing any infrastructure.

From What are Google Cloud Functions?

Google Cloud Functions is a serverless execution environment for building and connecting cloud services. With Cloud Functions you write simple, single-purpose functions that are attached to events emitted from your cloud infrastructure and services. Your Cloud Function is triggered when an event being watched is fired. Your code executes in a fully managed environment. There is no need to provision any infrastructure or worry about managing any servers.

If you already have a GAE app related to the piece of logic you want to implement it's probably simpler to just do it inside the app :)

like image 42
Dan Cornilescu Avatar answered Oct 12 '22 02:10

Dan Cornilescu