Google App Engine (GAE) is a powerful platform to build both web and mobile apps. Its very scalable and takes away the headache that comes along with a regular server. We have been using Google App Engine for everything from our internal applications to our flagship product Adjutas. We would like to share the reasons we went with Google App Engine so that it might be useful to you.
Supports all major programming languages
To some this might be painful as Google App Engine supports only Java, Python, PHP and Go programming languages. However in my opinion this to a certain extent is enough. With Java and Python Google has pretty much covered the two most popular programming languages. Google App Engine supports PHP and this creates a huge opportunity for PHP programmers to use the platform. GAE also supports Ruby and Node.js.
Easy code deployment with GoogleAppEngine launcher
GAE comes with a desktop app called GoogleAppEngine launcher which makes it easy to deploy code in addition to running the app in localhost. The launcher also comes with its own admin console which helps in testing the admin management in the localhost. This makes things easier for developers using google datastore or google cloud storage they can run and test the application in its entirety in the localhost. This makes things easier for developers who otherwise spend a lot of time and effort to setup the dev environment.
Easy to maintain multiple versions of application
New feature deployment and bug fixes are very important to any software. However the deployment process is mostly manual where the team sits together and manually replaces files from the production servers. This is a laborious and time consuming process and the especially for smaller teams building complex automated tools could be a additional load.
But with GAE you can define the app version type in the app.yaml file and then deploy the app. You can decide when you want to make this version of the app go live. You can either choose to divert all the traffic to the new version or only gradually route the traffic to the new version.
This makes it easier for the developers to roll back to an older version of the app in case of serious issues with the recent build in production.
Supports managing custom domain with no access to filesystem
GAE supports HTTPS and HTTP protocols out of the box. You can also enforce the app to only work on HTTPS and this can be set in the app.yaml file. The default https://app-id.appspot.com. You can choose to use your custom domain. For example your GAE application work can work on https://*.example.com or http://*.example.com. It is important to note that GAE does not support SSL on custom domains and you will have to buy your own SSL certificate.
Static files like HTML, CSS, JS less than 1 GB can be hosted in GAE free of cost. This means you can host your websites on GAE free of cost.
GAE restricts access to the filesystem. This could be a pain to few developers as they cannot create or edit files in the filesystem. To counter this we can use Google Cloud Storage to save and work with the our files.
Easy to track and monitor for error logs
I personally hate monitoring the error logs but this is very important to address any serious bugs or performance related issues with our software. You can also configure the system to send you error reports as they occur in your application. This comes in handy as you can investigate what caused this issue and address it in a timely manner.
One of our worst nightmares came true recently when our app threw a PHP error. Yes, I know it is embarrassing but it happened and we had to fix it. But the best part call it luck or the benefit of GAE we got the error the moment a user encountered the error and we immediately stepped in and fixed it. The point is here the benefit of having such powerful notification and error monitoring system to help you deal with the nitty-gritty and fix them.
Some Useful Links
- Contact us, if you have any questions
- Google App Engine Documentation
- Stackoverflow discussions on GAE
- Choosing an App Engine Environment
- Developing Scalable Apps in Google App Engine