Cloud Computing and Distributed Architectures