I read a great article about this yesterday but now can't find it. I thought it was on Wonkblog...I'll keep looking, but here's the summary:
The healthcare.gov website actually works fine (#slatepitch). Even at the peak of traffic, you could just go to it and surf around and do research with zero problems with server load. (I can actually independently verify this!) The problems only start appearing when you try to actually use the marketplace.
The designers of the marketplace used a pretty common industry pattern where they separated logging in and account creation out onto another server which passes you through to the main server. (This is a pretty standard approach that's used by most MMOs, for example.) It's the login server (which was outsourced to a private contractor) that's crashing under load.
Unfortunately, the federal website is designed to require you to have an account to use basically any aspects of the marketplace. This is not necessarily insane -- since there's so much private information being thrown around, it's potentially a security win to make sure all your secure information is only input and carried around in one place, with the rest of the app just checking in with it. On the other hand, this strategy probably increases the load on the login server, and if that goes down, none of the rest of the site is usable.
The other problem, which should be obvious from looking at today's complaint pattern, is that the login server didn't fail gracefully -- it apparently corrupted a bunch of accounts it was creating, which is why some people who created their account on Oct 1 now can't get past the first few screens while other people are creating accounts and using the website now. This is obviously a huge design fuckup, and, frankly, one I feel like you really shouldn't be making -- I kind of assumed atomic database updates would be baked into whatever solution they used, but obviously not. This is a big part of the ongoing problem, because once you've munged the database, there's not necessarily a really obvious way to automatically clean it up or handle the bad data.