Discuss the trade-offs you consider when deciding between synchronous and asynchronous communication in a distributed system.