• Nenhum resultado encontrado

Interface Universal de Acesso a Recursos Compartilhados

N/A
N/A
Protected

Academic year: 2023

Share "Interface Universal de Acesso a Recursos Compartilhados"

Copied!
72
0
0

Texto

Nesse cenário, um dos pontos a serem examinados é o compartilhamento de recursos gerados pelos mais diversos tipos de usuários de sistemas computacionais. O compartilhamento de recursos entre usuários está muito bem definido para alguns grupos específicos, como os usuários desenvolvedores, onde muitas ferramentas podem ser utilizadas para este fim.

Justificativa

Com base no exposto, é possível perceber que, para os usuários desenvolvedores, o compartilhamento de recursos é uma realidade sólida e presente em seu cotidiano. No exemplo mostrado, Alice cria e compartilha um recurso em um servidor de recursos remoto, então Bob solicita o recurso fornecido por Alice do servidor de recursos remoto.

Figura 1 – Compartilhamento de Recursos Entre Usuários
Figura 1 – Compartilhamento de Recursos Entre Usuários

Objetivos

A criação de um ecossistema de recursos significa que existe uma grande oferta de recursos semelhantes que muitas vezes podem ser os mesmos, que só estão disponíveis em repositórios diferentes. Nas seções a seguir, serão apresentados alguns dos principais conceitos relacionados ao compartilhamento de recursos de software.

Recursos

Escalabilidade: indica que o sistema permanece eficiente quando há um aumento ou diminuição significativa no número de recursos e usuários. Enfrentados os desafios acima, é possível apresentar uma estrutura robusta e confiável para compartilhamento de recursos entre usuários localizados nas mais diversas localidades.

Repositórios

Repositórios de Aplicações

  • NuGet
  • Maven
  • PyPI
  • Linux: RPM e DEB

Uma vez criado um pacote, a distribuição pode ser feita para um repositório para uso, e as informações apresentadas anteriormente são de extrema importância para o uso correto dos pacotes. Cada pacote disponível no repositório representa dois níveis diferentes de visualização para seus usuários. Um componente NuGet consiste em um arquivo compactado com uma extensão .nupkg que contém os códigos compilados e outros arquivos associados a eles.

Analisando a Figura 7, é possível perceber que existem três tipos básicos de repositórios utilizados pelo Maven: repositório local, repositório remoto e repositório central. Normalmente, o repositório local contém componentes criados por uma organização e todos os componentes comuns e públicos são recuperados do repositório central.

Figura 6 – Distribuição de Pacotes NuGet
Figura 6 – Distribuição de Pacotes NuGet

Repositórios de Códigos

  • Git
  • SVN (Subversion)
  • Git versus SVN

Git é um sistema de controle de versão distribuído gratuito e de código aberto projetado para lidar com tudo, desde projetos pequenos a muito grandes com velocidade e eficiência (17). Porém, vale ressaltar que mesmo que os usuários centralizem o código-fonte nesses repositórios, essa centralização é feita por desejo dos usuários e não por imposição do sistema de controle de versão, que é essencialmente distribuído. Ao contrário dos repositórios Git (subseção 2.2.2.1), que visam descentralizar os recursos, o Subversion centraliza os recursos gerenciados em um nó central que deve estar ativo para que os recursos estejam disponíveis.

Entre as principais características do SVN estão: repositório centralizado, necessidade de conexão e repositório único para todos os usuários. Tais funcionalidades podem facilitar o controle dos recursos nele presentes, uma vez que os recursos centralizados possuem todos os usuários geralmente trabalhando em uma versão do código.

Aplicabilidade da UAISharing

  • Versionamento local
  • Troca de recursos na mesma rede
  • Backup de recursos na mesma rede
  • Publicação de recursos
  • Modificação de recursos pelos clientes
  • Escritórios distribuídos

Neste cenário, os usuários são Alice e Bob, cada um com um repositório local no qual controlam seus próprios recursos. Assim, eles publicam os recursos que desejam publicar de seus repositórios em um novo repositório externo acessível a outros usuários. Como ele não tem permissão para enviá-los para o repositório externo de onde obteve a fonte original, ele os publica em um novo repositório de acesso externo ao qual ele tem acesso e, se Alice ou Bob quiserem atualizar o conteúdo do original, fonte compartilhada, eles obtêm a nova versão dos armazéns de Carlos e a usam em seus armazéns.

A estrutura dos arquivos consiste em: i) cada funcionário tem seu próprio arquivo; ii) cada escritório possui um armazém de backup para centralizar os recursos dos funcionários; iii) um arquivo central da organização que recebe a replicação de todos os arquivos centrais de cada gabinete; iv) finalmente, um repositório público para que seus clientes possam obter recursos compartilhados de interesse comum. Observe que, embora seja um repositório público, usuários externos não podem modificar nenhum recurso compartilhado nele.

