SOA in Practice: The Art of Distributed System Design (Theory in Practice)