Doctor Oz

  • user warning: Got error 28 from storage engine query: SELECT node.nid AS nid, node_revisions.body AS node_revisions_body, node_revisions.format AS node_revisions_format, node.title AS node_title, RAND() AS _random FROM node node LEFT JOIN node_revisions node_revisions ON node.vid = node_revisions.vid WHERE (node.type in ('quote')) AND (node.status <> 0 OR (node.uid = 0 AND 0 <> 0) OR 0 = 1) ORDER BY _random ASC LIMIT 0, 1 in /var/www/jg-soft.com/modules/acquia/views/includes/view.inc on line 755.
  • user warning: Got error 28 from storage engine query: SELECT node.nid AS nid, node_data_field_images.field_images_fid AS node_data_field_images_field_images_fid, node_data_field_images.field_images_list AS node_data_field_images_field_images_list, node_data_field_images.field_images_data AS node_data_field_images_field_images_data, node_data_field_images.delta AS node_data_field_images_delta, node.type AS node_type, node.vid AS node_vid, RAND() AS _random FROM node node LEFT JOIN content_field_images node_data_field_images ON node.vid = node_data_field_images.vid INNER JOIN term_node term_node ON node.vid = term_node.vid LEFT JOIN term_node term_node2 ON node.vid = term_node2.vid AND term_node2.tid = 41 WHERE (node.status <> 0 OR (node.uid = 0 AND 0 <> 0) OR 0 = 1) AND (node.type not in ('project')) AND (node_data_field_images.field_images_list <> 0) AND (term_node.tid = 13) AND (term_node2.tid IS NULL) ORDER BY _random ASC LIMIT 0, 1 in /var/www/jg-soft.com/modules/acquia/views/includes/view.inc on line 755.
http://doctoroz.com
January 31, 2010

This is the new website for the Doctor Oz show. The website doesn't look like much really, a video blog, nothing too crazy. However, this was the hardest project I've ever worked on.Doctor Oz has the Oprah effect and is the most trafficked site I've been able to be a part of. It gets about 200 requests per second during peak times and 15,000 unique users per hour at times. What was challenging about this site was not so much writing code, but getting the app to scale within a severly restricted hosting environment.

The development of the site was not incredibly challenging. It has a nice theme that was a bit challenging to get working properly in IE6. There are some nice, ajaxy widgets here and there that were pretty difficult. Especially the video playlist which pre-caches items and then fetches new items via ajaxy pre-emptively so that navigation isn't slow because of server latency. That's the theory anyway. Coercing drupal to look and act nice for user profiles is always a chore, but overall this site is easily the best drupal site I've built from a usability + look and feel standpoint.

The real challenge came on opening day when the site was launched and the show started. The traffic spiked like nothing I'd ever seen to that point. The servers choked under the weight of a seemingly infinite number of 404s. We had to actually remove drupal from the equation and run strictly on boost cached static html. We had to do that for about a week we got some loaner servers. It was hell from that point forward. Getting a drupal site to scale is not easy. But, using pretty standard methods with a little bit of creativity, we got the sucker to scale, even with user logins!

This project has been such a learning experience, fraught with difficulty, but ultimately a success and a freakin great learning experience. Thanks Doc!

Nothing is without its issues, but this is pretty close to perfect.

Pros:

  • Very good design and designers.
  • High visibility site with a lot of traffic.
  • Showcase of everything I know how to do in web development, including best practices drupal development, fancy javascript, fancy design and html, and scale scale scalability!

Cons:

  • The server environment was extremely limited and made everything we did a great, time consuming pain.
  • The failures early on were so demoralizing it made everyone wanna quit. This could be a pro, actually, because we didn't quit, we learned.

Screenshots