Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing