Sashman is correct. It really depends on the level of redudancy you want.
I had previously setup a horizontally and vertically scalable infra on AWS, where the DB was replicated across zones in a single DC, same with EC2 instances.
The main choke point I ran into was that I had to create images every time I wanted to update the code, rolling out a new AMI across the images. It wasn't ideal, but it did allow me to serve up the same code to all front end servers.
It's absolutely doable, takes time to configure and setup.
At the end of the day, it's a lot to maintain and really depends on the business needs, or if it's for fun to learn, etc.