I suppose if you foresee system admin tasks becoming a big pain in the ass,
then Appengine would alleviate that.

Also, you can really keep your costs low during initial development which
can be good if every single penny counts.

But, it sounds like your user base will be fairly small (you mentioned
thousands to tens of thousands), and you don't expect any big time
scalability issues... so you won't get much benefit from Appengine's
abilities there.  And, a well written application with good DB design
running on EC2 should be able to serve out reads to 10,000 users with no
problem at all (especially if you slathered in a little memcache).

If you have a small scale app that will frequently have to cold start (say,
5 minutes goes by without anyone using the app), then you will probably run
into issues with any 3rd party imports timing out or with the app failing to
get an instance allocated within the 10 second limit.  This is not a big
deal if the user doesn't mind reloading a page.. but it can be somewhat
annoying to end users who just want the site to work.

For example, I am the only user of my app.  It is all back end processing
that takes place once every 5 minutes over a 6 hour and 35 minute period
(so, this scheduled process should successfully run 80 times).  Sadly, the 5
minute mark is just enough time for all hot instances to go cold.  So, it
cold starts every time.  Twice today it threw DeadlineExceeded errors while
trying to import a 3rd party module that is included with my app.  From week
to week I will see a number of 500 errors with one of these messages:

"A serious problem was encountered with the process that handled this
request, causing it to exit. This is likely to cause a new process to be
used for the next request to your application. If you see this message
frequently, you should contact the App Engine team. (Error code 203)"
  or
"Request was aborted after waiting too long to attempt to service your
request. This may happen sporadically when the App Engine serving cluster is
under unexpectedly high or uneven load. If you see this message frequently,
please contact the App Engine team."

I saw two 500 errors on Thursday and Wednesday of last week. (2 may not seem
like a lot, but this is for a process that runs only 80 times a day.  So,
that's 2.5% failure.)

For me this doesn't matter, since it just retries its task after the failure
and succeeds.  I expect potential failure and just work around it.. it's
much better than having to pay to have an EC2 instance running for 6 hours
every day (not to mention the chicken and the egg problem of what would
start up this EC2 process in the first place [guess you could use Appengine,
but then.. why not just do it all on Appengine eh?]).. or needing to bother
with administering the EC2 machine.

So, if the apps you're developing might have frequent cold starts, make sure
you're able to deal with the occasional instance timeout or deadlineexceeded
error on an import.  If cold starts won't happen much or if your users won't
mind a 1% to 2.5% retry rate on cold page loading (or well, they won't raise
all hell because of it), then Appengine can work very well for you.

Of course, there's always the concern of Appengine going the way of Google
Wave.. or maybe all the Appengine Developers going to work at Facebook or
Twitter instead.. but, you should have a 3 year lead time on that.. and
there are a number of projects that aim to run Appengine apps in other
environments (like Appscale and TyphoonAE).

There are other bonuses... like the Map Reduce API and the upcoming Channel
API and the Matcher API.. that are great if you have a use for them.

I guess this is all just a long winded way of saying, if you like Python and
want to be able to iterate the hell out of your development projects at 100
miles an hour into the future and want to be able to scale out from 1 to 130
instances in 60 seconds and want some wildin' out APIs in your bag of tricks
and can stand the bumps in the road along the way.. do it.. port to
Appengine.  But, if you have a top gun client in Boise who will lose
patience with your app because he has to reload something and might drop you
because of this and you can't guarantee 99.9% uptime because you aren't in
control of what your app is running on... and topgun is a big cash cow for
you.. then you might do better to stick to EC2 and deal with administering a
rock solid service there.  Everything is a trade off... I guess that's what
I'm trying to say.

On Mon, Nov 1, 2010 at 10:14 PM, John McLaughlin <
johnmclaugh...@massanimation.com> wrote:

> Hi Eli,
>
> Thanks for asking.
>
> The EC2 app was originally written more than 4 years ago using a .NET
> MySQL tech stack.  It has had fairly minor updates since, but the
> original developer is mostly unavailable for further development.  The
> app is currently running on a single EC2 instance and it allows us to
> manage a single project at a time.   We will we need a more nimble
> environment because we will be running multiple projects at a time,
> that are up to 10 times more complex, with more varied user
> engagement.
>
> There is still a fair possibility that we would stick with our current
> EC2 methodology and put off the inevitable tech rewrite.  But we are
> currently between projects, and have the opportunity to switch
> technologies now and avoid the "changing tires while speeding down the
> freeway" syndrome that we might have a year from now.
>
> John
>
>
> On Nov 1, 3:17 pm, Eli Jones <eli.jo...@gmail.com> wrote:
> > What are your reasons for leaving Amazon's EC2?
> >
> > Knowing the primary reasons you have for leaving EC2 may help determine
> if
> > migrating to Appengine is worthwhile.
> >
> > On Mon, Nov 1, 2010 at 6:08 PM, John McLaughlin <
> >
> >
> >
> >
> >
> >
> >
> > johnmclaugh...@massanimation.com> wrote:
> > > Hi All,
> > > I’m looking for a reality check before diving into developing (in
> > > python) a major application for our web site (technically this is a
> > > ground-up rewrite of an aging EC2 based app). There are a lot of
> > > things that I like about GAE: easy development and deployment,
> > > (mostly) worry free data storage, world wide response caching, etc.
> > > And I’ve already programmed some smaller test apps with no major
> > > problems.  However now its “rubber hits the road” time and the
> > > decision is not yet a slam dunk.  Here are my concerns:
> > > 1. As far as I can tell there are few people using the the blobstore
> > > to serve video.  I haven’t had a problem with it, but I don’t feel I
> > > have the safety in numbers factor either.
> > > 2. Video transcoding is an essential component.  Currently I’m going
> > > off-GAE to Zencoder -- but this gives me one extra point of failure,
> > > and an awkward data flow to round-trip back to the blobstore.  There
> > > could be other off-GAE processing requirements later such as 3D
> > > rendering.
> > > 3. I don’t yet know how to serve Flash content from GAE.   I assume
> > > PyAMF is my tool, but I don’t know enough about it to assess how much
> > > effort it will take to get up-to-speed and implement my Flash to
> > > Datastore connections.
> > > 4. My app traffic and database size are probably on the small side
> > > compared to most commercial sites that would use GAE.  This could be
> > > good -- I benefit from all the big guys hammering the platform, or bad
> > > -- my particular needs don't get Google love.
> >
> > > Opinions?  Is GAE the right platform for my app?
> > > John
> >
> > > PS:  Appoximate app parameters are:
> > > 1. Rapid and flexible development is a high priority.   Therefore we
> > > could trade operational dollars to reduce development expenses (within
> > > reason).
> > > 2. Up to 2000 world wide "member" users.  These users would upload
> > > short videos (~10 seconds, ~10MB) and other data at least a couple
> > > times a day.
> > > 3. About 5 main pages that are member accessible which serve mostly
> > > moderately complex Flash content.
> > > 4. Facebook Connect with up to 100,000 worldwide fans.  Fans will
> > > access the site and view a few short videos daily.  10% of this access
> > > will probably be from mobile devices.
> > > 5. Primary database tables are:  “Members” (<2000 entries),
> > > “Tasks” (<3000 entries), and “Uploads” (<100000 entries)
> > > 6. Only moderate security demands: (No financial transactions, uses
> > > Facebook or OpenID login, low profile target for bot or DDOS threats.)
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "Google App Engine" group.
> > > 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<google-appengine%2bunsubscr...@googlegroups.com><google-appengine%2Bunsubscrib
> e...@googlegroups.com>
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/google-appengine?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to google-appeng...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@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