Short plan: Automatic hosting site setup using bargain servers or cloud servers. Users with Wordpress/Joomla/Drupal hosting needs are offered managed hosting for $5-$15 per month.
Any drawbacks I should know about?
Look at wpengine.com. They are targeting the WordPress blogger who has outgrown shared hosting but doesn't want to get into the server admin business. For $50/month, they handle caching, scaling, database replication, backups, CDN, and staging.
Your best bet would be to offer better service and scalability at a higher price point. There is a big market out there for site owners who are in between shared hosting and running their own server. Just because I get 100,000-300,000 unique visitors a month doesn't mean I know my way around a Unix command line. That's also the market that can afford to pay $50 a month for hosting.
WordPress/Joomla/Drupal are good targets, because if your customers are running on shared hosting, they are likely putting stress on their overloaded servers, and seeing outages/slowdown/threatening messages from the hosting company. You can give them a huge performance boost simply by moving their database to a separate machine.
The next step is to put a basic cache in front of the app server (Varnish, Squid, nginx). Watch your server load drop when logged-out, anonymous users hit the cache instead of an overloaded Apache machine pulling double duty as a MySQL box.
With Apache on its own machine, look into an opcode cache, and you can also offload static file serving to a CDN. You can do this easily by giving your customers a static path to change in their code (e.g. cdn.yourhostingdomain.com). You can cname this to Amazon CloudFront or MaxCDN, and then set the origin to a dedicated static file server (running nginx, or Varnish+Apache). Store the source files on Amazon S3.
You could run this whole setup with a handful of servers on Amazon or RackSpace, Linode, etc. for a few hundred $'s a month, and handle a few hundred to a few thousand clients paying $30-50 a month for a nice profit.
...until your cloud provider has a big outage...
Also, thanks for the tip on having a dedicated database server. Makes complete sense yet I had no clue CMS sites could be so demanding. I'll need to learn CDNs next.
There's always a catch. =) Thanks for your time.
Lets say you have a basic website at www.domain.com. All of the files are on a single server, so when I request a page, i get www.domain.com/index.php. Apache fires up, PHP does its thing, fetches some data from MySQL, and presents a page. My browser sees that the HTML needs www.domain.com/style.css, script.js, and a dozen images. So it requests them from that same overloaded Apache/PHP/MySQL server.
Instead, create an Amazon CloudFront distribution. Go to your DNS setting and create a CNAME record (e.g. cdn.domain.com) and point it at your distribution url. Enter the cdn.domain.com in the CNAME field in the distribution detail screen. Set the origin to custom (DNS), and enter www.domain.com. Wait a few minutes for the distribution to be set up, and however long it takes the DNS setting to propogate. Then change all paths for static files (CSS, JS, images, etc.) to cdn.domain.com instead of www.
Now, in that scenario above, when the page gets served by the browser, all requests for stylesheets, javascript, and those dozen images hit Amazon's servers around the world. The user gets routed to the closest one to them. If Amazon doesn't have your image, they fetch it from your server and cache it. But after that, future requests get served directly from their servers, not yours. So if 1000 people from a certain city visit your site, instead of 20,000 requests hitting your server (assuming one page has 20 requests for images, css, js), you just get 1020 requests (the first one was a cache miss, the rest were cache hits).
- Extremely commoditized, people shop around for hosting providers based on price and included features, so you better have a good offering
- Your service must be top notch and you need to be available to fix things pretty much instantly
- Reliability when reselling services is not in your control, so... good luck with that
Best of luck!
Cheers!