Sunday, December 16, 2007

Babes in userland

The database service rolled out by Amazon last week will prove to be a clunker, despite all the praise it's received. It throws out three decades of experience with SQL and relational databases and demands developers learn more syntax to get less accomplished. It's just cover fire, and pretty intense cover fire at that, demanding a rewrite of the core of your Web application, the model layer.

I don't think Amazon is ill-intentioned, I just think the company made the mistake of thinking a system that works well for Amazon will be useful for the rest of us. The success of the ingenious S3 and EC2 platforms left the company with a surplus of hubris, and God bless them for launching a failure in a market Google and Microsoft don't even know exists. You don't build a market without some stumbles, and Amazon's success in assembling an Internet operating system is stellar so far.

People used to say Google was building an Internet Operating System, but as it turns out they were building Office for the Web. Which is fine. But Amazon is doing something much more empowering, and in the end I think they will have created more value outside their walls than Google ever did, even though they probably won't reap Google-scale profits.

Amazon's success is no small feat. Microsoft has been talking about Web services for years but in the end the two definitions most people heard were "a single sign-on system owned by Microsoft" and "a complicated message interchange system designed to sell copies of Windows Server." Google has crippled virtually every API they have launched. Apple and Yahoo have been focused on a Hollywood vision of the Net (both companies were run by studio chiefs for most of this decade) and are effectively out of this particular business entirely, by choice.

As it turns out, Amazon is not really in the business by choice either. It is in it by necessity. Yes, Amazon surely put some real work into turning S3 and EC2 from internal tools into public utilities. But it built those tools because it needed them -- reliable systems built on easy-to-grok open standards, capable of scaling quickly, just the sort of thing for a company as large and busy as Amazon. As it turns out, once you've built that sort of tool, you're more than halfway toward building something for the entire world.

Again: Amazon built some Web services because it needed them, then realized the rest of us would need them.

Amazon is a company that sells books and a bajillion other things over the Internet. That's what it does. Retail. It is not a software company, not even today, despite EC2 and S3, despite the fact that it has had kick-ass coders since its launched, despite what it may yet become.

Amazon is a user selling the software it made for itself.

This is important. This is new.

Microsoft and Google have always dog-fooded their own software, but that's the exception that proves the rule, which is this: Software companies make software to solve other peoples' problems.

And software companies never understand the problems they are solving as well as they understand the problem of making software.

So now their customers are taking matters into their own hands and building their own software.

This interests me personally because the same thing is happening to my industry, the news media. A reporter will never understand a beat as well as his sources and readers. A chump journalist at a tech magazine or business journal will never be able to write about software as well as Joel Spolsky or Philip Greenspun, who actually make software and actually run businesses. My only consolation is that most programmers -- and most people in any domain -- do not have half the writing talent of a Spolsky or Greenspun, a Graham or Shirky, a Yegge or Wall.

And so it is with software. Most software buyers are utterly lost at the sight of a command line, much less a compilation error.

But we're starting to see some cool users swimming against the tide. Call them babes in userland. An Amazon here. An Adrian Holovaty there. And, back in ancient Web history, a now-defunct online magazine launching the software that served you this page.

Then there are the chumps like me, learning scripting languages and server administration in my spare time, building a random collection of tools, and fervently hoping that Clary Shirky was right.


Barry Kelly said...

Ryan, I feel you're not being clear what exactly your objection is to Amazon's service. Saying that they're throwing out DBMS experience doesn't cut it.

It's well known that DBMSes don't scale in the large while preserving all the ACID of a DBMS - something's got to give. You just can't get atomicity, consistency and distribution (redundancy, i.e. making it highly available) simultaneously. It's like a law of physics. Amazon is releasing an API to their take on what's required, and they have more experience than almost anyone in this field.

A lot of good technical info here:

Ryan said...

S3 and EC2 solved real problems and integrated nicely with existing systems.

Where is the pain SimpleDB will alleviate? I don't think there are nearly enough developers saying "I have hit a scaling barrier using MySQL and memcached and need something much faster, even if it means rewriting -- and changing certain fundamental assumptions about the functionality of -- my model layer."

EC2 provided a type of scaling that perhaps the top 1 percent (or less) of websites need, and it's still a very real market. SimpleDB is one possible solution for perhaps the top one percent of *that* market. Small group. And unlike S3 and EC2, it's a solution that requires people to bake a new standard deep inside their apps.

Perhaps I'll post more about this at a later time, for now you can take or leave my off the cuff opinion, and feel free to leave it ;->