We came out of the last decade of Internet growth with a set of tools and techniques for scaling online services. The conventional wisdom would have you believe that those practices still apply cleanly in 2012, but the conventional wisdom is wrong.
Major advances in hardware over the last few years demand a new approach in software. Not only are last decade's approaches obsoleted, but a lot of the software we all depend on is starting to show its age. Some of the most fundamental paradigms in use today are simply not practical in a world where computers have hundreds or thousands of cores in them.
You might be surprised, for example, to know how many global mutexes exist in software you rely on, how deep in the stack they run, and what kinds of things happen while they're held. The JVM holds a global mutex during some phases of garbage collection. Maybe we can afford to pause 4 cores, but what happens when 4 becomes 40 or 400 or more?
Also, horizontal scalability is now a checkbox every database seems keen to tick, but what's the real cost of using such a technology? As machines get denser, could it be that vertical scaling is again an attractive option?
In this talk, I'll discuss what it means to build and operate online services in 2012, and how we might better approach our problems with architectures that are more well suited to our current reality and the rapidly approaching future.