Architecting distributed, high-performance systems

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.

Experience level: 
Advanced
Session Time Slot(s): 
Time: 
Sep 13 2014 - 11:00am-Sep 13 2014 - 11:50am
Room: 
162-75
Allowed Types: 
Session
Session Track: 

Session Tracks (NERDSummit 2014)

Sessions Topics: 
Speaker Bio(s): 
Aaron Coburn is a SysAdmin / Programmer at Amherst College. He is particularly fond of cloud computing and distributed, high-performance systems. He is an active committer to a cloud computing system from the Apache Software Foundation and involved in a number of library-related linked data initiatives.