

AWS Elastic Beanstalk now supports Python - mza
http://aws.typepad.com/aws/2012/08/announcing-aws-elastic-beanstalk-support-for-python-and-seamless-database-integration.html

======
jawnb
A couple friends and I just spent the past 48 hours building an app that
recreates a lot of this functionality. Some key things to note with this is
that you're stuck with RDS, and locked in to amazons platform choice.

If anyone is interested in the work we did this weekend,
<https://github.com/jawnb/badatcomputers>

~~~
mbreese
Can't you use RDS like any MySQL database? And since you're writing a standard
WSGI app, it seems like there is very little lock-in. This seems to basically
automate the provisioning of EC2 instances for the web app and the DB. and
since you just have a standard app, you're free to move it around as needed.

Or is there something that I'm missing with the Elastic Beanstalk? (I've only
used raw EC2)

~~~
jawnb
Yes RDS is like any MySQL db. The key word there being MySQL. If you want to
use another data store like say, postgres or even some NoSQL solution. You're
outta luck.

As for platform lock-in, my comments were less towards the web services level
and more about system level concerns. It's not entirely clear how you would
run persistent background tasks (read: celery). This doesn't even get into the
headaches of learning yet another DSL to define OS packaging requirements.

That being said, IMO this would be great for simple apps, with no strenuous
requirements. In addition, anything that allows more people to easily deploy
their django apps is a good thing.

~~~
count
RDS isn't just MySQL - you can also use Oracle or SQL Server, if you don't
want MySQL.

For NoSQL, look at the other stuff that doesn't have 'Relational' in the name
:) (DynamoDB, SimpleDB, etc.)

------
spicyj
Has anyone here used Elastic Beanstalk? What were your experiences?

~~~
bromley
I've been using the Java version of Beanstalk to run a commercial API -
<http://www.degreedays.net/api/> \- for about 12 months.

So far it's been working out very well. I love how you can dip into the EC2
APIs if/when you need to, but it's not usually necessary as the basic setup is
excellent (a load balancer in front of one or more EC2 instances - your choice
of number, type, and auto-scaling rules).

The tools for updating a Java app are great. Each deployed version of your app
gets stored in the AWS system, and you can rollback to any version with a
couple of clicks in the AWS control panel.

It's also pretty easy to set up a staging environment to test new versions
before deploying them to the live environment. Only issue I have with that is
that there's no way to pause a staging environment (like you can pause an EC2
instance and not pay for it while it's paused). So you either have to keep a
staging environment running all the time (paying for its EC2 instances), or
set one up afresh each time you need it. The latter isn't a huge hassle, but
it would be much better if you could just set one up and keep it paused for
most of the time.

I think development on Beanstalk is nicely approachable, and in my experience
it's been pretty reliable as well, or at least as reliable as EC2. The current
version of our app has been running well, with moderate load, for several
months, without so much as a restart of an EC2 instance. On two occasions 6+
months ago one of the EC2 instances went a bit screwy, having problems
connecting to external URLs, but in both cases we just terminated the problem
instance and Beanstalk did the rest (provisioning a replacement and putting it
behind the load balancer). We could probably avoid that sort of problem in
future by improving our internal monitoring (in conjunction with the beanstalk
health checks that ping a URL on each EC2 instance at frequent intervals to
check for problems).

~~~
lee
Can you tell me the reason you'd want to run a load balancer in front of a
single instance? I read the feature spec for the elastic load balancer and
can't it out.

~~~
EwanToo
There's 2 main reasons. 1, if the AZ that your single instance is running in
dies completely, ELB can help fire up a new instance in another zone quickly
without having to handle re-routing DNS, etc. 2 if you need extra capacity in
a hurry (e.g. you just got linked from HN and 10,000 people sign up), you can
add more instances without re-achitecting.

Whether it's worth paying for those capabilities is always up to you though..
:)

~~~
captainchaos
This is a great point. Although it's a slight extra cost, we have adopted this
a best practice because it's still cheaper than a more responsive DNS service.

------
nikcub
Anybody else looking to move from AppEngine? I can't wait to try this out,
AppEngine has become too expensive and AWS has more and better deployment
options, and more and better associated services.

~~~
deno
AWS doesn’t have anything even remotely approaching Appengine Datastore in
functionality and scalability. S3 is also inferior in functionality to Google
Cloud Storage, e.g. eventual consistency, no atomic operations. That’s
actually a big deal if you’re building anything slightly more complex. OTOH,
Google is now introducing their Compute solution, so you can just move parts
that don’t fit very well within Appengine to that (if you have beta access).

------
jpadilla_
What are some advantages of using something like Elastic Beanstalk versus
Heroku, if any?

~~~
sunsu
Price! Heroku is vastly more expensive.

------
mmariani
Great day indeed to be a python developer. Greatly appreciated, thanks Amazon!

Now, if you could support PostgreSQL in RDS, that would be a nice feat.

~~~
Evbn
Isn't Postgresql on EC2 called Heroku?

------
bthomas
Is that really their official blog? I'm not usually one to care about a
professional looking UI, but I feel like it matters here. A non tech boss is
going to see this next to cloud.google and have a tremendous bias, regardless
of what his/her tech people think

~~~
nikcub
Hosted on Typepad, which apparently still exists. That blog template is
probably 10 years old

------
antonp
I wonder if this will lead to Heroku reviewing their pricing plans sooner than
expected. Elastic Beanstalk is catching up, AppFog had their public launch
recently... they must be feeling the heat.

~~~
nikcub
Heroku's main supplier is competing with them, so they need to provide a
better value add layer than Amazon can to justify the price or get off AWS, do
it themselves (not easy) and take that part of the margin

------
davepeck
Does anyone know if this has _explicit_ support for a task queue like Celery?

~~~
dudus
I never tried it but I guess you can use SQS for queues on AWS.

<http://aws.amazon.com/sqs/>

~~~
bialecki
If you go with SQS, keep in mind it doesn't guarantee that messages will be
received exactly once[1]. I've used SQS for large projects and this was killer
because we had to implement message locking ourselves to prevent messages from
being processed twice. Since then, this has been a deal breaker for using SQS
again (now use Celery).

[1]
[http://aws.amazon.com/sqs/faqs/#How_many_times_will_I_receiv...](http://aws.amazon.com/sqs/faqs/#How_many_times_will_I_receive_each_message)

~~~
michaelt
I was under the impression [1] that a message would only be received more than
once if the first attempt at processing failed to complete in the lock time -
for example if the queue consumer crashed. Is it more complicated than that?

[1] <http://aws.amazon.com/sqs/#functionality>

