When would you choose microservices over a monolith, and how would you manage inter-service communication?