Elementos da UAISharing

  • Recursos
  • Pacotes
  • Dependências
  • Repositórios
  • Área de Trabalho (Workspace)
  • Usuários

Portanto, quando qualquer recurso é compartilhado em um repositório, ele deve ser devidamente empacotado para distribuição. Todos os recursos utilizados pelos usuários durante seu processo de trabalho são armazenados na Área de Trabalho. Um espaço de trabalho é inicialmente uma cópia de um repositório e, portanto, contém uma réplica de todos os recursos existentes no repositório.

Isso requer que os recursos sejam copiados do repositório novamente, os recursos locais atualizados e a sincronização entre a área de trabalho e o repositório mantida. A Figura 8 mostra a estrutura básica de comunicação entre os recursos disponíveis na área de trabalho de um usuário e um repositório.

Figura 8 – Estrutura básica de comunicação entre a Área de Trabalho e o Repositório
Figura 8 – Estrutura básica de comunicação entre a Área de Trabalho e o Repositório

Distribuindo Recursos

Interface de Comunicação

Para a comunicação entre os envolvidos no processo de compartilhamento de recursos, é fundamental o estabelecimento de uma interface padronizada que forneça as operações necessárias para o seu funcionamento. Ao definir as operações, a responsabilidade de como ocorrerá a comunicação é abstraída dos usuários, cabendo aos desenvolvedores dessa interface decidir qual é a implementação mais adequada. As Figuras 15 e 16 mostram as operações disponíveis na interface de comunicação para manipulação de lojas e embalagens, respectivamente.

Operações sobre repositórios

Manter repositório remoto → executa operações de criação, restauração, atualização e exclusão em repositórios remotos, ou seja, repositórios não descobertos pelo agente do sistema por meio da troca de mensagens multicast. Ao analisar a lista de atividades apresentada anteriormente, é possível perceber que todas elas são afetadas por um usuário interagindo com o sistema e, portanto, requerem alguma ação antes de serem executadas. Descobrir repositórios locais→ através de mensagens Multicast você obterá a lista de repositórios disponíveis na rede local.

Armazenamento da lista de repositórios → para cada repositório recebido no processo de descoberta, ele é mantido na lista de repositórios. Nele, existem dois subcomponentes principais que são responsáveis ​​pela comunicação entre as instâncias de partição, são eles: System Agent Server e System Agent Client.

Figura 9 – Casos de uso acionados pelos usuários
Figura 9 – Casos de uso acionados pelos usuários

Estrutura da Área de Trabalho

Outro componente macro chamado user agent abrange todas as operações realizadas através das ações que os usuários executam durante o compartilhamento de recursos, ele fornece uma CLI (command line interface) chamada uaipkg1, que é responsável por todo o processo de compartilhamento, e algumas dessas ações encaminham sockets de comunicação criado pelo componente de macro do agente do sistema.

Protocolo de Comunicação

Camada de Aplicação: O protocolo usado para comunicação entre instâncias de compartilhamentos reside na camada de aplicação na pilha de protocolos TCP/IP. Camada de transporte: os protocolos mais utilizados para comunicação, TCP e UDP, serão utilizados pelo protocolo estabelecido na camada de aplicação. O UDP será utilizado exclusivamente durante o processo de descoberta por meio da troca de mensagens Multicast, enquanto o protocolo TCP será utilizado para outras funções.

Depois de determinar a necessidade do protocolo e onde ele se encaixa na pilha de protocolos TCP/IP, você precisa defini-lo. Junto com os campos: Tipo de Mensagem e Versão, o conteúdo presente neles é extraído e manipulado quando as mensagens são recebidas.

Figura 13 – Localização dos componentes na pilha de protocolos TCP/IP
Figura 13 – Localização dos componentes na pilha de protocolos TCP/IP

Mensagens de Comunicação

  • Descoberta de repositórios na rede local
  • Obtenção dos metadados dos recursos
  • Obtenção dos metadados dos recursos (Resposta)
  • Verificação das atualizações disponíveis
  • Verificação das atualizações disponíveis (Resposta)
  • Obter recurso por identificador
  • Obter recurso por identificador (Resposta)
  • Publicar informações do recurso
  • Publicar informações do recurso (Resposta)

O código 4.3 representa o conteúdo enviado no atributo payload da mensagem de resposta, e as linhas 2 e 3 enviam o número da página de resposta ou o número total de páginas disponíveis para visualização. Sem atualizações: O recurso não é enviado na mensagem de retorno para não sobrecarregar o processo de comunicação. Após receber uma mensagem de retorno (ver subseção 4.3.7), se o recurso existir, sua localização é extraída e uma nova mensagem é emitida, desta vez para obter o recurso para uso.

