Below is the the traditional way of how to build a Scaling out software system in software platforms.
Start with DNS pooling , route request to reverse proxy server(cluster) , come to Web Server , thread pooling (own RPC mechanism ) ,then go to DB sharding .
The Idea is to add abstraction layer to parallel cpu task (or data request) processing in separate environment .
The Challenges here
coding . Asynchronous . code need more attention(async processing,resource lock, exception handling, readability) than coding in “common project”.
maintenance . continuously monitoring every node of PC in every layer of cluster is tedious job . error notification has to be setup properly.
azure is there to help you ! you do not have to build everything . based on the business ,3 options you can start with :