Depends on the size of your project.
I started with plain java/jsp.
As the project grew the overhead of maintenance was so big that we opted to moving everything to spring-mvc.
That move increased the instance boot time from 7 to 35 seconds. In order to overcome cold startups we had to add 6 extra "resident" instances. It means a monthly $300 commitment just to run an MVC framework.
Yes. It's frustrating and expensive.
I wouldn't advising starting a java project in appengine. It seems they're investing much more on other languages.
Thanks
Rafa
Is it worth dong it?--
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-appengi...@googlegroups.com.
To post to this group, send email to google-a...@googlegroups.com.
Visit this group at http://groups.google.com/group/google-appengine.
For more options, visit https://groups.google.com/groups/opt_out.
Welcome to the club. People have been waiting for this for years.
I really like the basic part of your framework, the python route config style and the simple view files.For it is also based on servlet, I think it can't solve the warmup problem.Bit I would give it a try in my later new projects.
Warren,
Compute engine wouldn't work with big table. Would it?
It would require a large migration. In that case people would probably go full aws.
Compute engine wouldn't work with big table. Would it?
On Wed, Feb 12, 2014 at 8:28 AM, Rafael <mufu...@gmail.com> wrote:Compute engine wouldn't work with big table. Would it?
BigTable is available through the Cloud Datastore service. There's much more configuration involved than accessing it through App Engine, but it is possible: https://developers.google.com/datastore/docs/getstarted/start_java/The only issue is that there are some increased costs because requests to the Cloud Datastore have to go through an App Engine layer: https://developers.google.com/cloud/pricing#cloud-datastore
Google Compute Engine would probably be a better option for a large legacy Java code base.
Hi Tapir, I'm not sure I understand what you mean by this 'I think it can't solve the warmup problem'.Unfortunately (for everyone) there's no real avoiding waiting for startup of your app with appengine right now.The best you can do is make it as quick as possible. The key is to avoid any classpath scanning, and have the lightest possible amount of initialisation code.The online docs also suggest that number of files plays some part, but i've never really seen any evidence of this.A basic thundr app has around a 4 second startup on appengine, obviously as you add in more initialisation that goes up.
On Friday, February 14, 2014 6:23:38 AM UTC+8, Nick wrote:Hi Tapir, I'm not sure I understand what you mean by this 'I think it can't solve the warmup problem'.Unfortunately (for everyone) there's no real avoiding waiting for startup of your app with appengine right now.The best you can do is make it as quick as possible. The key is to avoid any classpath scanning, and have the lightest possible amount of initialisation code.The online docs also suggest that number of files plays some part, but i've never really seen any evidence of this.A basic thundr app has around a 4 second startup on appengine, obviously as you add in more initialisation that goes up.I tried uploading a simplest java project with only 2 jsp files. The warmup needs 5-7 seconds. I think the project can't be simpler.So, to stick to java, I plan to migrate my project to a dedicated server later.GAE instances are too expensive.
On Friday, February 14, 2014 6:23:38 AM UTC+8, Nick wrote:Hi Tapir, I'm not sure I understand what you mean by this 'I think it can't solve the warmup problem'.Unfortunately (for everyone) there's no real avoiding waiting for startup of your app with appengine right now.The best you can do is make it as quick as possible. The key is to avoid any classpath scanning, and have the lightest possible amount of initialisation code.The online docs also suggest that number of files plays some part, but i've never really seen any evidence of this.A basic thundr app has around a 4 second startup on appengine, obviously as you add in more initialisation that goes up.I tried uploading a simplest java project with only 2 jsp files. The warmup needs 5-7 seconds. I think the project can't be simpler.So, to stick to java, I plan to migrate my project to a dedicated server later.GAE instances are too expensive.
On Friday, February 14, 2014 2:13:20 PM UTC+8, Tapir wrote:
On Friday, February 14, 2014 6:23:38 AM UTC+8, Nick wrote:Hi Tapir, I'm not sure I understand what you mean by this 'I think it can't solve the warmup problem'.Unfortunately (for everyone) there's no real avoiding waiting for startup of your app with appengine right now.The best you can do is make it as quick as possible. The key is to avoid any classpath scanning, and have the lightest possible amount of initialisation code.The online docs also suggest that number of files plays some part, but i've never really seen any evidence of this.A basic thundr app has around a 4 second startup on appengine, obviously as you add in more initialisation that goes up.I tried uploading a simplest java project with only 2 jsp files. The warmup needs 5-7 seconds. I think the project can't be simpler.So, to stick to java, I plan to migrate my project to a dedicated server later.GAE instances are too expensive.Here is the usage of my project at Feb 12.And here is the Google Analytics result of my website at the same day:The advertisement revenue of the day is about 0.2$, I think.Which means the money I paid to Google is more than I earned.So I think my website is unsustainable if I stick to App Engine.Maybe it is related to Java, or not.
On Friday, February 14, 2014 2:13:20 PM UTC+8, Tapir wrote:
On Friday, February 14, 2014 6:23:38 AM UTC+8, Nick wrote:Hi Tapir, I'm not sure I understand what you mean by this 'I think it can't solve the warmup problem'.Unfortunately (for everyone) there's no real avoiding waiting for startup of your app with appengine right now.The best you can do is make it as quick as possible. The key is to avoid any classpath scanning, and have the lightest possible amount of initialisation code.The online docs also suggest that number of files plays some part, but i've never really seen any evidence of this.A basic thundr app has around a 4 second startup on appengine, obviously as you add in more initialisation that goes up.I tried uploading a simplest java project with only 2 jsp files. The warmup needs 5-7 seconds. I think the project can't be simpler.So, to stick to java, I plan to migrate my project to a dedicated server later.GAE instances are too expensive.Here is the usage of my project at Feb 12.And here is the Google Analytics result of my website at the same day:The advertisement revenue of the day is about 0.2$, I think.Which means the money I paid to Google is more than I earned.
Our warmup time was 15 seconds, then I looked at the hello world project that the GAE plugin generates with one servlet.That took 2 seconds to startup (once the servlet was hit).
Then I added all the jars from our project but kept the same web.xml configuration.Startup time went up to almost 10 seconds.So I've done a lot of work to try and remove jars from my project and that helped a bit.I've also disabled "warmup" so that no extra processing is done if a user hits a cold instance.Everyone will suffer but just a bit.Also, I've been suggested to have a look at "Modules" and also at a plugin called Proguard:
On Tuesday, February 18, 2014 3:57:37 AM UTC+8, Emanuele Ziglioli wrote:Our warmup time was 15 seconds, then I looked at the hello world project that the GAE plugin generates with one servlet.That took 2 seconds to startup (once the servlet was hit).On F2 instance?Then I added all the jars from our project but kept the same web.xml configuration.Startup time went up to almost 10 seconds.So I've done a lot of work to try and remove jars from my project and that helped a bit.I've also disabled "warmup" so that no extra processing is done if a user hits a cold instance.Everyone will suffer but just a bit.Also, I've been suggested to have a look at "Modules" and also at a plugin called Proguard:My experience is the modules feature will spend your money.
On Tuesday, February 18, 2014 3:57:37 AM UTC+8, Emanuele Ziglioli wrote:Our warmup time was 15 seconds, then I looked at the hello world project that the GAE plugin generates with one servlet.That took 2 seconds to startup (once the servlet was hit).On F2 instance?
My experience is the modules feature will spend your money.
I think (and previous guidance supports this) that it isn't the loading of the jars that is taking time, its actually fetching your war (and the files in it, so downloading the jars) that is taking so much elapsed time. The smaller your overall artifact, the quicker it can be pulled in and started up.
Its interesting looking at some of my apps which jars are unusually large. Guava itself is surprisingly large (10% of my average war). Might be worth playing a little with to see how much this can be optimised.
Not sure where my reply went.On Tuesday, February 18, 2014 3:57:37 AM UTC+8, Emanuele Ziglioli wrote:Our warmup time was 15 seconds, then I looked at the hello world project that the GAE plugin generates with one servlet.That took 2 seconds to startup (once the servlet was hit).On F2 instance?Haven't seen much difference between F1 and F2 when it comes to warmup time.Most time seems to be spent actually loading jars. Initialization could be as little as 3s with our project, F2 would a bit better but not so much
My experience is the modules feature will spend your money.I haven't seen many people using modules yet. Can't they be configured to be F1 like non default versions?
--
very interesting...can you tell me how you did that? in a maven build or only via eclipse?
On Tuesday, February 18, 2014 4:56:51 PM UTC+8, Rafael Sanches wrote:very interesting...can you tell me how you did that? in a maven build or only via eclipse?neither, I did it manually.ok, the new test result:1. if I remove all jar files from the war/WEB-INF/lib, the warmup time is about 2.3 seconds.2. if I put the only the core app engine sdk jar file in war/WEB-INF/lib, but doesn't reference it, the warmup time is about 2.9 seconds.3. if I put "DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();" in the jsp file but do nothing eslse, the warmup time is 3.5 seconds4. if I put a query in the default jsp file, the warmup time is 4.7 seconds.5. if I convert query result as list, the warmup time is 6 seconds.so, I think it is very clear that the datastore API is main cause of long warmup time. A simple datastoe calling will increase the warmup time much. In above example, the total increased warmup caused by datastore APIs is more than 3 seconds.
On Tuesday, February 18, 2014 4:56:51 PM UTC+8, Rafael Sanches wrote:very interesting...can you tell me how you did that? in a maven build or only via eclipse?neither, I did it manually.ok, the new test result:1. if I remove all jar files from the war/WEB-INF/lib, the warmup time is about 2.3 seconds.2. if I put the only the core app engine sdk jar file in war/WEB-INF/lib, but doesn't reference it, the warmup time is about 2.9 seconds.3. if I put "DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();" in the jsp file but do nothing eslse, the warmup time is 3.5 seconds4. if I put a query in the default jsp file, the warmup time is 4.7 seconds.5. if I convert query result as list, the warmup time is 6 seconds.
On Tuesday, February 18, 2014 4:56:51 PM UTC+8, Rafael Sanches wrote:very interesting...can you tell me how you did that? in a maven build or only via eclipse?neither, I did it manually.ok, the new test result:1. if I remove all jar files from the war/WEB-INF/lib, the warmup time is about 2.3 seconds.2. if I put the only the core app engine sdk jar file in war/WEB-INF/lib, but doesn't reference it, the warmup time is about 2.9 seconds.3. if I put "DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();" in the jsp file but do nothing eslse, the warmup time is 3.5 seconds4. if I put a query in the default jsp file, the warmup time is 4.7 seconds.5. if I convert query result as list, the warmup time is 6 seconds.so, I think it is very clear that the datastore API is main cause of long warmup time. A simple datastoe calling will increase the warmup time much. In above example, the total increased warmup caused by datastore APIs is more than 3 seconds.
On Tuesday, February 18, 2014 4:56:51 PM UTC+8, Rafael Sanches wrote:very interesting...can you tell me how you did that? in a maven build or only via eclipse?neither, I did it manually.ok, the new test result:1. if I remove all jar files from the war/WEB-INF/lib, the warmup time is about 2.3 seconds.2. if I put the only the core app engine sdk jar file in war/WEB-INF/lib, but doesn't reference it, the warmup time is about 2.9 seconds.3. if I put "DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();" in the jsp file but do nothing eslse, the warmup time is 3.5 seconds4. if I put a query in the default jsp file, the warmup time is 4.7 seconds.5. if I convert query result as list, the warmup time is 6 seconds.so, I think it is very clear that the datastore API is main cause of long warmup time. A simple datastoe calling will increase the warmup time much. In above example, the total increased warmup caused by datastore APIs is more than 3 seconds.Otherwaise, scanning the core app engine sdk jar will cost 0.5 second.So, @GAE_team, please optimize your datastore APIs. Done!
On Tuesday, February 18, 2014 4:56:51 PM UTC+8, Rafael Sanches wrote:very interesting...can you tell me how you did that? in a maven build or only via eclipse?neither, I did it manually.ok, the new test result:1. if I remove all jar files from the war/WEB-INF/lib, the warmup time is about 2.3 seconds.2. if I put the only the core app engine sdk jar file in war/WEB-INF/lib, but doesn't reference it, the warmup time is about 2.9 seconds.3. if I put "DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();" in the jsp file but do nothing eslse, the warmup time is 3.5 seconds4. if I put a query in the default jsp file, the warmup time is 4.7 seconds.5. if I convert query result as list, the warmup time is 6 seconds.
Great stuffhope you don't move to Go too soon!
Have you tried playframework? They have optimizations to make your life easier when developing.My life is living hell right now when developing with maven and appengine. The play framework solves that by running their own thing.
Can you try and let us all know? it may be the solution you're looking for.
Hi Jeff,
I would describe mine as success too.
Although, the only point of using appengine was the ease of development and that it would scale as we grew.
1) Ease of development is out of question with a big code base.
2) scale comes at the highest cost.
Thanks
Rafa
Modules have two good things:
1) different scaling and memory configuration.
2) separate the code into chunks of smaller packages. (you don't need spring for everything)