Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I'm beginning the tranistion to Amazon Web Services (AWS) for my company, and I'm looking for some advice, tutorials, and/or anything else to help with the new setup.

We host many (about 600) Real Estate websites. We have a bunch of agents who have sites, but we also have some individual building sites, as well as some other miscellaneous sites. We previously hosted through Codero on a dedicated server, but we've had a lot of issues with that, and so we're transitioning to something we hope will be easier, and cheaper (enter: AWS).

Our new RETS feed will be through RetsCloud (which we've already set up), and we hooked it up to an instance of AWS DynamoDB.

Where I'm starting to get stuck is where all the rest of things "should" be setup. It appears that what I want to do is setup EC2 to run apache (or nginx) and PHP, then CloudFront to provide the distribution, S3 to provide the pictures (through RETS there's a lot of photos--this is already setup). Whew.

I guess in my head, I just don't see this setup needing to be that complicated, so is there a simpler way to do this? Or is it basically just that if I choose to use AWS, I'm gonna be stuck setting it all up this way.

We were using some shared web hosting (name.com and bluehost.com) in the interim, but we seem to get cut off (I/O throttling) with only a handful of sites (right now there's about 10 on one account and they typically "run slowly" (according to my boss) throughout the day).

Any advice is greatly appreciated. Also, if I'm approaching this the "wrong" way, or if there's a much better way (or you just want to smack me upside the head), please let me know!

share|improve this question
5  
If you're expecting AWS to be a cheap solution, you've got a big surprise coming in a month. –  Tom O'Connor Aug 2 '13 at 22:06
1  
Don't take your boss' word for it being slow, install some user-side analytics (like NewRelic, etc) and see how slow the real users perceive it to be. –  Tom O'Connor Aug 2 '13 at 22:07
    
I'm not quite sure what you're trying to ask - you seem to have at least two questions kind of mashed together (one about architecture, the other about your current performance problems on shared hosting). Can you rework this question to be clearly about one or the other, and maybe give us a little more detail so it's easier for us to help you? –  voretaq7 Aug 2 '13 at 22:12
    
Certainly! We've already decided to go with the Amazon AWS stuff (DynamoDB for RETS data and S3 for picture hosting). Let me clarify my question: Is EC2 overkill for this purpose? (i.e. is there a "better" and less time-consuming way of doing this?). The follow up question is: if EC2 is a decent way of doing this, is it the "right" way to do it through the AWS? (i.e. where would I get started, besides the Amazon guides?) –  zerodahero Aug 4 '13 at 23:15
    
Also, @TomO'Connor, we're expecting the AWS to be around $80-100/mo, which, compared to our dedicated server over at Codero at around $380-400/mo, we're at about 25% the cost. –  zerodahero Aug 4 '13 at 23:19

2 Answers 2

up vote 0 down vote accepted

Q1

so is there a simpler way to do this? There are many ways to architect your website with AWS. The simplest way to host a static website would be to use S3.

If you require a web server, so that you can run server side code (e.g you need to run PHP) you'll need to use EC2. There is no "PHP as a Service" with AWS right now. The simplest setup would be launching one EC2 Instance in the OS of your choice, and hosting the website from there. This is not the most optimal solution and shouldn't be your end goal for a production setup.

Q2

Is EC2 overkill for this purpose? (i.e. is there a "better" and less time-consuming way of doing this?).

If you want to run PHP EC2 isn't overkill. If there was a "PHP as a Service" that would be less time-consuming, but that's not available with AWS right now.

Q3

The follow up question is: if EC2 is a decent way of doing this, is it the "right" way to do it through the AWS? (i.e. where would I get started, besides the Amazon guides?) –

If you're interested in building a website that can scale, and handle lots of traffic automatically there are some best practices to follow. Here is an example of how I might setup a stack to handle such requirements.

  • EC2 configured automatically with something like Puppet to act as a web server (nginx+php)
  • EC2s sitting in an autoscale group (on boot Puppet configures the machine, and they get latest code)
  • ELB to handle load balancing of the EC2s
  • RDS for relational DB needs
  • Uploads sent to an S3 bucket so all EC2s can access them
  • CloudFront for all static files (js,css,imgs)

Extend

You could take it a few steps further, with Varnish, or a Memcached/elasticache setup, CloudFormation too.

Lower Costs

You could lower costs by using Reserved Instances and/or look into spot instances for part of your infrastructure (ie have a core group of on-demand instances and supplement it with a spot instance group).

More Info

Here are some starting points:

Isn't there a shortcut?

There are a few services that can do some of the heavy lifting for you. This sort of stuff still using a lot of the things I've talked about, AWS just tried to automate it for you through their console.

elasticbeanstalk

http://aws.amazon.com/elasticbeanstalk/

AWS Elastic Beanstalk is an even easier way for you to quickly deploy and manage applications in the AWS cloud. You simply upload your application, and Elastic Beanstalk automatically handles the deployment details of capacity provisioning, load balancing, auto-scaling, and application health monitoring.

OpsWorks

http://aws.amazon.com/opsworks/

AWS OpsWorks is a DevOps solution for managing applications of any scale or complexity on the AWS cloud. AWS OpsWorks features an integrated experience for managing the complete application lifecycle, including resource provisioning, configuration management, application deployment, software updates, monitoring, and access control.

share|improve this answer
    
Perfect! That's exactly the information I was looking for! Thank you! I'll let you guys know how it turns out! –  zerodahero Aug 7 '13 at 17:24

Your setup looks good to me, it's not overcomplicated. EC2 is not overkill, that's the way to have a web server in AWS. To minimize costs, you'll want to study and experiment with Reserved, On-Demand, Spot instances.

share|improve this answer
    
I suspect that On-Demand instances aren't suitable for the OP's use-case, as that kind of usage is better suited to asynchronous processing of data, rather than always-on websites. –  Tom O'Connor Aug 6 '13 at 23:20

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.