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/).