Using AWS you can go quite far with a monolithic architecture running on Elastic Beanstalk, with RDS/Postgres and DynamoDB. This is how I built nderground. I built nderground to scale to hundreds of thousands of users or perhaps even low millions.
nderground is built using the Grails framework. Grails, like Ruby on Rails and Django builts monolithic applications. In the case of Grails, it builds a single Java web archive (war) file that is deployed on Elastic Beanstalk. Elastic Beanstalk has a load balancer and can scale web servers up and down as needed.
Given the complexity of a distributed application and how far you can go with a monolithic application, I think that it is unwise to deploy microservices before you need to.
This said, I’ve been tempted to deploy some of nderground’s image processing on AWS Lambda. But so far I have resisted the temptation.