One month into Google App Engine

Luke Paris
Paradoxis
Published in
5 min readSep 4, 2016

--

Quick warning before you continue reading, this post is 100% about my opinions and experiences using Google App Engine. If you don’t enjoy rants, go watch this video of an ice cream melting instead.

What should I do when I want to write a scalable application in an easy language like Python that has an fast and reliable data storage solution? Well, Google App Engine of course! At least, that is what lot’s of people on the internet kept telling me.

Here’s a small back story for this post; Me and some friends of mine decided to write an app a while back that required a backend REST API with which it could communicate. After searching a lot on the internet I kept reading about Google App Engine, a relatively cheap PaaS (Platform as a Service) solution that uses Google’s infrastructure to host your applications.

Seems like an awesome thing right? Wrong. The last month of my life has been by far the most painful development experience I’ve had yet, and to be quite honest I currently want to smash my $2500 MacBook Pro and quit programming for the rest of my life.

Here’s the thing: I’m not a ‘seasoned developer’, I’m a twenty year old computer science student whose native language isn’t English and only has about 3 years of programming experience, one of which is actually experience working in the field itself. I don’t consider myself a ‘tech guru’ nor do I consider myself a ‘noob’ I can handle myself when it comes to programming but I am by no means an expert.

So far I’ve only written decent applications using PHP, Python and using MySQL as a backend on a server that I own and have full access to, if I really wanted to, I could brick my server in under a second and know exactly what, how and why I did it.

Google App Engine, as expected, is very different. I actually liked the idea of trying out a new platform where I didn’t have to keep the system updated, worry about patches or fight hackers from brute-forcing my server password. But it came with more headaches than relieves.

The documentation

Google, a $500+ billion dollar company should have their documentation sorted right? Well, they made a pretty great effort at writing it, but it was written by probably some of the smartest and most experienced developers in the entire field. They didn’t take average grade developers into account, the documentation (at least for me) is confusing to say the least.

Navigating through it isn’t the most pleasant experience either. I eventually ended up saving pages I found through Google Search in my bookmarks in order to find them since they were so hard to find by clicking through the documentation itself. Every time I tried looking on the official documentation I’d end up looking at ‘Hello World’ examples which didn’t help me look for what I initially sought to find at all.

Quick side note, not only that; but the documentation pages themselves don’t even respond to link clicks. But maybe that’s just on my end, but it’s just another little frustrating thing I came across during my hellish month.

500 billion dollar company, right?

The development SDK

Oh boy was this a nightmare. My app simply needed a Facebook OAuth login, something lots of web-services/websites require, and, as expected, there’s a library for that (don’t you just love Python?).

But what newcomers to the Google App Engine might not know, is that they over-engineered EVERYTHING. So much so, that a simple DNS lookup to www.facebook.com would cause errors in their version of the socket module and just crash the rest of my login flow, and after reporting a bug it has been pretty much ignored for over two weeks now (with the exception of someone asking me what my DNS output was).

This means I need to edit my code locally, deploy it to the production environment, test it, check the error logs and repeat that process until it’s fixed. Not ideal to say the least.

Not only that but for some reason they also don’t like the (very popular) requests module, you need to ‘monkey patch’ it before it works, which made the process even harder.

Working DNS queries are quite useful you know

Code portability

So you managed to write an application for Google App Engine, and you’ve decided to migrate it over to a server farm you own so you can analyze the data or optimize your code to work nicely with your other platforms? Well, too bad. You wrote it for Google App Engine so you’re staying with Google App Engine. Forever.

Exporting your data isn’t easy in the slightest and since you’re now stuck using a form of data storage that only Google has, you won’t be able to use your database code anywhere else (which goes against the reason you’re probably choosing to host your code on the platform in the first place) since it’s exclusive to GAE.

Final thoughts

If you’d ask me if you should use Google App Engine, you’ll get a big fat no. What Google doesn’t seem to understand at times is the all so famous ‘Kiss’ (Keep It Stupid and Simple) principle. Sometimes, less is more.

So unless you’re willing to stick with the platform for the rest of your life, live with the strange quirks it has and throw a huge amount at money at senior developers that will instantly understand the documentation, stay away from it as far as you can.

PS: If anyone from Google is reading this, I don’t hate you guys at all. In fact, I love Google. I wouldn’t know what to do without you, but you should seriously consider hiring ‘average’ developers to make your documentation and concepts easier to understand.

--

--

Dutch cyber security specialist with a passion for software & penetration testing, my weapons of choice are Python and Linux.