Concurrency is fundamentally at the base of scaling. How do you manage to do more things at once? Well, you do them at the same time. This opens a huge can of worms though, because every different approach to how you do this has disadvantages, weaknesses, problems and tradeoffs. I will go through some approaches to concurrency that I've come across, speak of common building blocks and issues that these approaches all share. I'll be mentioning things like the c10k problem, threads, actors, evented programming, interacting with IO, futures/promises, coroutines and more. Far from being a world-renowned expert on the matter, I will attempt to dissect these patterns and styles because I want to understand why they "scale," problems you can run across, and when (pun intended!) it can drive you crazy. Hopefully by the end you will find it somewhat easier to understand and grasp, and have a newly driven passion to dig in further.
Shai Rosenfeld is always excited when there is something new to learn, and hence has seemed to have found his fit doing technology. He started out playing with Ruby and Rails over 8 years ago. After helping scale and support some of the largest Ruby production systems around, he moved on to engineering in one of the leading Platform as a Services (PaaS) companies. Shai enjoys solving problems, facing new challenges and playing jazz standards when he's not finding out something new on his laptop. He is on twitter at https://twitter.com/shaiguitar