Distributed Applications Engineering by George Fernandez & Inji Wijegunaratne