26.04.2015 Views

Founders at Work.pdf

Founders at Work.pdf

Founders at Work.pdf

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Joshua Schachter 227<br />

But you need to pay <strong>at</strong>tention to the important stuff. Scaling was important<br />

and core to the product, but dealing with the network, getting the hardware<br />

racked, building machines, ordering stuff, getting pricing out of Dell, you name<br />

it. Th<strong>at</strong> was a lot of work th<strong>at</strong> was not useful.<br />

Livingston: Outside of the scaling requirements, can you remember any<br />

technical problems th<strong>at</strong> you guys solved?<br />

Schachter: Tagging basically was the thing. And then there’s a gagillion little<br />

improvements in marketing things. We actually thought about the product<br />

always with an eye toward innov<strong>at</strong>ion. Everything we did we questioned—and I<br />

think we didn’t even go far enough. Wh<strong>at</strong>ever it is, question every single aspect<br />

of conventional wisdom. “Is th<strong>at</strong> the right way to do it or can we break th<strong>at</strong> and<br />

make it better?”<br />

Th<strong>at</strong>’s also dangerous, because, if you are doing a lot of paradigm innov<strong>at</strong>ion,<br />

call it—which is not a good word—but if you are breaking boundaries<br />

elsewhere, maybe you need to be very within boundaries on other fronts.<br />

Livingston: Do you remember a time when you were worried about something?<br />

Schachter: Site’s down. Site’s slow. Table crash—MySQL corrupted a table.<br />

Th<strong>at</strong> happened all the time. A gre<strong>at</strong> deal of wh<strong>at</strong> we did was putting out fires.<br />

We didn’t have a lot of process management in place, which probably hurt us a<br />

gre<strong>at</strong> deal.<br />

A week after the acquisition, the power of the d<strong>at</strong>a center dropped and corrupted<br />

every single machine. We were down for like 48 hours. Th<strong>at</strong> was horrific.<br />

The power bounced in the network; the machines didn’t come back up<br />

because they weren’t configured quite properly. We weren’t careful about th<strong>at</strong>.<br />

In general, assume th<strong>at</strong> wh<strong>at</strong>ever you are doing is going to go wrong. How<br />

can you make it so th<strong>at</strong> it will go faster when it does go wrong? Because it will.<br />

For example, the rebuild script takes 24 hours, but th<strong>at</strong>’s not a big deal because<br />

this part of the system isn’t live yet. But when it is live and it takes 24 hours to<br />

redo, th<strong>at</strong>’s a big deal. So fix it. Make it work in 2 or wh<strong>at</strong>ever. There’s a lot of<br />

stuff th<strong>at</strong> you can’t get around due to SQL, like you can’t change the d<strong>at</strong>abase<br />

without bringing the site down.<br />

Livingston: Wh<strong>at</strong> kind of technology inspired you?<br />

Schachter: Inspired? We built in Perl, MySQL, Apache. Very standard LAMP<br />

stack kind of stuff. Th<strong>at</strong> was the standard mechanism for everything.<br />

Livingston: Would you do anything differently if you could?<br />

Schachter: Knowing wh<strong>at</strong> I know now, I would have designed the back-end<br />

architecture differently, and th<strong>at</strong> would have saved a lot of work now. Scaling<br />

past one machine, one d<strong>at</strong>abase, is very challenging, even with replic<strong>at</strong>ion. The<br />

tools th<strong>at</strong> are there are not quite right.<br />

For example, when you add things to a table and it numbers them, th<strong>at</strong><br />

means you can’t have a second machine also adding to them because the numbers<br />

will collide. So wh<strong>at</strong> do you do? You have to come up with some

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!