This post originated from an RSS feed registered with Java Buzz
by Brian McCallister.
Original Post: Protocols, not Products
Feed Title: Waste of Time
Feed URL: http://kasparov.skife.org/blog/index.rss
Feed Description: A simple waste of time and weblog experiment
Scaling is the new theme of my programmering life it seems. The good part: it really means scaling, not performance. The bad part: things actually need to scale, performing really well doesn't let you squeak by with session affinity and half-assed replication. The biggest thing I have noticed, in myself, is a move from thinking about how to implement services to how to ensure that interactions between them don't become the bottleneck.
Sometimes this is a question of protocols in the IETF sense: HTTP, SMTP, DNS, XMPP, etc. Most of the IETF protocols are pretty damned good, as it turns out. Shocking huh? Many other times it is a matter of protocols in the traditional sense: what does the interaction need to look like. How many messages need to be sent, how quickly, how reliably? Who cares what is inside the box -- if Martin, Diego, and Tom cannot drag me somewhere close to an optimal solution, something is really wrong. What is inside a server is not the problem.
The problem is fun things like tolerating (or failing quickly in the face of) network partitions, managing work scheduling fairly across an arbitrary number of machines (or not, unfair scheduling frequently works better), avoiding cascading failures when one element goes down (and better yet, still working for the most part), knowing what is going on in the live system beyond a conceptual level, working out what is cacheable where, how, how long, how many, and so on. We've all dealt with these to some degree, but when they really become the key point it rocks!
The protocols between services are where the fun is, I had no idea! The turning point was probably the day "Enterprise" in a product description went from meaning "consultants required" to "probably cannot handle the load." Totally unfair to a lot of good products which have had Enterprise slapped on them by marketing, but those are sadly in the minority. When you say "we need to double the number of servers" then, minutes later, you have doubled the number of servers and things are copacetic, life is good.