When a component of your organization goes from medium to large in its size or volume, there are a series of performance problems that must be addressed. Sharding the cluster of MySQL databases is almost always the proper solution, but there are many different ways of sharding. This tutorial will go over some of them with actual working examples from high-volume shops in the past.
Tim Ellis presided over some of the larger MySQL installations during the 2000-2011 timeframe at such places as Digg, Mozilla, Riot Games (League of Legends), and StumbleUpon. Running large scaled database installations using Opsdev methodologies was his specialty. In the last 5 years, he has begun specialising in building hybrid database clusters, using MySQL for relational data and various distributed databases (often called "NoSQL") to store key/value or sparse hash map data. He has always been a strong proponent of using the right tool for the job, which can sometimes be a surprising and radical notion.