Live data from Hacker News

Could Better Testing Practices Have Prevented the Healthcare.gov Defects?

blog.smartbear.com

11–20 of 54 posts

Re: Could Better Testing Practices Have Prevented the Healthcare.gov Defects?

#12
I'm surprised they don't have a separate system for their own staff to use when doing signups over the phone and in person. From all the articles it sounds like staff are going through the main healthcare.gov to attempt signups.

The biggest improvement they could make in the short term is setting up a light weight version so you can just enter the needed information to view your plans/options prior to the signup/verification process. Then once you've decided on a plan go into the signup process.

A lot of traffic is probably just people comparing prices, deductibles, etc putting unnecessary strain on the signup system.

It seems odd that you can't even view the log in page when you click log in on the home page.

Definitely looking forward to details about the site, backend, db, hosting, traffic, etc . . . once everything shakes out.

Re: Could Better Testing Practices Have Prevented the Healthcare.gov Defects?

#13
I've dealt with having to scale a site to millions of pageviews and honestly, if you've never had to deal with a traffic spike, you probably aren't going to build for the scale issues you will have.

For example, there is a lot of caching you just have to do. Tons of it. Cache as much as you can. Memcache and Varnish are your friends, use them as much as you can. Unfortunately, if Healthcare.gov was in a very write-heavy situation, they are somewhat limited in how much caching will help.

One thing they could have done that would have saved A TON of load is not require users to sign up before giving them a list of available plans. That whole part didn't need to be database driven at all. The data could have been stored in redis and they could have used javascript to filter it based on a form. That would have been ridiculously fast. They also could have prerendered all the plan list possibilities and stored those in varnish. That also would have been ridiculously fast. My guess is millions of people just wanted to check prices and eliminating the database load for those users would have probably kept things running fast and smooth.

Slow DB queries are the enemy and you don't realize how bad they are until you are at scale. Sure, it only takes a few seconds on your local machine, but multiply that times thousands of concurrent users and your DB gets swamped. If you are using an ORM, it is MUCH harder to track down where in your code that 3 way join that scans every record is happening. Ideally you'd be using straight SQL and maybe use comments to tag a query. Also tools like newrelic might help if only because many databases don't offer great visibility of performance data.

Sharding your database is something that is probably possible, and in the case of healthcare.gov, they probably could have had totally separate infrastructure on a per-state basis that would have made scaling a lot easier than putting everything on the same database. Also, put reporting and things that aren't mission critical on a slave database. The last thing you want is a reporting job bringing down the live site in the background.

Getting good hardware with fast IO is going to save a lot of developer time required to scale things. Using fast SSD's is probably the easiest win to speed up your database. Developer time costs a lot more than hardware and giving yourself cheap headroom up front gives you breathing room on launch.

Performance testing is also something worth doing, but the tricky part is until you roll out, it is hard to know exactly where the hotspots are going to be. In this case, new user signup would be the obvious place to test, so they probably should have tested up to the limits of their servers and tried to extrapolate an expected number of users and maybe increased that by 1.5x or something to have some leeway.

On a rollout where you don't know what you are getting into user wise, being on a cloud where you can scale out fast as demand requires is something worth doing. They could have saved a lot of bad press and headache by being on the cloud initially and migrating to less hardware after the initial peak died down.

There are a ton of little things like that you have to think about if you are dealing with massive scale. I don't know if the engineers building healthcare.gov had ever dealt with something like this before, but I'm sure they're learning these lessons now.

Re: Could Better Testing Practices Have Prevented the Healthcare.gov Defects?

#14
post #6

The site was designed for only 50,000 simultaneous users. http://www.usatoday.com/story/news/nation/2013/10/05/health-... Didn't that site cost millions to make? Wait, is this blog entry trying to sell their own products? This is a better round-up of stories about the website: http://www.theatlanticwire.com/politics/2013/10/obama-admini...

A bunch of other better articles on it have been posted to HN, but not upvoted enough to make the front page. I too find this surprising, this sort of highly visible large scale web app rollout failure seems like a topic HN would like. Not sure why this one finally made it, heh.

Yeah, I've figured there'd be more here about it, but it's sort of like shooting fish in a barrel at this point. Plus... it will inevitably devolve in to politics. And lastly, it's not actually working yet. We don't have any postmortem about what's actually going wrong - maybe we'll get that soon (or never?)

Re: Could Better Testing Practices Have Prevented the Healthcare.gov Defects?

#15
If anyone has seen my posts in the past, you'll know that I'm not a fan of the ACA, but disregarding that, let me be the first to say that this probably isn't the fault (or, at least not solely the fault) of those building the web frontends.

