Hi guys,

I actually didn't want to reply to this thread originally even I was the 
one who opened the small thread 3 months ago regarding the very slow 
startups on gae with spring + velocity + objectify but after reading the 
email telling me I should "write modular apps and don't use frameworks" I 
have to write up something.

I'm 10+ years java developer and I'm big fan of Spring as it saves a 
hundred hours of time - I originally developed the www.librarist.com 2 
years ago as a pet project on app engine as a just a prototype using simple 
JSPs + Servlets and it works working fine (startups 3-5 secs).

But when I wanted to add another features like cart, OAuth login, use 
templating, use proper caching - and I decided to go with Spring as this 
the reason why we have frameworks. Plugging in Velocity is just matter of 1 
line of code in XML (plus some tweaks if you need them), the cache is again 
couple of lines in XML and you automatically get in memory + memcache with 
ehcache, authentication is 2 lines of code. And I can continue.

I use spring in work for other projects which runs on full java stack (but 
thats just Tomcat/Jetty) and when I run the "new" librarist equivalent code 
on Micro instance on AWS (which is like 600MB ram and 1.8Ghz - I might be 
wrong here a little bit), the startup is 2-3 secs and I can serve all my 
traffic with it with load at max 0.5.

When I run the similar code on GAE, I get 45+ secs startup (when I'm lucky, 
sometime it just go over 1 nib and got killed) and then GAE keep spinning 
another instances like crazy but very often use them for three request and 
then dying to get started again. Worth to mention - I do not use the full 
Spring stac, basically its just Spring core + Spring MVC, then objectify + 
Velocity - and I really tried to do all the possible optimizations (packing 
all the stuff into one big jar, used annotations + java confing, used XML, 
disable scanning of annotations) but these changes just save me like 4-5 
secs from 45 secs.

When I tried just Spring code + Spring MVC without any other library (and 
here we talk about ~2MB of jars), use one JSP, my best startup time is 15 
secs.

Okay thats cool, I can understand the  GAE is different and basically it 
could be used just for small projects where you write everything by 
yourself and don't use any normal stuff like Dependency Injection / 
Proxying and similar. But my biggest question for GAE guys would be this - 
why the hell the startup takes so long simply I don't get what is actually 
the issue here:

- is it loading of the jars from the network (virtual drive) when the gae 
loads each class as separate file
- is it the scanning of the classes (annotations etc)
- is it java reflections
- is it creating of proxies (which Spring does for almost everything)
- anything else I can't see

I really REALLY liked the idea of the app engine since I hate to mess up 
with server configuration and it's great to focus on SW alone. But honestly 
speaking, I gave up on GAE for serious projects - it's good platform for 
doing some quick prototype to show to client (easy deploy, no server 
maintenance, you can have a simple app talking with a lot of apis up and 
running in half a day) - but then move the stuff the AWS.

I made this decision 3 months ago and from the app engine google groups I 
can see it was right thing to do as there is more and more emails coming in 
regarding broken live apps, issues with deploys, issues with startups and 
stuff like that (the SSL cert price is just a joke for example).

I really appreciate the work done on the GAE by Google but if I could give 
an advice - please stop adding new features with every release, invest one 
month of time of your team and do a proper maintenance release which will 
fix all that shit around Java apps (this really can't be so hard) or you 
will lose the war and all java devs will run away to AWS/Heroku/Cloud 
Foundry/Own servers.

Cheers.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/ozWj4QUDBDkJ.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to