Sistemas Distribuídos Tolerantes a Falhas por Design