Take the 2-minute tour ×
Webmasters Stack Exchange is a question and answer site for pro webmasters. It's 100% free, no registration required.

Here's the thing: I need a cheap, fast, reliable infrastructure that can dynamically scale (like Amazon S3: cloud-storage). I'm thinking of 3 different type of 'servers'.

  1. Application-server

    • Should be able to run CentOS (or another light Linux-distr.)
    • Should be able to run Apache
    • Should be able to run PHP
    • Should be able to run GD (so it does rely on it's cpu).
    • Should be extremely reliable and fast.
  2. Database-server

    • Should be able to run MySQL
    • Should be able to... well, do nothing else :P.
    • Should be extremely reliable and fast.
  3. Storage-server

    • Should be able to run some kind of file-transfer-deamon (like FTP, CouchDB, etc.)
    • Should be able to do nothing else.
    • Should be extremely reliable and fast.

So technically, by transferring all static data to 2 different servers/services, the application-server can totally focus on the webpages.

My questions:

  • What services do you recommend?
  • Which is cheaper, faster and more reliable: using my own server, or using some cloud-storage/cloud-computing-service (like Amazon S3, CloudFiles, etc.)?
  • How can I prevent bandwidth abuse (such as dos-attacks causing the bill to be extremely high)?
  • What's the difference between "including CDN" and "excluding CDN"? It seems the price doesn't differ at CloudFiles?
  • Do you have to pay "including CDN" + "excluding CDN" when you decide to enable the delivery-network? Or have you only got to pay "including CDN"?
  • Should I use my own nameserver too or can I use my domain-hoster's nameservers? What are the minimum software specifications of a nameserver. Can I write some software myself? Does anyone have a good protocol-description?

I hope you can answer my questions.

Answers

  • I shouldn't write my own nameserver-software. Instead, I should use something like bind. (http://osspro.com/2010/05/04/linux-create-your-own-domain-name-server-dns/).
share|improve this question

migrated from stackoverflow.com Jan 21 '11 at 17:09

This question came from our site for professional and enthusiast programmers.

3  
belongs on the webmasters SO site... but as for your last question. You do NOT want to write your own name server. If you want to see why, try grabbing the BIND source and see how far you can get figuring it out in 15 days or less. –  Marc B Jan 11 '11 at 20:27
2  
+1 good questions, but too many of them. –  chris Jan 11 '11 at 20:31
1  
You just cant have it all. –  Joe Hopfgartner Jan 11 '11 at 20:32
    
@Marc B, I saw your comment first and thought, what's the big deal with configuring BIND, then I realized what you meant :) Haha. –  Anders Jan 11 '11 at 21:16
    
This should be moved to the Webmasters Stack Exchange site as it doesn't meet the posting criteria for questions on Stack Overflow. stackoverflow.com/faq –  Michael Irigoyen Jan 21 '11 at 16:38
add comment

3 Answers

a few answers to get started:

Using "cloud" is more hype than useful at the moment. You should have basic servers somewhere stable and running, with full backups several times a day, and configure your software so that you can expand it with several cloud computers during peak times if needed. Cloud computers are not very fast and they start to get very expensive with traffic. You could say the price is unreliable.

Virtualization is usually good only for development. It's not for production use, as the system/disk speed is variable.

Get managed dedicated servers so that someone else will notice the system is down and fix the hardware. Make sure the bootfiles are inplace and the system restores itself on boot.

What is fast depends on application. If you are database heavy go for xeon processors. If you are disc heavy go to raid-5 or raid-10 systems and/or SSDs.

Make sure you get backups daily on external location with also some older ones up to 6 months.

CDN is propably the use of Coral or other caching network of computers distributing your static data. Worry about this when your site is full up and running.

You can use your own nameservers as caching nameservers to speed up operation. I don't think there's any point hosting your own domains in your own nameservers as you'll get them elsewhere very cheap or for free.

Btw, keeping your data out of the web/dbserver on another ftp server will propably slow down your site more than having the ftp daemon running on the webserver.

Hope this helps.

share|improve this answer
    
I've had good experiences with virtualisation in production environments for some roles. –  UpTheCreek Mar 23 '11 at 13:51
    
Some cloud solutions do indeed have a few growing pains. Their usefulness largely depends on requirements. Virtualization can most certainly be used for prod environments. Web servers, application servers, and file servers are often good candidates for virtualization. Database servers have to be closely evaluated due to disk I/O, but with the correct configuration in the right environment can be used for production as well. Managed dedicated solutions can be expensive and are also more expensive to scale than a cloud solution, but certainly have their place depending on requirements. –  Rob May 22 '11 at 16:39
add comment

From the requirements you describe, you may want to have a look at the Rackspace Cloud. In many cloud server (VPS) environments, when you want to scale up your machine (increase RAM, CPU, etc.) you have to provision a new server and then migrate from the old to the new. Rackspace gives you the option to increase resources as you need them without having to provision a new server and migrate.

You have a TON of options for configuring your infrastructure. Cloud Files gives you file storage capabilities with the added benefit of being globally distributed on a CDN (included as part of the service). Traffic between your application, database, and file tiers do not count against your bandwidth charges.

In addition to being able to scale up (making each server bigger), with their Cloud Load Balancer options now available, you also have the ability to scale out (adding servers to a particular tier). Managed private clouds are available if you didn't want to handle any of the server management aspects.

For the record, I am not affiliated with Rackspace in any way but I have used their services in the past. Performance has been extremely good.

At the end of the day, the solution you pick will ultimately depend on your requirements, budget, and comfort level with a given provider. That could be Rackspace, Amazon, or just about any other provider.

share|improve this answer
add comment

For storage you shoudl use Amazon AWS.

For application & database server use a dedicated instead.

share|improve this answer
add comment

Your Answer

 
discard

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