GCP App Engine (Short) Review

Herbert Abdillah
3 min readJan 27, 2021

--

Origin : https://logo-hunt.blogspot.com/2020/07/google-app-engine-logo-png.html

For simple application, NoOps can be a good choice because no extra dedicated (human) resources to manage infrastructure. App Engine offer deployment solution only with uploading source code to app engine, and the application will deployed and app engine automatically managed auto scaling, logging, monitoring, versioning, environment, etc. Beside that, app engine is packaged with object storage, cache (memcached) that also offer free tier within a limit.

There are 2 type in app engine. First, standard environment which our task only uploading the source code. The scaling is faster and cheaper. But this environment only supported by the language/runtime version and also extension offered by app engine. Second, flex environment which can freely customizable by using docker runtime (using our Dockerfile). And also we can SSH into the VM. This is suitable for application that not supported in standard environment. But better use standard environment if we can.

https://cloud.google.com/appengine/docs/the-appengine-environments

File Limit in Standard Environment

Actually this is not a problem because usually source code that have many file/big size, come from dependency folder (maven/composer/etc). But the problem is we can’t run dependency installation in app engine, but rather we must install in local/ci cd server than upload the code with dependency. But if our dependency exceed the file limit, the solution is using app engine flexible environment

Deployment process that take long time

Actually long time deployment process is not a problem, because usually deployment process preceded by testing etc in ci/cd pipeline. I try to deploy only without testing etc in ci/cd pipeline, take a time around 10 minutes. I think the docker cannot use build image cache. And the source of the long time is step “Updating service [default]” (after docker image built)

Cannot use private ip/subnet

Mostly application use private subnet/ip so the application don’t have public ip that can accessed by public. The exposed public ip is the load balancer. Request from client goes to load balancer, and than forwarded into application (or preceded by waf). Although in app engine we can set the firewall security group rules.

Other PaaS like elastic beanstalk can do this

And elastic beanstalak is free, we only pay backed resources top of that like ec2, s3, rds.

Price of app engine is difference from compute engine and we cant use reserved instance discount.

This writing was originated in my blog written in Bahasa Indonesia :

--

--

Herbert Abdillah

Interested in Software Engineering, Devops. 🌐: abdillah.my.id . Made with ☕ from 🇲🇨