Domain – the difference between a plain Amazon ec2 instance and beanstalk

amazon ec2amazon-elastic-ipamazon-web-servicesdomainhostname

I am a solo developer and the sites I'm deploying are very small, usually hobby sites and I have a few questions about the Amazon services.

  1. Is there a reason for me to use beanstalk or should I just stick with a single ec2 instance?

  2. Should I use RDS for database? I heard someone say that I could just install a database on my ec2 instance, making it cheaper. I'm trying to keep everything as cheap as possible.

  3. I need to point custom domains to my sites. Pretty sure that means I have to deal with elastic IPs. Do those work with beanstalk or only with individual ec2 instances?

Thanks in advance!

Best Answer

You can think of AWS Elastic Beanstalk as being a sort of automated version of EC2--that is, it uses EC2 on the backend for the servers, but you don't have to worry about manually provisioning servers, expanding servers when you hit capacity, and so on. Basically, you give Beanstalk your application and it will "scale" it for you. In fact, you aren't charged for Beanstalk itself--you are charged for the AWS resources you're using, such as S3, SNS, and EC2.

So to answer your questions:

  1. If you want control over scaling and resource control, EC2 is what you want--but keep in mind, this leads to a lot of administrative work, and if you aren't familiar with the concepts at hand, you may get a little lost. Plus, it might not be worth the time and effort to do so. Beanstalk gives you scalability without micromanagement.
  2. MySQL Micro RDS instances start at $0.025 an hour, while Small EC2 instances start at $0.020 an hour. However, the RDS service provide several useful features, such as auto-scaling, automated backups, database optimization, and so on. It's really up to you if you want either or. You'll need to run the numbers yourself and decide how much time you want to spend dealing with the DB.
  3. You will almost certainly need to use a DNS provider to setup a CNAME on your domain. Coincidentally, there's an AWS service--Route 53--that does this. IIRC, there are also several third party services that can bridge this gap for you.

Hope this helps!