Although the author mentions they haven't had experience with AppEngine, it's the reason why I love Google Cloud SO much over anything else.
If you're a startup running something on Elixir (or even Rails), AppEngine's experience is hard to beat.
Not many people do know:
* You can run multiple microservices on AppEngine under one application.
* Each of these can have many versions serving different percentages of traffic.
* There is an on the fly image resizing service, which means, you don't need to run complex imagemagick setups on your machine, instead you can simply call your image with parameters appended Eg. - /my.jpg?size=120x80 and it will be resized on the fly. And it's pretty damn fast, too.
* If you're also using Cloud SQL, you can directly let your app talk to it without whitelisting IPs or even using the proxy, just using sockets.
* You can lock your app under what google calls IAP, a login layer that allows only authorized users to access your app. IF you're building prototype for clients, it's a no brainer and saves you from adding custom auth. (https://cloud.google.com/iap/docs/app-engine-quickstart)
* The development experience is superb, and has gotten better in the last 2 years.
For the record, I tried AWS ElasticBeanstalk recently and it has a lot of bugs, especially with the new interface changes, so I kept coming back to AppEngine. Seriously, if you're doing a startup in 2018, there is no reason to not use AppEngine.
App Engine is really awesome! There's a few caveats I would add if you're using it for Rails or Elixir which requires the Flex environment.
* No integration with Standard APIs
* Slow / build deploy times
* Minimum pricing of $40 per machine / month
Overall, I feel like the direction App Engine is headed makes it purely better than other PaaS services but if you're running a low traffic website that isn't standard environment (Java 7/8, Python 2.7, Node 8, PHP 5.5, Go 1.6/7/8/9), Heroku is probably still more economical and better developer ux.
I hope they add Ruby and Elixir to the standard environment. I don't think any other PaaS would compare.
I’ve been using AppEngine for years and really like it. Had an interesting billing issue recently.
I enabled a task queue to run a longer running task in the background but I didn’t realize there’s a default to retry failed tasks indefinitely. This started slowly increasing my front end instance hours (and my bill). A few hundred bucks later I figured it out and specified a retry attempts limit.
Would love to see Google embrace Elixir, the Erlang runtime doesnt play very nicely with Kubernetes but gives so many benefits. If they can get it so that you can set up a VPS of linked Erlang nodes, it would be everything I need
I looked long and hard at App Engine, but I wasn't able to use it as I needed to be able to accept file uploads that were larger than the upload limit on the App Engine load balancer. Otherwise it likely would have been my choice. I'm looking at using it for some internal applications soon though.
If you're trying file uploads that directly sit within your application, AppEngine (sort of) discourages that, the right approach would be to let your app upload the files to a CDN (like google cloud storage, if you're on GCP) and manage access through ACLs.
Yeah, the issue (which I didn't explain well) is that Deps is a Maven repository and needs to speak the Maven protocol. That makes it difficult to do the ACL signing for direct uploads, especially if I want to make it clean for users configuring it.
You can have the client upload to a cloud storage bucket, then notify the server that the file is ready. Upon receiving the notification, the server can start a background task that reads the file from the bucket and uploads it to the Maven repository.
It's a few extra steps for something that should be simpler, but it's workable.
The only way to do that on App Engine is to have the client ask the server for a temporary signed URL to a writable cloud storage resource, and then have the client upload to that URL (i.e. the only way is by sidestepping App Engine...).
If you're a startup running something on Elixir (or even Rails), AppEngine's experience is hard to beat.
Not many people do know:
* You can run multiple microservices on AppEngine under one application.
* Each of these can have many versions serving different percentages of traffic.
* There is an on the fly image resizing service, which means, you don't need to run complex imagemagick setups on your machine, instead you can simply call your image with parameters appended Eg. - /my.jpg?size=120x80 and it will be resized on the fly. And it's pretty damn fast, too.
* If you're also using Cloud SQL, you can directly let your app talk to it without whitelisting IPs or even using the proxy, just using sockets.
* You can lock your app under what google calls IAP, a login layer that allows only authorized users to access your app. IF you're building prototype for clients, it's a no brainer and saves you from adding custom auth. (https://cloud.google.com/iap/docs/app-engine-quickstart)
* The development experience is superb, and has gotten better in the last 2 years.
For the record, I tried AWS ElasticBeanstalk recently and it has a lot of bugs, especially with the new interface changes, so I kept coming back to AppEngine. Seriously, if you're doing a startup in 2018, there is no reason to not use AppEngine.