Hi Jeff

thanks for heads up.

I one of the "early java gae adopters" and it really makes me sad to see 
how google kills quite awesome platform with such decisions - I went 
through simple servlet app to full scale Spring MVC (with all usual stuff 
like ehcache/velocity/others) and after major disappointment last year with 
cold starts and startup issues on GAE (Spring MVC simply didn't load in 60s 
interval sometimes, google was spinning/killing instance in couple of 
seconds) I ended up with this solution for http://www.librarist.com/:

1) I run Web frontend on Appfog (Spring MVC with Rest/Velocity/Ehache) - 
this piece is responsible for fetching all data from backend and caching 
them for user
2) REST backend runs on App engine - this part is done in multiple separate 
app engine application and it's build on own hacked spring-like minimal 
container which allow me to do some very simple DI/MVC/REST+JSON 
(configured in old good XML, no anotations no AOP) - cold start is usually 
4-5 secs and the app is fully serving then. As I said I have split all the 
app "modules" into separate applications which reduces number of request 
per app (so some apps with longer runnign request doesn't hold back app 
with faster requests). 

- cover app for fetching and displaying book covers
- book data app for fetching/storing all book related information
- pricing app which operates with external grabbers (grabbers run in 
parallel in different cloud providers aka Heroku/Appengine/Appfog/Openshif 
and I'm going to experiment with Amazon spot instances as well)

I've done this infrastructure change 2-3 months ago and as far as I can say 
it works fine (I'm having minimal latency in all of my app engine apps, 
usually run only one instance but google handles scaling very nicely now).

I'm not saying this is the only way to go since I know such design is not 
suit for every kind of application and our weak spot is now at frontend 
cloud provider (which is appfog at the moment and seems little bit unstable 
last couple of days) but I just would like to share my experience.

If anyone would like to see how the librarist works the good start would be 
the New Zealand front store (with 30+ suppliers) ie. 
http://www.librarist.com/nz/book/9780007310579/ - it usually does an 
instant price comparison on those 30+ shops in 2-4 secs (and I believe that 
now we should be able to keep such time even with more suppliers thanks to 
modular and parallel design of our backend).

Best regards

Tomas.

On Thursday, 16 May 2013 11:52:51 UTC+12, Jeff Schnitzer wrote:
>
> I attended the "Autoscaling Java" session at Google I/O. In summary, the 
> advice is:
>
>  * Don't use dependency injection.
>  * Don't use AOP.
>  * Hardcode configuration values as much as possible.
>
> In other words, go back to Java circa 2002. There was no discussion of 
> changing routing so that user requests don't see cold starts. I asked about 
> this in person - apparently they're still "talking about it" and nothing 
> has been done about it.
>
> I am sad.
>
> Jeff
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at http://groups.google.com/group/google-appengine?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to