Running a simple web application on a single server is easy. But what if you really need to scale? What if you need fault tolerance? How can you eliminate single points of failure? And how can you do this while retaining your own sanity?
This talk will discuss high availability, concurrency, fault tolerance and other necessary components of "web scale" applications. There will be a big emphasis on loosely coupled systems and asynchronous communication between components, along with the software that makes this easier for both the developer and sysadmin.
This talk will discuss web server architecture (spdy, nginx, apache mpm_worker, mpm_prefork, mod_fcgid), development languages designed for high concurrency (node.js, scala, erlang), high performance database systems from de-normalizing and sharding mysql to using fully distributed databases such as MongoDB or Riak. And finally, there will be a tour through application messaging architectures and some of the tools from the simple (resque) to the more full-featured (ActiveMQ, RabbitMQ, Camel).
Some understanding of networking protocols (especially HTTP) would be helpful, as would some background in the functional programming paradigm (especially the Map-Reduce model). This talk will also discuss how some of these techniques can be applied to existing applications, such as WordPress or Drupal.