Hacker News new | ask | show | jobs
by davedx 1018 days ago
I still remember when I worked at Serif and we needed web hosting for our new social media website that would be integrated into our scrapbooking desktop software. There were a lot of shiny new technologies around at the time (as there always are). One of them was Microsoft Silverlight, and we implemented its "Deep Zoom" into the website so our users could easily zoom around in the scrapbooks that got published and enjoy the details.

Another was AWS. I think EC2 had just launched, and we happened to be re-evaluating where we hosted our web properties, because we thought the social media website would get a bit more traffic than our older "web components" offering. It was pretty exciting that we could just click a button and spin up an instance in the US, or in Ireland, or Amsterdam. And if the instance died, just click a button again to spin up another one.

As it is today, so it was then: the simple UI hid quite some complexity. There were the different kinds of storage to learn about, and which ones were persistent, and which weren't. If I remember rightly those early EC2 instances weren't as reliable as they seem to be today either, we actually lost one or two completely and had to rebuild them, so we snapshotted a lot.

There was no infrastructure as code or DevOps, but we did implement our own highly available cluster. One of the engineers I worked with actually wrote it from scratch, in C++ (we were primarily a C++ company). It would monitor the databases in the different EC2 instances, and ensure the database cluster stayed alive.

We didn't really know what we were doing, what was smart, there weren't any cloud architects around back then. But the technology worked really well. Once we got past the initial hiccups, we built a pretty active internet community. The website itself was built in PHP with MySQL, and used XSLT to transform XML data (that in turn was built from relational data from SQL) to generate the HTML. There wasn't a great deal of JavaScript, just some jQuery (another technology I just randomly stumbled on while working on this project that also changed quite a few things). Progressive enhancement, and server-side rendering.

I'm trying to remember how we deployed it. I think we used FileZilla, and then the C++ cluster software would clone the uploaded files to the other EC2 instances in the other AZ's.

I can't remember how much peak traffic we had, but in retrospect, we probably didn't need a server in 3 different AZ's. But damn, it was fun to work on, and it gave me my first introduction to AWS.

Good times.

1 comments

I remember those days, there was no database layer at AWS so we used instances with Elastic Block store for durability.
Yeah, that was it! It was so confusing initially trying to figure out what should go in the EC2 instances' local disk storage, what should go into EBS, and what should go into S3. It all seems so obvious now of course...
It was also confusing to the users. I remember seeing a post every other week on HN about a service going down or losing data because they accidentally used the ephemeral devices for their databases. Haven't seen one of those in ages.
Yup, and for performance, you would RAID Stripe a bunch of EBS volumes together. But sometimes you'd get a volume on a noisy neighbor, and its performance would be terrible.

Where I worked at the time, I wrote some Chef tooling that would hdperf the volumes it provisioned, and if some weren't any good it would provision more until it got 8 good ones. Only then would it RAID them together, then deprovision the bad ones.

Now they have provisioned iops, and I haven't seen a slow EBS volume in a decade.