I grew up on floppy disks and BASIC programming on a Tandy Color Computer III. Years later, I learned how critically important it is to optimize back-end performance in the context of running a fairly large social network. Per comScore in 2009, we were the second fastest growing social network, moving from one million visitors per month to seven million six months later. Traditionally system optimization started with the back-end; how long did it take to fetch results and display them from the central database, inverted index or other data store? Even Google proliferated this POV with their seminal paper, “The Anatomy of a Large Scale Hypertextual Search Engine.”
Years later, thanks to people like Steve Souders, I’m sure the Google crew realized that while starting with the back-end can yield some gains, in modern internet architecture, eighty percent of the latency people experience is a result of poorly executed front end engineering practices. This movement has resulted in numerous advances such as the httparchive (his pet project), Pagespeed from Google, Yslow from Yahoo and countless other tools. Apdex scores come to mind as something which may have resulted as an outcome of Steve’s genius but I don’t know the history.
Why should the performance team focus on the front end, rather than the back-end?
Even the very best modern browsers have limits in how many objects they download in parallel. For IE 8, it’s only four objects. For later versions as well as Chrome, Safari, etc, the browser can download six or more objects in parallel. This still leaves a massive gap in performance, as anything over the baseline will require an extra HTTP fetch. From reading a bit about network topology, that means anything incremental will take 150 miliseconds per resource. Wow.
In other words, your application design is messing with my need for speed, unless the team is enlightened as to the value of speed to the business. Lucky for me, six months and a few executive presentations later, the business prioritized speed as a KPI. While my roots are in back-end performance optimization, in modern terms, it’s all about the front end. When you think about it, doesn’t it make sense? Any given social interaction will be based on the front end as well.