As a developer of an application there really isn't a problem better than finding that you have to scale up the application and the database that supports it to handle the increased load. The main bottleneck to most expansion is the database server and in many modern environments that replication is based around MySQL.
Application servers are easy to add on to the front-end of your environment. Ultimately the information needs to be created, updated and read from the database. And for most environments, you want a single, canonical, version of that data to exist - i.e. one database server that holds all of the information and can always be relied upon to give the right, single, version of the data. From a user perspective losing their shopping basket or blog post is unacceptable.
Replication is generally the answer, but replication with MySQL is complicated, even at its simplest level, getting a simple replication from master to slave up and running is complicated. I'm not going to go through that here, partially because I wrote the replication documentation for MySQL; I know how complex it is. But replication only helps by distributing the data around multiple machines. You need to adjust your application to be able to work with that newly distributed architecture.
Native replication is difficult, so let's look at an alternative. Continuent Tungsten 2.0 uses the open source Tungsten Replicator to provide the core replication functionality. Click here for the full article by MC Brown!