How would you break down a monolithic application into scalable services and manage inter-service communication?