When building an application/system that is to be run in the cloud (e.g., AWS),
is it recommended to always make single-purpose instances?

For example, should I have two instances running MySQL (master+slave), and then two web-server instances, instead of combining web+MySQL in one (possible larger) instance?

Whats the pros and cons, except separation of concerns?