I can't believe I'm keeping this thread going, but...

On Sun, Jul 22, 2012 at 10:15 AM, Drake <[email protected]> wrote:
>   And your
>> absurd proposal that all 326 of my url endpoints should be separate
>> applications...  Just.  Wow.
>
> If you had actually read what I posted I said that you should group by task
> type, and used class so that you had many smaller apps, that were optimized
> for like tasks and minimizing classes.

Your exact words were "Each of what you call and End point should be a
micro app. A single purpose App that handles one type of request."
But let's move on.

I was a tech lead in EA's online platform group - hundreds of services
among thousands of machines - so don't lecture me about service
oriented architectures.  And that's not even close to the most
impressive thing on my resume.  Now, can we put our dicks back in our
pants?

There is a proper scale for breaking down a monolithic application
into separately deployed modules, but this isn't it.  In real-world
business apps (the kind that - unlike your CDN - represent 90% of GAE
users), transactional boundaries place limits on how you can decompose
an application since you can't (without getting *really* crazy) run a
transaction across instances.

I'm glad that you've figured out how to tightly optimize serving
static content through GAE.  I'm sure your CDN code is lovely and well
suited to its painfully narrow task.  But you're trying to generalize
a hack - "write at the lowest API level all the time" - to projects
that are simply too complicated for that kind of hack.  With broader
experience, you would understand this.

> If you want it to be constructive, post your code and I'll whack 30% off
> your start time just to get you to stop griping about how it is not possible
> to speed up start times because Google sucks.

Cute.  I'll make you an equally pointless offer:  If you want to fly
out to San Francisco, I'll show you the code for a modern business
application and you will see for yourself why your optimization
strategy is farcical.  The difference between your pointless offer and
my pointless offer is that if you actually took me up on it, I could
deliver.

However, if you want to play a game, try optimizing this demo app:

http://www.motomapia.com/

The code is linked from the header.  Typical instance startup time is
10-15s.  Here's the rules of the game:

 * The @Path annotations must keep working
 * The @Transact(TxnType.REQUIRED) annotation must keep working
 * Datastore access must be through typed POJOs.

Let me predict the response:  "Too many frameworks!  Use low-level
API!  Use web.xml!  Manipulate transactions by hand!"

All of that works in a toy demo but not in an app with hundreds of
endpoints, dozens of polymorphic entity classes, and complicated
transactional logic.  Essentially, your optimization strategy is to
write code in a way that does not scale to the complexity of a modern
business application.  Pure fail.

Jeff

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to