Michael Bevilacqua-Linn Principal Software Engineer, Comcast
Michael Bevilacqua-Linn has been programming computers ever since he dragged an Apple IIGS—that his parents got for opening a bank account—into his fifth-grade class to explain loops and variables to a bunch of pre-teenagers. He currently works for Comcast, where he builds distributed systems that power infrastructure for their next generation services. In his spare time he likes rock climbing and good beer, though not at the same time.
Big Data in the Small: Why N Tier Architectures Are an Antipattern
Redesigning the service layer that powers xfinity.comcast.net; sites that handle quite a bit of traffic. We're coupling a set of hypermedia APIs (IE: APIS that are *actually* RESTful, including HATEOS) using HTML5 Microdata with an in-memory data store.
The hypermedia API/Microdata combo gives us an API that's friendly for both programmatic and human clients. You can surf it in a browser and do anything a programmatic client can do. It also gives us a certain amount of resilience to server side changes. As related bits of data are connected by links, the server can choose to return a particular piece of data in a given document, or just provide a link to it.
The in-memory data store eliminates a whole host of failure scenarios, since our core data set fits in memory, we can simply replicate it across a cluster of servers and serve requests out of main memory. This lets us get rid of the bimodal distribution of response times that often comes with a tiered service layer and caching, and allows us to easily scale the API nodes horizontally.