Granularity and Communication in Microservices Architectures