In Maryland, our exchange website is poorly designed and written, just on the frontend (I obviously can't see the backend), but at the same time, all of the frontend issues could be fixed with a clever caching scheme.

Where the real bottleneck almost certainly lies is when the system takes your user submitted data and has to post it into what is surely an old, legacy federal system so that it can verify your identity. That old legacy system may have seen upgrades in preparation for this, but probably not -- even so, there's simply no way to prepare for the onslaught of users accessing (indirectly) what was certain to have been an isolated, government-only database in the past.

Re: Could Better Testing Practices Have Prevented the Healthcare.gov Defects?

#16
post #12

I'm surprised they don't have a separate system for their own staff to use when doing signups over the phone and in person. From all the articles it sounds like staff are going through the main healthcare.gov to attempt signups. The biggest improvement they could make in the short term is setting up a light weight version so you can just enter the needed information to view your plans/options prior to the signup/veri…

> The biggest improvement they could make in the short term is setting up a light weight version so you can just enter the needed information to view your plans/options prior to the signup/verification process.

Washington's site did just that. Still blew up. For the first couple of days, just trying to get available plans didn't actually work.

There aren't that many websites out there that experience the kind of traffic levels the exchanges have. Those that do have mostly grown (if sometimes quite quickly) to those levels, not launched with them on day 1.

Competent people with prior experience scaling to these levels are (over-)employed with high compensation. They didn't work on these sites.

Re: Could Better Testing Practices Have Prevented the Healthcare.gov Defects?

#17

Sure, they could have been prevented. By spending more money. Isn't that always the answer? Creating a website that can handle, well, nearly the entire country, out of the gate, is not trivial. (Facebook etc got to scale up to that level, they didn't need to do it out of the gate). But it also can be done. How? Well, you hire real experts in doing this sort of thing. And you give them enough calendar time, and enough…

Your opinion shouldn't be high. There are talented IT people working at government contractors, but they aren't going to get put where they are needed, because the incentives for contractors are not performing the work at a top-notch level.

Gov't contracting is, in economic terms, a rent-seeking business. The best and brightest in a given contracting firm are dedicated to pursuing new work. I work for a contractor, and my fun IT projects are all proof of concept items. Stellar execution simply isn't rewarded. The gov't puts idiots in charge of things: not idiots in the sense that they aren't smart, but idiots in the sense that they have no expertise in anything. They are hired for paper qualifications (ever heard of a Project Management Professional cert? It's what they hire, and its useless), and the bright/motivated ones move on to interesting work, perhaps in other parts of the gov't, or the private sector. I built a great tool, using all open source technology for the gov't once. I built it in 3 weeks (it is now officially gov't owned software), and it replaced an $80K piece of software (commercial off the shelf) that was inadequate for the task. My reward was complaints that the security people weren't familiar with Postgres, and an immediate request to migrate to Oracle. There was no functional reason for this, but I complied after the gov't shelled out huge sums of money for Oracle license. Why? Because paper pushing idiots in the gov't are in charge of IT security, and their credentials for the job are based entirely on passing certification tests. Their entire incentivization at their job is to minimize their own workload, rather than maximize the happiness of their gov't customers.

Do you think anybody who could even guage whether proper testing was being performed or not was in charge of this project from the gov't level? Of course not. If they had, it would have been properly tested.

I'm mad as hell about this because I want the ACA to succeed. I don't think its ideal, but its vastly better than the existing system of hospitals as clinics for the uninsured hordes.

The Federal gov't has an awful hiring process, and until it is fixed, you are lucky to encounter competent and driven individuals within it. You are foolish to expect it.

Re: Could Better Testing Practices Have Prevented the Healthcare.gov Defects?

#18

I've dealt with having to scale a site to millions of pageviews and honestly, if you've never had to deal with a traffic spike, you probably aren't going to build for the scale issues you will have. For example, there is a lot of caching you just have to do. Tons of it. Cache as much as you can. Memcache and Varnish are your friends, use them as much as you can. Unfortunately, if Healthcare.gov was in a very write-he…

One thing they could have done that would have saved A TON of load is not require users to sign up before giving them a list of available plans. ... My guess is millions of people just wanted to check prices and eliminating the database load for those users would have probably kept things running fast and smooth.

That's all I wanted to do (I have employer-based coverage for now). I turned back once I realized you needed an account to see this, but assumed it was due to some policy issue or agreement with the insurers.

Re: Could Better Testing Practices Have Prevented the Healthcare.gov Defects?

#19

I've dealt with having to scale a site to millions of pageviews and honestly, if you've never had to deal with a traffic spike, you probably aren't going to build for the scale issues you will have. For example, there is a lot of caching you just have to do. Tons of it. Cache as much as you can. Memcache and Varnish are your friends, use them as much as you can. Unfortunately, if Healthcare.gov was in a very write-he…

"Slow DB queries are the enemy and you don't realize how bad they are until you are at scale. Sure, it only takes a few seconds on your local machine, but multiply that times thousands of concurrent users and your DB gets swamped. If you are using an ORM, it is MUCH harder to track down where in your code that 3 way join that scans every record is happening. Ideally you'd be using straight SQL and maybe use comments to tag a query. Also tools like newrelic might help if only because many databases don't offer great visibility of performance data."

1. Slow Query Log 2. Grep commands

Re: Could Better Testing Practices Have Prevented the Healthcare.gov Defects?

#20
Setting aside the politics, I really don't think it could have been prevented.

The specs were not exactly realistic on number of users at a time. Heck, even Apple still gets slammed and they know its coming.

Plus, the experience just isn't in the DC contracting community. They can do websites, but not high availability transactional. If we were talking back-ends, then yes they have high transaction experience, but not with websites.

I will be expecting second (third?) day stories about bad data problems and failed transactions. This won't be a simple thing.

Post reply on HN