Após receber uma solicitação para obter um recurso, o repositório de destino verifica se existe algum recurso com a versão desejada e, se houver, envia na mensagem de retorno as informações para baixar o arquivo. Após a execução das etapas apresentadas, uma mensagem de retorno é enviada ao remetente com a resposta à solicitação.

Operações com Repositórios

  • Listar Repositórios
  • Adicionar Repositório
  • Atualizar Repositório
  • Remover Repositório
  • Descobrir Repositórios
  • Atualizar Lista de Recursos Existentes

Local (local): são repositórios localizados por mensagens Multicast e inseridos automaticamente na lista de repositórios acessíveis ao usuário; Para fins de listagem, um quarto grupo é criado logicamente e engloba todos os grupos de repositórios apresentados acima. No entanto, é utilizado um arquivo de configuração do repositório (repositories.json) com todos os repositórios conhecidos e controlados pelo usuário.

Neste arquivo estão os três grupos de repositórios apresentados na seção 4.4.1 e cada arquivo individual do repositório é adicionado ao grupo referenciado. Embora o processo de descoberta do repositório possa ser executado automaticamente, o usuário pode solicitá-lo manualmente quando o processo automatizado estiver desativado.

Operações com Recursos

  • Publicar Recursos
  • Remover Recursos
  • Localizar Recursos
  • Obter Informações do Recursos
  • Instalar Recursos
  • Desinstalar Recursos
  • Atualizar Recursos

Depois de publicados, os recursos ficam visíveis para os usuários que acessam o repositório em que foram encontrados. Se por algum motivo o proprietário do recurso não quiser mais disponibilizá-lo para outros usuários, a remoção desse recurso deverá ser realizada. Devido a essas características, é necessária uma declaração mais abrangente que apresente todas as informações relevantes do recurso desejado para o usuário solicitante. Portanto, para obter tais informações, o usuário deve executar o comando abaixo, informando o nome do repositório, o nome e a versão da fonte, onde a versão é opcional e, caso não seja especificada, a última versão existente do recurso retornado.

A instrução mostrada pega as informações do recurso "NomeRecurso" cuja versão é "1.0.0" presente no repositório "MeuRepositorio" e as apresenta ao usuário. A atualização é realizada informando o nome do repositório para obter o recurso, bem como a nova e desejada versão do recurso, a versão é opcional e caso não seja informado, o recurso é atualizado para a última disponível.

Descrição do Cenário

Configurando Repositórios

Para tanto, serão descritas todas as atividades necessárias para que os usuários compartilhem recursos entre si para validar a estrutura proposta. O próximo passo é criar a rede de compartilhamento, ou seja, devem ser descobertos e adicionados repositórios internos, assim como devem ser adicionados repositórios externos conhecidos. Assim, Alice, Bob e Carlos acionam o processo de descoberta de repositórios internos e assim obtêm repositórios acessíveis a partir da mensagem multicast.

Para isso, todos executam a seguinte instrução, que consiste em iniciar o processo de descoberta por um período de 30 segundos. De posse dos repositórios obtidos, Alice e Bob realizam a inclusão dos repositórios obtidos no processo de descoberta, através das instruções a seguir.

Compartilhando Recursos

Após a publicação dos recursos pelos usuários, é necessário que cada um atualize seus repositórios para que os recursos publicados sejam reconhecidos pelos demais usuários. Uma vez de posse das informações sobre todos os recursos existentes nos repositórios conhecidos, o usuário pode localizá-los e realizar a instalação daqueles que lhe interessam. Já Bob irá procurar os recursos RecursoAlice1.pdf e RecuroCarlos1.odt encontrados nos arquivos Alice e Carlos, respectivamente, e após localizá-los, irá instalá-los em sua área de trabalho.

Vamos supor que Alice tenha modificado o recurso ResourceBob1.py obtido do repositório de Bob, após as alterações deve ser criado um novo arquivo de metadados que informe a nova versão do recurso, que neste caso será a 1.1.1, para publicação. As instruções abaixo apresentam as etapas para instalar e publicar o referido recurso no repositório local de Bob.

Tabela 5 – Recursos existentes em cada repositório após as instalações
Tabela 5 – Recursos existentes em cada repositório após as instalações

Conclusão

Trabalhos Futuros

In: 2018 IEEE/ACM 40th International Conference on Software Engineering: New Ideas and Emerging Technologies Results (ICSE-NIER).

Imagem

Figura 1 – Compartilhamento de Recursos Entre Usuários
Figura 2 – Compartilhamento de Recursos Mediados Por Servidores de Recursos Externos (Cliente/Servidor)
Figura 3 – Compartilhamento Direto de Recursos Entre Usuários (Redes P2P)
Figura 5 – Comunicação Envolvendo Repositórios Distribuídos
+7

Referências

Documentos relacionados

83.56 9.54 % Students from State Schools lagged 3 years Percentage of young full-time undergraduate entrants from state schools or colleges 89.51 11.13 Median entry points lagged