Compartilhar via


Implementando um sistema distribuído

Uma maneira de implementar o software em um sistema distribuído é usar o suporte bruto à rede. Essa abordagem inclui soquetes, pipes nomeados ou POSTs HTTP, GETs e assim por diante. Todos esses modelos forçam o desenvolvedor a usar primitivos de programação de baixo nível, de uma forma ou de outra, que forçam o desenvolvedor a lidar com a NDR (representação de dados de rede), empacotamento de dados, gerenciamento de tráfego de rede e condições de falha, proteção e criptografia de integridade de dados e assim por diante.

O RPC oferece um modelo de programação em que o desenvolvedor retém o controle granular da interação de rede entre o cliente e o servidor por meio de uma API avançada, ao mesmo tempo em que salva os desenvolvedores dos detalhes e encargos que um sistema distribuído tende a introduzir.

Por exemplo, considere a carga associada a várias abordagens para proteger a integridade e a privacidade das trocas de mensagens em um sistema distribuído. Ao considerar a segurança de rede para trocas de pacotes, algumas proteções são mais fracas, algumas mais fortes. Não há segurança de rede verdadeira, apenas vários mecanismos de segurança baseados em pacotes; segurança identificando o chamador (que tende a ser fraco também, uma vez que o conteúdo do pacote geralmente pode ser alterado em trânsito), segurança protegendo a integridade do pacote sem proteger sua privacidade (várias assinaturas e hashes) e segurança protegendo a privacidade da troca de mensagens (vários mecanismos de criptografia).

Outra carga de implementar um sistema distribuído seguro são os algoritmos necessários para implementar primitivos de segurança, como criptografia, assinatura, autenticação e assim por diante. Um desenvolvedor pode implementar esses algoritmos, mas fazer isso é difícil, propenso a erros e até mesmo arriscado, já que os algoritmos resultantes geralmente têm falhas sutis de segurança. Como alternativa, um desenvolvedor pode usar um provedor de segurança disponível para implementar a proteção para as interações de rede em um sistema distribuído.

Usando o RPC, essas duas cargas são resolvidas com muita facilidade. Um desenvolvedor simplesmente precisa informar ao RPC qual pacote de segurança usar e qual proteção de segurança deve ser aplicada à troca de mensagens (em termos de autenticação, criptografia, autenticação mútua, acompanhamento de identidade do chamador e assim por diante). O RPC cuida de todos os detalhes nos bastidores de maneira eficiente, mas fornece ao desenvolvedor controle total sobre exatamente como os dados serão protegidos.