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'.
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.
Database-server
- Should be able to run MySQL
- Should be able to... well, do nothing else :P.
- Should be extremely reliable and fast.
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/).