sexta-feira, 11 de setembro de 2009

reunião > definição da arquitetura

Olá pessoal, nesse post faremos um breve resumo da nossa última reunião, a qual teve como objetivo definir a arquitetura do OurGrid Community.

A nossa preocupação inicial foi "como extrair os dados das doações (de recursos) do OurGrid?"

Pensamos em duas formas de resolver o problema:
  • Extrair esses dados do BD do Aggregator, componente que coleta todo tipo de informação do OurGrid;
  • Realizar a consulta diretamente ao "Public Peer", que irá gerenciar os Donated Workers.

A primeira abordagem é bem mais difícil de ser aplicada, pois segundo Abmar (desenvolvedor do OurGrid), a quantidade de entrada nas tabelas do banco é muito grande, e isso demandaria a elaboração de consultas mais complexas (com paginação, etc). Logo, optamos pela segunda abordagem, pois o nosso foco é ter um produto usável no menor tempo possível. Dessa forma estaremos diminuindo o esforço de implementação.

Com a segunda abordagem, resolveremos uma outra questão, o registro de novos recursos. Nesse esquema, implementaremos o componente Peer Client, o qual se comunica com a interface do "Peer Público" para requisição dos dados de doação. Logo, será possível reutilizar essa mesma interface para registrar recursos.

O Peer Client irá periodicamente requisitar os dados de doação ao Public Peer. Em posse dos dados, ele os repassará para o BD Manager, componente responsável por processar e armazenar essas
informações no BD. Outra função do Peer Client é consultar periodicamente o DB Manager, recuperando as informações dos novos Workers inseridos no BD (durante o cadastro no sistema) e os
registrando junto ao Public Peer.

Por fim, construiremos a interface da nossa comunidade com o framework Elgg. No entanto, são necessárias alterações na interface "genérica" de forma a prover as funcionalidades planejadas, como a visualização do ranking, o uso do fórum, etc. Sabemos que o Elgg possui uma arquitetura baseada em plugins, logo forneceremos um conjunto de plugins (um para cada funcionalidade da interface).

Elaboramos o seguinte overview da arquitetura :


Uma idéia de funcionalidade surgiu durante a reunião foi a implementação de Grupos. Seria um sistema análogo ao de clãs em um MMORPG, onde seus membros cooperam entre si para elevar o status do seu clã. Baseado nesse conceito, teríamos adicionalmente um ranking por Grupos, onde cada Grupo agregaria os recursos doados por todos os seus membros. A idéia é estimular a competição, pois acreditamos que com esse ranking os membros dos grupos se sentirão compelidos a contribuir mais, e então seu grupo terá maior visibilidade no ranking.

Qualquer comentário ou sugestão será bem vindo :)

P.S: O modelo do banco será definido nas próximas reuniões.