
Uma Introdução à Computação Moderna
Não há muitas décadas desde o surgimento das redes como as conhecemos. Os meados dos anos 1980 trouxeram duas importantíssimas ferramentas para que a computação pudesse evoluir de maneira tão acentuada: o desenvolvimento de poderosos microprocessadores, que inicialmente eram máquinas de 8 bits mas logo evoluíram para 16, 32 e 64; e a proliferação de LANs - Local-area Networks - que permitiram a comunicação entre centenas de máquinas de um mesmo prédio em apenas alguns microssegundos. Essas duas bases alavancaram o desenvolvimento da computação distribuída de forma jamais imaginada, nos permitindo executar técnicas que antes seriam impossíveis.
Sistemas Distribuídos
Andrew Tanenbaum, prolífico autor da computação, propõe uma definição para sistemas distribuídos em seu livro "Distributed Systems - Principles and Paradigms" (traduzida abaixo) que é bastante interessante para introduzirmos RMI:
Esta definição captura o espírito com o qual o RMI foi pensado: chamadas cujas características remotas são abstraídas para o usuário, se comportando como se o processamento tivesse ocorrido localmente. Esta coerência em sistemas modernos é alcançada apenas implementando diversas técnicas típicas de sistemas distribuídos que podem ser facilmente encontradas em livros sobre o assunto, como na obra supracitada.
Utilidades da Computação Distribuída
Nenhum dos avanços previamente discutidos seria útil se não encontrássemos aplicações nas quais tais técnicas nos permitissem desbravar fronteiras antes intransponíveis. Por exemplo, temos tecnologia para instalar até quatro interfaces leitoras de disquete em um computador, mas a utilidade deste feito não valeria seu esforço. Felizmente, aqui, este não é o caso: a computação distribuída trouxe diversas possibilidades de aplicações que hoje são implementadas ao redor do mundo, permitindo:
- o acesso a recursos remotos;
- a transparência das chamadas distribuídas;
- a escalabilidade dos sistemas modernos;
- a descentralização dos possíveis pontos de falha.
Conectar usuários e recursos facilita a colaboração e a troca de informações. Aplicações como os e-commerces e os sistemas de e-mail são fortemente baseadas em sistemas distribuídos, ilustrando bem o poder deste leque de arquiteturas.
Compartilhando Recursos de Forma Segura
A palavra 'recursos' pode significar diversos itens: impressoras, computadores, armazenamento, dados, arquivos, páginas da Web e redes são apenas alguns deles. Economicamente, faz sentido querer compartilhar periféricos custosos como supercomputadores e sistemas de armazenamento de alta performance, e ferramentas seguras que possibilitam estas ações são altamente desejáveis. Com o crescimento da conectividade das redes, torna-se cada vez mais necessário investir na segurança da comunicação entre os diversos dispositivos. De acordo com Tanenbaum, novamente em seu livro "Distributed Systems - Principles and Paradigms" (traduzido abaixo), na prática, hoje em dia, muitos sistemas ainda possuem mecanismos ineficientes de segurança:
Apesar da ideia de Tanenbaum estar ainda longe da realidade, de fato ocorrem diversas falhas de segurança devido à facilidade de se comprar produtos online através de cartões de crédito. Enquanto ainda é difícil garantir este tipo de infalibilidade, muito já foi feito no que diz respeito à comunicação entre sistemas, levando em conta a tríade principal da segurança da informação: confidencialidade, integridade e disponibilidade. Ao estudarmos RMI mais a fundo, veremos como alguns destes conceitos são implementados na troca de mensagens entre nossos recursos, na tentativa de proteger nossas chamadas de ataques mal-intencionados.