Armando Luiz Nicolini Delgado
Julho 1998
Neste final de século a tendência para aplicações computacionais tem se fixado no desenvolvimento de sistemas distribuídos, como forma de otimizar a utilização de recursos e aumentar a confiabilidade das aplicações ([Lewis95]). Atualmente a abordagem mais utilizada para tais sistemas distribuídos tem sido a de cliente/servidor. No entanto, o objetivo para a próxima década é a computação colaborativa baseada em redes de comunicação peer-to-peer ([Lewis95]). Para suportar apropriadamente estas aplicações, novas tecnologias são necessárias, especialmente no que diz respeito a protocolos de comunicação e de aplicação. O objetivo deste trabalho será abordar e analisar as diversas tendências das tecnologias em protocolos para aplicações distribuídas, em especial aplicações e ferramentas voltadas a atividades colaborativas que envolvam hipermedia.
Na década de 60 e 70 o cenário dos ambientes computacionais era dominado pelos mainframes, nos quais se concentravam todas as tarefas e aplicações dos usuários de uma corporação ou empresa. Estas aplicações eram, via de regra, aplicações de banco de dados, acessadas por usuários através de terminais ligados por meio de canais de comunicação ao mainframe ou servidor central.
No entanto, durante este tempo, começaram a surgir os computadores pessoais e estações de trabalho, de modo que a década de 80 assistiu à migração sistemática para PC's de muitas funções antes executadas pelos mainframes. Consequentemente, surgiram aplicações centradas em PC's, mas que necessitavam interagir e obter dados de servidores. Este fato,juntamente com a evolução paralela que ocorria com as tecnologias de transmissão de dados e redes de computadores, desencadeou o estudo e desenvolvimento de sistemas distribuídos, culminando com o aparecimento do modelo cliente/servidor.
Na década atual, este modelo tem sofrido mudanças levando ao estabelecimento de uma cena caracterizada por ([Lewis95]):
Assim, a criação de arquiteturas de computação distribuída evolui através dos seguintes passos: centrado em servidor, centrado no cliente e computação colaborativa distribuída peer-to-peer (figuras 1 e 2).
Uma série de aspectos caracterizam sistemas distribuídos, e quando a computação colaborativa se junta a estes sistemas, outros fatores surgem alterando de forma significativa os aspectos já existentes. Este artigo irá mostrar os principais aspectos envolvidos em ambientes colaborativos distribuídos, para então dar especial atenção aos aspectos relacionados a protocolos de aplicação que sejam desenvolvidos para este tipo de ambiente. Ao final serão apresentados alguns protocolos que procuram de alguma forma encampar alguns dos aspectos apresentados.
Ambientes colaborativos distribuídos permitem que um grupo de usuários ou aplicações, disperso geograficamente, possa usar computadores e diversas mídias (texto, audio, vídeo e imagens) para resolver problemas conjuntamente ([Yavat94]). Exemplos de tal tipo de ambiente são ambientes colaborativos de engenharia de software, ambientes de autoria colaborativa e ambientes de ensino a distância.
Em ambientes colaborativos de autoria ou de engenharia de software, por exemplo, um grupo de projetistas localizados em vários pontos colaboram em um documento ou programa usando ferramentas interativas para editar e testar partes do material em desenvolvimento. A interação pode envolver um editor em grupo (baseado em janelas compartilhadas), uma imagem (que mostra o projeto final resultante) e um canal de voz/vídeo que permite aos projetistas visualizar, discutir as sugestões uns dos outros. Além disso, a interação não envolve necessariamente usuários humanos, mas também programas cooperativos que trabalham juntos na automatização de uma tarefa em particular.
O desenvolvimento de tais ambientes envolve aspectos de diversas áreas, incluindo interface com usuário, infraestrutura de comunicação, paradigmas de colaboração, ferramentas para trabalho em grupo e sistemas de objetos compartilhados ([Yavat94]). Podemos sumarizar estes pontos apresentando as seguintes características de ambientes colaborativos distribuídos:
Um ambiente colaborativo via de regra utiliza diversos programas de diferentes fabricantes e procedências de forma combinada para atingir algum objetivo ou executar alguma tarefa. Isto exige que estes programas possam trocar informações e se comunicar entre si de forma uniforme. Para isto devem adotar padrões de arquitetura de informação e distribuição que torne a sua utilização independentes de sua procedência e independentes da plataforma em que serão utilizados. Isto caracteriza o que se denomina interoperabilidade e é geralmente atingida pela adoção de protocolos abertos ou pela utilização de um middleware padrão (e.g. OMG/CORBA).
Ambientes colaborativos envolvem a manipulação não só de documentos mas também de informações armazenadas em bases de dados que, geralmente, são heterogêneas. O ambiente deve ter suporte para a unificação destas bases de dados e, principalmente, dos modelos de informação ([Singh98]).
Com a disseminação de computadores portáteis, a necessidade de desenvolver sistemas distribuídos que levem em conta a mobilidade do computador e o fato de que um determinado componente do sistema distribuído esteja sujeito a flutuações potencialmente rápidas e significativas no nível de serviço fornecido pela infraestrutura de comunicação ([Davie96] e [Klein96]). Em ambientes colaborativos, a mobilidade ocorre não apenas no contexto da plataforma, mas também do usuário. Assim, fatores como mobilidade do ambiente de trabalho de um usuário e heterogeneidade de recursos para colaboração e visualização (e.g., recursos de janela e gráficos) são também importantes na caracterização de tais sistemas.
Assim, a mobilidade do ambiente computacional ou do usuário envolve a migração de processos e objetos, com os objetivos de migrar o ambiente de trabalho de um usuário, mudar o processamento para uma máquina que mais se adeque a uma performance desejada, ou mover, através dos componentes do ambiente distribuído, processos de gerência do ambiente de distribuição (aplicação e rede).
A essência deste ambiente nômade é automaticamente ajustar os aspectos de computação do usuário, comunicação e armazenamento de modo transparente e integrado com respeito a : localização do usuário, dispositivos de comunicação usado, banda de comunicação disponível, plataforma usada e se o usuário está ou não em movimento.
Tópico exaustivamente pesquisado na área de banco de dados, este aspecto precisa ser refinado no que diz respeito à interoperabilidade e mobilidade ([Dunha95]). Como os dados distribuídos são potencialmente heterogêneos, o controle e gerência de transações distribuídas deve passar por uma solução que envolva um middleware padrão ou um protocolo de aplicação que seja o ponto comum para as implementações de transações dos diferentes banco de dados.
Também conceitos menos convencionais e mais relaxados de transações devem ser adotados para permitir atualizações não consistentes aos dados acessados de modo colaborativo.
Uma vez que recursos multimedia estejam envolvidos no ambiente colaborativo, é necessário um controle da qualidade de serviço (QoS) oferecida pela infraestrutura de comunicação da rede de computadores. Formas de fazer tal gerenciamento podem ser oferecidas tanto através de protocolos de aplicação ou de gerência ([Vogel95] e ([Liebe95]).
Ambientes colaborativos eventualmente envolvem programas cooperantes. Atualmente a maioria das aplicações em uso envolvem, em essência, apenas interações com dois participantes (two-party applications). Projetos com múltiplos participantes são muito mais difíceis de desenvolver ([Clark95]). A complexidade de sistemas com múltiplos participantes surge de diversas fontes: a natureza heterogênea dos diversos hosts, que podem ter características funcionais e de performance muito diferentes; diferenças de performance em diferentes partes da rede; e falhas transientes ou persistentes de algum dos participantes no sistema.
Os aspectos abordados anteriormente impõem uma série de necessidades e restrições sobre os protocolos de comunicação e de aplicação que são utilizados na implantação de ambientes colaborativos. Muitas destas necessidades ainda não são abordadas pelas implementações atuais de protocolos e indicam o caminho a ser seguido em futuras especificações.
Embora existam soluções bem conhecidas para transações distribuídas, são necessários protocolos de aplicação para que a coordenação destas transações entre os diversos componentes do sistema distribuído possa ser feita independentemente do fabricante dos sistemas de banco de dados envolvidos. Protocolos para transações distribuídas contribuem assim para a interoperabilidade entre diferentes banco de dados. Um exemplo deste tipo de protocolo é o TIP - Transaction Internet protocol ([Lyon98]).
Este protocolo é usado pela aplicação com o fim específico de permitir que 2 aplicações possam sincronizar as operações de commit ou abort utilizando protocolo de commit em 2 fases. Na verdade, a aplicação utiliza um Gerente de transações e este é que usa o protocolo TIP. As aplicações distribuídas, além do protocolo de comunicação e aplicação inerentes a elas, usam serviços do gerente de transações através de API's associadas (figura 3).
Cada vez mais se faz necessária a existência de protocolos de aplicação que permitam uma troca uniforme de dados, especialmente quando estes dados envolvem diversos tipos de mídia, como é o caso de ambientes colaborativos. Um exemplo de tal protocolo é o HTTP e suas contínuas evoluções ([Niels98b,Niels98a,Spero98,Sprei98]). Aprincipal característica destas evoluções é a atenção dada ao melhoramento de performance do protocolo HTTP, de forma a manipular múltiplas requisições de documentos em uma única conexão TCP.
Para controlar e negociar QoS no caso de recursos multimídia, diversas abordagens têm sido desenvolvidas para permitir que aplicações distribuídas possam estabelecer os recursos da rede que desejam para si. Exemplos de tais iniciativas são o QEX, usado no sistema ANSAware ([Davie96]) o Resource Reservation Setup Protocol - RSVP ([Zhang98]), a ser usado na Internet. O primeiro monitora flutuações de QoS no canal de comunicação e ajusta o comportamento da aplicação de acordo. O segundo é uma iniciativa da Internet Engineering Task Force ([IETF]).
De um modo geral, aplicações móveis enfrentam desconexões temporárias, um alto grau de variação da banda de comunicação, com períodos longos de baixa banda ([Kottm96]). Desenvolver protocolos de transporte e arquiteturas de distribuição que lidem com esta situação é uma tendência marcante e algumas propostas podem ser encontradas em ([Porta96], [Klein96], [Kottm96], [Durst97] e [Imiel96]).
Este artigo mostrou as principais características de aplicações colaborativas distribuídas, que consistem essencialmente em ter uma forte necessidade por mecanismos de interoperabilidade, bem como por formas convenientes de tratar mobilidade de ambientes de usuários e hosts, passando por arquiteturas adequadas para lidar com múltiplos participantes em uma tarefa colaborativa.
Para suportar este tipo de aplicação, foi mostrado que na área de protocolos as principais tendências estão em manter sempre a interoperabilidade, com protocolos abertos para, por exemplo, gerência de transações distribuídas, controle de QoS e tratamento de mobilidade.
A principal conclusão a que se chega é que a tendência geral para protocolos de aplicação é garantir mecanismos uniformes e abertos para gerência adequada de QoS e transferência de dados com performance alta, de forma a suportar a colaboração, principalmente com a utilização de recursos multimídia, existindo diversas iniciativas nestas direções para a produção de protocolos adequados.
Agradecemos a Luis Fernando Faina pela disponibilização dos elementos gráficos utilizados na figura 1.