Kaushal Subedi's Blog

Random things from the head of a developer.

Google Cloud App Engine Review, Why Choose It? Because It's Awesome!

Being a full stack web developer is not easy. You not only have to worry about developing the application itself, but you also have to worry about managing the server stack, implementing a high availability system, configuring a backup system, creating a deployment system and a lot more. While having the knowledge of all these things is good, having to do these every time you start a project can be annoying, specially if it is just a small side project.

I have worked on big and small projects where I have setup a full high availability system with a custom CDN network and auto scaling on a well known cloud provider's infrastructure, and let me tell you, doing all of this might sound easy to some of you but the process takes a really long time and configuring everything just right takes a lot of work. While this might not be a big deal for a big budget project, this might be the deal breaker for a smaller one. Recently, there has been a rise of a new kind of service in the hosting world, called PAAS. PAAS stands for Platform As A Service and if you have never heard that term before, I would highly suggest looking it up. Basically, a PAAS will let you deploy an application without having to worry about the server management side of things. Depending on what PAAS you choose, they have features like Auto Scaling, easy deployment etc. They are more expensive than traditional Cloud Servers (or VPS's) but will save you a lot of time and money in the long run.

While Heroku is undoubtedly the most popular PAAS out there, Google App Engine is a hidden gem in the PAAS world that a lot of developers I know have not even thought about using. While I hadn't used it for a while since it's name was ruined right when it was released because of issues with uptime, deployment and more, I decided to try it again recently, and fell in love. Google App Engine is a part of Google's suite of Cloud Hosting tools, which lets you easily deploy and host applications created in one of the four supported languages, Java, Python, PHP and my favorite Golang. While the last two are still in Beta, I have had no problems with them so far.

So why did I just call Google Cloud Platform Awesome in the title of this post? There are a lot of reasons:

1) Ease of Use

Google Cloud Platform is literally the easiest to learn and use PAAS that I have used. While I am familiar with Heroku, Appfog and a few more, in my opinion, Google App Engine was the easiest to deploy to. After setting up the SDK on my computer after following very easy to read instructions on their website, all I had to do was write a configuration file, and run goapp deploy to deploy my Golang application. No more Puppet configurations, no more Dockerfiles and no more custom shell scripts, the tools that were included in the SDK did everything for me. The SDK (at least for Golang) came with a serve command that would run a local server that would allow you to develop your application locally before deploying. And the best part was they even took care of tiny little things like recompiling the application and reloading the webserver every time a file changed.

2) Pricing

The pricing of Google App Engine is really competitively priced and is reasonable. I am not going to post the pricing information here since it changes a lot, but you can use their pricing calculator to figure out the current rates. Oh and did I mention they even have a free tier that is more than suitable for most small side projects?

3) Complete Management & Lot's of Features

Google App Engine completely removes server management from your todo list (sorry system administrators). It automatically does auto scaling and creates new instances as needed, it automatically handles high availability, it automatically distributes your application to Google's huge CDN network so that your service works really fast from anywhere in the globe ( side note : Google's CDN is the best out of all the CDN's I have had experience with so far) and a lot more. You are only charged for the resources you use and you don't have to worry about your service crashing because it just got to the front page of reddit. You also do not have to worry about manually updating the server stack or monitoring the uptime or anything like that. You can also use Google Cloud's Datastore, Memcached and Cloud SQL if you want those to be hosted and managed by Google as well.

4) Google's Infrastructure

It is no new news that Google is the largest and most visited website in the world. Despite being that, all of their services work really fast and realiably from anywhere in the globe. This must mean something right? Yes, Google has a vast infrastructure distributed throughout the world, and with Google App Engine your applications can leverage the power of their infrastructure. I do not know the exact numbers on how many datacenters they have but a quick Google search should give you an idea of how big their infrastructure is. Large companies like SnapChat, Best Buy, Coca Cola etc trust and use Google App Engine as well. While there had been reports of downtimes and reliability issues in the past, after my tests and new reports from other users, I feel like Google would be the company that I can rely the most (after all I use Google for emails, domains, live chat, video calling, phone and a lot of other things).

5) True Cloud

You see a lot of companies nowadays selling "Cloud" servers, but have you every wondered how many of them are true clouds? (Hello DigitalOcean). By definition, Cloud Computing means leveraging the power of distributed servers for different purposes, but nowadays there has been a huge rise in the amount of companies that advertise as being cloud when they are just normal Virtual Machines that only reside on one node (Hello Again DigitalOcean). To leverage the power of true cloud, the service must have high availability and should be able to scale as needed. Google App Engine not only has these things, it has ton's of other things like automatic CDN (Content Delivery Network) distributing which make it fit more on the definition of Cloud Computing. Most PAAS do these but so far Google's is the one I've seen that has the most features of them all.

While Google App Engine does have it's little quirks like support for only 4 programming languages, usage limitations etc., if your application does not demand more than what it offers and can run under those restrictions, it is the perfect platform for deploying it. And pretty much all PAAS provider's have the limitations (some more than others) that Google's platform has in place. Overall I am really satisfied with my experience so far, and I am going to be moving a lot of my applications over soon. Let me know what you think about Google App Engine, do you think Google App Engine might help you with easier appliation developement?

Kaushal Subedi

Self taught developer and technology enthusiast.