The other day I was answering question on Quora “How your company is using Google cloud and what for?”. Of course since my business is related to consulting for other companies and it usually involves Google Cloud Platform (GCP), I though to write some concrete cases what can be done with GCP (of course a lot). As I was thinking and then writing, one point especially stood out to me: using Google App Engine for internal systems. There are literally dozen of projects I did which involved Google App Engine (GAE) and some of them have the same characteristics and functionalities:
- they are created for employees of a company not customers (thus internal system)
- they are not big (in terms of complexity and code)
- often they are automated systems for alerting or stats which involves:
- fetching data from some API, web page regularly
- storing into database, keeping historical values
- displaying data in dashboards
- doing some further processing
- allowing users to work with data (create / edit / delete)
- glue two different systems
- (micro) service which does some simple task.
For such cases I didn’t find better solution than GAE. Why? Because everything is in one place, like Swiss knife for web (backend) development. That means:
- No worries with setting up server since there is no “physical” server. Everything runs in containers / cloud and it scales from 0 server instances to how much is needed. In other words no maintenance, by time you usually forget about it.
- Since you are not setting up server, that means no installing programs on server as well. GAE SDK contains all necessary services (also for local development) and it’s possible to install some third party libraries and deployment consists of executing one command to upload code and from there it just works.
- Just write code and that’s it. Don’t worry about anything else.
- Since usually traffic and load for these (internal) applications is small, most of the time it runs for free, since GAE has generous daily free tier. In other words, you don’t pay for your internal system :)
- Like I mentioned, GAE has several integrated services which makes development easier, some are:
- NoSQL database (Cloud Datastore). Of course this database is designed for scale and for these cases it’s not main requirement, but for most cases it’s sufficient (in terms of database design)
- memcache — caching objects in RAM memory
- taskqueues — executing background tasks for longer processing
- mail — sending emails
- search — indexing documents for text search
- cron — executing tasks with some regular frequency
- in 95% cases that’s usually what is needed.
- These services are related to GAE Standard flavour although there is also Flexible which unfortunatelly doesn’t have them automatically integrated but different products need to be used, so that’s why it’s not so suitable for such cases.
- I use Python, but it supports also Java, Go, PHP.
Like I wrote, all these properties enable quick development, easy deployment and robust stability. Number one critique for GAE Standard is that it’s vendor locking, i.e. once you write code and use those services, it’s not possible to migrate off Google without significant code rewrite. That’s true, but for use cases I mentioned, I think migrating somewhere else is not so frequently mentioned topic.
GAE was first product on Google Cloud (introduced in 2008) and although these days it’s not so popular since no. 1 theme are Kubernetes, for some cases, like those I listed above it’s without competition and it’s like a hidden jewel.