Keeping WordPress up was a black hole of my time and talent, despite having shipped applications with substantially higher performance requirements than "Serve 20,000 visitors mostly static content over an eight hour period." This is totally orthogonal to programming skill or creating things that solve problems for customers.
The optimizations you need to make are fiddly black magic ("Your blog goes down too often? #1 culprit: a performance optimization called KeepAlive", "How many worker processes fit in 1 GB of RAM if each take ~20 MB on average? Did you answer 48? Crashes a day later. Did you answer 36? Crashes a week later. Did you answer 24? Crashes sporadically. Did you answer 20? Hasn't crashed... yet." "Blog still going down? OK, let's break with every quickstart guide on the Internet, throw out all the work you did for Apache, and switch you to Nginx. Now we'll have new failure modes!", "You incompetent nincompoop! You just need to add caching. Oh, you already cache everything? The KeepAlive issue can kill a blog hosting a simple static .txt file? Hmm, good point... put Varnish in front of it! A nice, simple solution! And if that doesn't work add cache to your caching so you've got caches for your caches!").
There's no point at which WordPress announces "OK, I'm ready!" -- you just pick your optimizations in advance then discover new requests-per-minute numbers or access patterns or what have you which cause it to degrade or bloom into a timed-out fireball of death.
Now I write a check every month for $200 to my hosting provider. Best money I ever spent, because this has lead to a 100% decrease in me having to wake up at 3 AM in the morning because Jimmy Wales decided to tweet a link to my blog.
Keeping WordPress up was a black hole of my time and talent, despite having shipped applications with substantially higher performance requirements than "Serve 20,000 visitors mostly static content over an eight hour period." This is totally orthogonal to programming skill or creating things that solve problems for customers.
Good point but if you go from being an employee to an entrepreneur you'll need to pick up a lot orthoganal skillsets beyond programming: sys admin'ing, basic accounting, copywriting, etc...
I recall you tweeted a few weeks back, the gist of it being "if all you want to do is program you're better off being an employee".
That being said, congrats to the OP on taking the plunge, when I checked the site was back up and and it looks like you've got a solid concept. Best of luck to you.
Yes on learning new skills, but the nuance is that you quickly identify which of those are not
core to your business and offload/delegate them as soon as possible.
Patrick is speaking of his client WPEngine. I've used them as well at work (likely the same $199/month Business plan for multiple site hosting) and they're pretty good, though according to our Nagios monitoring a site hosted there has had a total of 43 minutes of outages for August which is still 99.9% reliability. WPEngine hosts on Linode and in my experience their magic bullet is, well... no magic bullet. It's still way way better than doing it yourself though and the price you pay for peace of mind is worth it if your site is connected to a revenue-generating activity.
If you want really serious uptime, use something like Jekyll and generate a static site which you host on S3/CloudFront and regenrate only as content changes. You obviously lose some flexibility, but an S3-hosted site is relatively inexpensive for the bandwidth (and do your own math to see if it's worth it for you on the time/money scale) and will handle any load you can throw at it. You can even maintain a crappy unoptimized WordPress installation as the origin server and serve everything up statically from Amazon CloudFront with no load impact to your site.
Just throwing this out here for people who don't want to deal with the madness that is WordPress: there are two very nice, full-featured blogging apps for Django that I've been recommending to people left and right.
The second one is called Zinnia and is available from http://django-blog-zinnia.com. Unlike Mezzanine, which also has some CMS-related features, Zinnia is just a blog engine. However, Zinna works great with django-cms.
WordPress is a resource hog. I ditched it a long time ago and I couldn't be happier.
The optimizations you need to make are fiddly black magic ("Your blog goes down too often? #1 culprit: a performance optimization called KeepAlive", "How many worker processes fit in 1 GB of RAM if each take ~20 MB on average? Did you answer 48? Crashes a day later. Did you answer 36? Crashes a week later. Did you answer 24? Crashes sporadically. Did you answer 20? Hasn't crashed... yet." "Blog still going down? OK, let's break with every quickstart guide on the Internet, throw out all the work you did for Apache, and switch you to Nginx. Now we'll have new failure modes!", "You incompetent nincompoop! You just need to add caching. Oh, you already cache everything? The KeepAlive issue can kill a blog hosting a simple static .txt file? Hmm, good point... put Varnish in front of it! A nice, simple solution! And if that doesn't work add cache to your caching so you've got caches for your caches!").
There's no point at which WordPress announces "OK, I'm ready!" -- you just pick your optimizations in advance then discover new requests-per-minute numbers or access patterns or what have you which cause it to degrade or bloom into a timed-out fireball of death.
Now I write a check every month for $200 to my hosting provider. Best money I ever spent, because this has lead to a 100% decrease in me having to wake up at 3 AM in the morning because Jimmy Wales decided to tweet a link to my blog.