Ask HN: Is Google App Engine a good option for new startups with limited funds?
13 comments
I've used GAE (Google App Engine) a fair bit myself too.
I think that new startups are well served by GAE for a couple reasons, with some caveats.
Easy deploys - you just upload a war file and you're done. Also, the versioning works pretty well, so you can have multiple versions of your app live at the same time and switch on the fly.
Access to message queues - those are actually very useful. You can send stuff off to queues fairly trivially and it'll get processed as needed with retry and timeout options.
The scaling advantages are overstated for startups - if you need unlimited horizontal scaling, either your app is horribly inefficient or you're already making enough money to write a simple scaling infrastructure.
The caveats are that the datastore is really nice (pretty much megastore), but if you use it, you'll have a hard time migrating to another service provider.
As for limited funds, GAE is actually fairly expensive as it's PaaS versus IaaS, but if you're a startup and speed is of the essence, it'll let you get something out there in front of consumers very quickly for very low up-front and fixed costs.
I think that new startups are well served by GAE for a couple reasons, with some caveats.
Easy deploys - you just upload a war file and you're done. Also, the versioning works pretty well, so you can have multiple versions of your app live at the same time and switch on the fly.
Access to message queues - those are actually very useful. You can send stuff off to queues fairly trivially and it'll get processed as needed with retry and timeout options.
The scaling advantages are overstated for startups - if you need unlimited horizontal scaling, either your app is horribly inefficient or you're already making enough money to write a simple scaling infrastructure.
The caveats are that the datastore is really nice (pretty much megastore), but if you use it, you'll have a hard time migrating to another service provider.
As for limited funds, GAE is actually fairly expensive as it's PaaS versus IaaS, but if you're a startup and speed is of the essence, it'll let you get something out there in front of consumers very quickly for very low up-front and fixed costs.
There's a lot to like with AppEngine, but the support is showstopper for anything you can't afford to be down.
Outbound emails, for example, mysteriously quit working for a month straight until someone there admitted that the anti-spam dial was tuned incorrectly. There was no error back to the users indicating the emails were being trashed. https://code.google.com/p/googleappengine/issues/detail?id=1...
You might check out the various lower cost plans that many providers offer to startups. Here's a few:
https://www.digitalocean.com/hatch/
https://cloud.google.com/developers/startups/
https://azure.microsoft.com/en-us/pricing/member-offers/bizs...
https://aws.amazon.com/startups/
Outbound emails, for example, mysteriously quit working for a month straight until someone there admitted that the anti-spam dial was tuned incorrectly. There was no error back to the users indicating the emails were being trashed. https://code.google.com/p/googleappengine/issues/detail?id=1...
You might check out the various lower cost plans that many providers offer to startups. Here's a few:
https://www.digitalocean.com/hatch/
https://cloud.google.com/developers/startups/
https://azure.microsoft.com/en-us/pricing/member-offers/bizs...
https://aws.amazon.com/startups/
I have used GAE a lot. They have improved tremendously over the last couple of years and have also extended their services. However, as noted on in the previous comments - support sucks.
Advantages:
- Easy to set up.
- Cheap to start (somewhat like Heroku). Especially the moment you start optimizing for performance it's easy to cut down on the funds needed each month.
- Scalable. Google takes care of it.
- As someone mentioned versioning. It works as easy as changing the YAML file.
- Deployments are fast and painless.
- Amazing cloud administration with beautiful and easy UI. Unified logs.
- Ease of integration with other Google products and APIs.
Disadvantages:
- Lack of proper support.
- Documentation is sometimes lacking.
- Lock-in. Oh man does it hurt if you want to move away from GAE.
- For python for example, you can only used C based python modules.
- HTTP request 30 seconds. 10mb limit. Datastore is I believe 1mb. Blobstore 50mb.
- Gets expensive the moment apps become bigger (somewhat like Heroku).
I'd definitely wager where your app will be in a month, 3 months, six months and a year and see if GAE is a viable option. Think of API integrations as well.
Advantages:
- Easy to set up.
- Cheap to start (somewhat like Heroku). Especially the moment you start optimizing for performance it's easy to cut down on the funds needed each month.
- Scalable. Google takes care of it.
- As someone mentioned versioning. It works as easy as changing the YAML file.
- Deployments are fast and painless.
- Amazing cloud administration with beautiful and easy UI. Unified logs.
- Ease of integration with other Google products and APIs.
Disadvantages:
- Lack of proper support.
- Documentation is sometimes lacking.
- Lock-in. Oh man does it hurt if you want to move away from GAE.
- For python for example, you can only used C based python modules.
- HTTP request 30 seconds. 10mb limit. Datastore is I believe 1mb. Blobstore 50mb.
- Gets expensive the moment apps become bigger (somewhat like Heroku).
I'd definitely wager where your app will be in a month, 3 months, six months and a year and see if GAE is a viable option. Think of API integrations as well.
> - Cheap to start
At development scale it's essentially free. I host some simple static sites essentially for free too because traffic is low enough that it never comes close to billing.
> - As someone mentioned versioning. It works as easy as changing the YAML file.
Pro Tip: incorporate this into your deploy scripts with `--version=whatever` to override the setting in app.yaml. Make the value in app.yaml a safe one (e.g. 'development') in case someone new to the team screws up.
> - HTTP request 30 seconds.
Depends on the scaling you choose. This is the default (automatic scaling), but you can choose manual_scaling (you set the number of instances) or basic_scaling (slightly less configurable than automatic scaling). Both of the alternatives put no limit on time to execute a request.
> Datastore is I believe 1mb. Blobstore 50mb.
IIRC cloud storge provides unlimited size, and it's pretty easy to write a blob there and reference it in datastore.
At development scale it's essentially free. I host some simple static sites essentially for free too because traffic is low enough that it never comes close to billing.
> - As someone mentioned versioning. It works as easy as changing the YAML file.
Pro Tip: incorporate this into your deploy scripts with `--version=whatever` to override the setting in app.yaml. Make the value in app.yaml a safe one (e.g. 'development') in case someone new to the team screws up.
> - HTTP request 30 seconds.
Depends on the scaling you choose. This is the default (automatic scaling), but you can choose manual_scaling (you set the number of instances) or basic_scaling (slightly less configurable than automatic scaling). Both of the alternatives put no limit on time to execute a request.
> Datastore is I believe 1mb. Blobstore 50mb.
IIRC cloud storge provides unlimited size, and it's pretty easy to write a blob there and reference it in datastore.
Can you please elaborate on your support experiences? There's varying levels of support, all the way up to employing essentially dedicated SREs that have a shared application uptime responsibility with customers (CREs).
(Work on Google Cloud)
(Work on Google Cloud)
Hey, first of thank you for your hard work! Let me redefine my argument - free level of support is somewhat lacking.
To be fair - this was like year and a half ago. Two separate issues. The previous company I worked at was where the issues occurred. First issue was something related to the NDB. I do not exactly recall what happened, as it was right when I got there. I do recall people being whining about delayed replies and ended up re-deploying to another instance.
Second issue was a fee for a service we have not used (big data/query I believe)- it took a while for the support to reply(something along the lines of couple of business days - billing support btw) and after we got ahold of them we have spent a lot of time on the phone trying to figure things out and we were still charged for that month. It was not much, but we could have purchased the current silver package for that money.
After the company started selling more products we upgraded to Gold package which was excellent. That's about the time I left.
Another separate instance was when I was not allowed to create more apps (even though I deleted more than 6-7) and I had to make a request for my account to create more. That took couple of days as well.
I think I started using GAE around 2011 and since then I have only seen improvements :)
To be fair - this was like year and a half ago. Two separate issues. The previous company I worked at was where the issues occurred. First issue was something related to the NDB. I do not exactly recall what happened, as it was right when I got there. I do recall people being whining about delayed replies and ended up re-deploying to another instance.
Second issue was a fee for a service we have not used (big data/query I believe)- it took a while for the support to reply(something along the lines of couple of business days - billing support btw) and after we got ahold of them we have spent a lot of time on the phone trying to figure things out and we were still charged for that month. It was not much, but we could have purchased the current silver package for that money.
After the company started selling more products we upgraded to Gold package which was excellent. That's about the time I left.
Another separate instance was when I was not allowed to create more apps (even though I deleted more than 6-7) and I had to make a request for my account to create more. That took couple of days as well.
I think I started using GAE around 2011 and since then I have only seen improvements :)
It also depends on how comfortable your team is with managing your own infrastructure. If you're not strong on the DevOps side of things, then stick with a PaaS solution to get started (even if it's a bit more $$$), and look at cost efficiency later.
If you're comfy with running your own stack, then nothing really beats D/O, Vultr, Packet.Net (if you want bare-metal) to get started. With the number of self-hosted PaaS tools out there, you can easily replicate GAE on your own for a fraction of the cost, but you need to handle the Ops on your own.
It's ultimately about how fast you can get to market, and how well you deploy resources getting there. Frankly, there are times when paying a few hundred dollars per month to have the entire stack hosted and managed for you, is WAY cheaper and a better ROI than hiring people or adding to your dev workload.
In my experience, free credit programs are great, but only if you keep your tech portable enough to move over easily to someone else after they expire. A lot of these platforms offer APIs and services that are convenient, but they also create lock-ins that will force you to stick with a vendor who's cost-benefit drops after a certain point in time. At that stage, the decision you make will be between is it cheaper to refactor or to stick it out.
Hope this helps.
If you're comfy with running your own stack, then nothing really beats D/O, Vultr, Packet.Net (if you want bare-metal) to get started. With the number of self-hosted PaaS tools out there, you can easily replicate GAE on your own for a fraction of the cost, but you need to handle the Ops on your own.
It's ultimately about how fast you can get to market, and how well you deploy resources getting there. Frankly, there are times when paying a few hundred dollars per month to have the entire stack hosted and managed for you, is WAY cheaper and a better ROI than hiring people or adding to your dev workload.
In my experience, free credit programs are great, but only if you keep your tech portable enough to move over easily to someone else after they expire. A lot of these platforms offer APIs and services that are convenient, but they also create lock-ins that will force you to stick with a vendor who's cost-benefit drops after a certain point in time. At that stage, the decision you make will be between is it cheaper to refactor or to stick it out.
Hope this helps.
At least not its datastore. It's extremely weird, hard to use correctly and nonstandard. You have to rewrite all of your data layer if you're going to move from it (or if Google will deprecate it, I think it will be quite soon).
I have very simple app there for personal use and I had lots of pain debugging it, and it still works on black magic. It's easy to rewrite that app from scratch because it's so small, but downloading data from datastore is extremely painful process involving browsing forums for third-party hacks. If you have more than few megabytes of data, I think you can't get it out at all.
Development tooling is also weird and glitchy.
I have very simple app there for personal use and I had lots of pain debugging it, and it still works on black magic. It's easy to rewrite that app from scratch because it's so small, but downloading data from datastore is extremely painful process involving browsing forums for third-party hacks. If you have more than few megabytes of data, I think you can't get it out at all.
Development tooling is also weird and glitchy.
I have used AppEngine, off and on, for many years. The advantage is getting auto-scaling and robust data stores automatically. The disadvantage is some degree of technology lock-in and that you can host less expensively using a provider like OVH or DigitalOcean.
EDIT: another good thing about AppEngine is that the 'free tier' will let you run a low traffic site for free, or very inexpensively. IBM's Bluemix is another service with a generous free tier.
EDIT: another good thing about AppEngine is that the 'free tier' will let you run a low traffic site for free, or very inexpensively. IBM's Bluemix is another service with a generous free tier.
On reducing cost on GAE while prototyping: https://goo.gl/BLutaI
GAE has flexible environment which has meant you can use stack of your choice which is unlike its previous versions.
GAE has flexible environment which has meant you can use stack of your choice which is unlike its previous versions.
The more "adult" Cloud services are taking priority which is noticeable in the monitoring solutions and deploy tooling. I've seen bugs that you wouldn't expect in a production class service linger for months, requiring you to spend time working around them. And the CPU cost overhead of their heavily abstracted runtime is not dismissible if you compare running Docker instances in Kubernetes (Google Container Engine).
I really enjoy using GCP, the APIs and tools are much nicer than say AWS, and Google's offering has quickly caught up with competitors. I've just moved over to Docker instances which is ultimately cheaper, faster to deploy, more predictable, and more configurable.