|
|
|
|
|
by jimrandomh
5688 days ago
|
|
There are a lot of apologists here, and they're all missing the point. Google App Engine has a large number of random issues and limitations which, while they each individually seem like they ought not to matter, add up to a substantial risk for a project running on it. I'm currently working on a project with a web component, and considered GAE. I chose not to use it, because some of the stuff I encountered in the documentation is absolutely terrifying. You're supposed to handle exceptions from the datastore? Really? The best you can possibly do is retry, but if that was going to work the library would be doing it automatically... so I guess it's saying that your app might just randomly fail sometimes. No https with a domain? I guess ever taking credit card numbers is off the table. Thirty second limit per request? Sounds reasonable, except for all the complaints about the app engine taking thirty seconds just to load the Python interpreter and compile their code. That sort of shit will sink a project; until App Engine has had a lot more time to sort out its issues and mature, I want no part of it. |
|
1. "You're supposed to handle exceptions from the datastore? Really?" — Are you saying you don't handle exceptions when your regular relational database throws them? I've seen Sybase and MySQL blow up with depressing regularity, and have had to write exception-recovery code for them.
2. "No https with a domain?" — What stops you from making https://<your-app>.appspot.com the handler for forms which read sensitive information? You can submit the form with XHR, have the server send back a structured response (perhaps as JSON), and deal with it with JavaScript on the client. I admit that it's annoying (you need different form submit targets in development and production), but it shouldn't be a deal-breaker unless you need your entire site to use SSL.
(If you do need your entire site to use SSL, then the appspot domain limitation obviously sucks. If that's the case though, then you're probably doing something with finance, and the datastore's transaction semantics probably cannot work for you at all.)