Design patterns from biology for distributed computing