Propostas Submetidas

DEI - FCTUC
Gerado a 2024-04-20 14:50:23 (Europe/Lisbon).
Voltar

Titulo Estágio

Desenho e implementação de um modelo de dados relacional para o Open Academic Environment

Áreas de especialidade

Engenharia de Software

Local do Estágio

Coimbra, remote

Enquadramento

O Open Academic Environment (OAE) é um projecto de código aberto patrocinado pela Apereo Foundation com uma implementação alargada em França. Através da ESUP-Portail, uma organização de 75 universidades Francesas, milhares de utilizadores fazem uso do OAE para projectos de colaboração, desde staff administrativo passando por estudantes e investigadores.

O projecto tem sabido manter-se actual e tem-se renovado tecnologicamente de uma forma regular. No entanto, o projecto padece do velho pecado "premature optimization is the root of all evil" na medida em que foi desenhado para o máximo de escalabilidade possível sem ter em conta a sua real utilização. Em consequência dessa ambição, a sua arquitectura faz uso de NoSQL, nomeadamente da base de dados Cassandra, que possibilita, em teoria, escalabilidade horizontal infinita. Anos depois, verifica-se que nunca se fez uso dessa potencialidade, estando o OAE "preso" a um modelo de dados NoSQL que não apenas inibe um rápido ciclo de desenvolvimento incremental como ainda actua como forte dissuasor de contribuições por parte da comunidade open source.

É neste contexto que o projecto procura um colaborador que possa reconfigurar o modelo de dados "column-oriented" do Cassandra para um do tipo relacional para se implementar em Postgres.

Objetivo

Os objectivos do estágio focam-se na re-criação do modelo de dados da plataforma para um formato relacional e na re-implementação da camada de acesso a dados no OAE com Postgres.

Mais concretamente, pretende-se passar de um cenário em que os dados estão modelados de forma "column-oriented" (NoSQL) em Cassandra, cujo relacionamento entre entidades é feito com recurso a redundância (uma vez que não existem foreign keys em Cassandra), para um cenário mais tradicional "row-oriented" em Postgres, fazendo uso de todos os mecanismos que esta base de dados oferece, e que vão desde foreign keys, indexes, transações, etc. Esta modelação abrirá caminho à criação da base de dados em si na fase seguinte. A base de dados actual não ultrapassa as 50 tabelas (em Cassandra, muitas delas "redundantes"), o que deverá ser convertido para cerca de 20 tabelas (em Postgres, sem redundância). Com este novo modelo de dados poder-se-á, numa primeira fase, adaptar a camada de dados do OAE de forma a obter e inserir dados na nova base de dados e, numa segunda fase, criar o software que permita migrar deployments já existentes. Todo o software deverá ser desenvolvido em Javascript (node.js) e ser alvo de testes funcionais automatizados devidamente integrados no sistema de continuous testing do projecto (circleCI).

Os deliverables previstos são:

- Desenho do modelo de dados conceptual
- Documentação associada à conversão do modelo de dados actual (em inglês)
- Implementação do modelo de dados em Postgres (software) (SQL e Javascript)
- Implementação da camada de dados do OAE para uso com Postgres (CQL, SQL e Javascript)
- Implementação de um script de migração de dados para deployments já existentes (Javascript)
- Documentação associada à migração dos dados no site do projecto (Github)

O trabalho será feito em coordenação com o director (Miguel Laginha, DEI2001) e com os stakeholders do projecto (França, EUA e Reino Unido), e todos os resultados serão "abertos" à comunidade, tal como o projecto o é (Educational Community License v2.0).

Plano de Trabalhos - Semestre 1

No primeiro semestre o objectivo passa por analisar o projecto, o seu contexto, audiência e arquitectura actual, de forma a refinar objectivos e propor um conjunto concreto de resultados e processos a adoptar no segundo semestre.

Os resultados esperados nesta fase incluem:

Fase 1 - Revisão da bibliografia e Estado da Arte
Fase 2 - Familiarização com o âmbito do projecto OAE, o seu estado actual, audiência e objectivos e constrangimentos (em termos de arquitectura e base de dados)
Fase 3 - Definição de um conjunto refinado de resultados e processos e/ou metodologias para os atingir, com base no ponto anterior
Fase 4 - Elaboração da proposta de dissertação.

Plano de Trabalhos - Semestre 2

No segundo semestre o estagiário deverá implementar o plano traçado no semestre anterior no sentido de concretizar os objectivos gerais do estágio. Assim sendo, e já na posse de toda a informação de contexto do projecto, objectivos e constrangimentos, esperam-se os seguintes resultados:

Fase 5 - Modelação dos dados numa perspectiva relacional e respectiva implementação
Fase 6 - Implementação da camada de dados na plataforma de forma a usar o novo modelo de dados
Fase 7 - Implementação do "script" de migração de dados
Fase 8 - Disponibilização de documentação com informação auxiliar e complementar ao software desenvolvido
Fase 9 - Escrita da dissertação

A calendarização destes objectivos está dependente de factores externos como a prioritização por parte dos stakeholders assim como de alguns factores internos tal como o próprio estado de desenvolvimento da plataforma, pelo que não é possível estabelecer, nesta fase, um calendário credível para a concretização destes resultados.

Condições

O estágio deverá ser desenvolvido remotamente em coordenação e contacto regular com o coordenador e chefe de equipa. O estagiário tem liberdade para definir o seu horário e método de trabalho desde que isso não coloque em causa os resultados e a sua avaliação.

Os recursos computacionais estão a cargo do estagiário, ainda que possa haver complementos pontuais se necessário (p.e. alojamento e versionamento de materiais).

O estágio pode ser remunerado no segundo semestre até ao valor de 800€ mensais em regime de freelance consoante o perfil do candidato, sendo esta a forma mais fácil de estabelecer uma ligação contratual entre duas partes em países diferentes. Haverá pelo menos uma ronda de entrevistas pelos candidatos de forma a aferir a adequabilidade dos mesmos ao tipo de tarefas em mãos, com especial foco nas cadeiras de bases de dados e programação.

Algum detalhe omitido aqui poderá ser colocado à consideração com a Apereo Foundation através do orientador do estágio.

Observações

A Apereo Foundation é uma organização internacional com membros em todos os continentes e, como tal, todos os seus membros trabalham remotamente. Este estágio também o é. O que isto significa, na prática, é uma dose extra de responsabilidade assumida de forma a que os resultados sejam atingidos com exigência, brio e determinação que se esperaria de um trabalho on-site.

Trabalhar remotamente tem os seus desafios e é esperado do estagiário que saiba contorná-los, impondo auto-disciplina, organização e método, contando sempre com o apoio da restante equipa (residente em Coimbra).

Há reuniões diárias virtuais de acompanhamento com a equipa (stand-up meetings) e reuniões virtuais de coordenação com os stakeholders a cada duas semanas, nas quais é esperado que o estagiário participe activamente desde que o trabalho desenvolvido o justifique.

Orientador

Miguel Laginha
me@miguellaginha.com 📩