Skip to content

SD-CC-UFG/alexandre.santos.sd.ufg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

alexandre.santos.sd.ufg

Licença GNU - GPL : "É permitido o uso de parte dos códigos aqui publicados sem autorização prévia, desde que identificada a fonte e o autor".

Autor: Alexandre Oliveira dos Santos - Matrícula: 201407237
Título: Arquivos da disciplina de Sistemas Distribuídos - Universidade Federal de Goiás - 2018-2.

Entrega 1 - Descrição: Implementação da Lista de Exercícios utilizando Node.JS e HTTP - (Solução Cliente-Servidor)
Pré-Requisitos: NPM, Node.JS - Express, BodyParser, Pug Template Engine.
Linguagens e Tecnologias: Javascript, HTML, Sublime Text
OBS: Para executar o projeto inicie o servidor através do arquivo "server.js". No diretório do projeto há ainda o documento PDF contendo a descrição dos exercícios e também capturas de tela do projeto em funcionamento em um dispositivo IOS através do navegador Safari.
Para verificar edições anteriores referentes a essa atividade consulte: https://github.com/alexandreoliveirasantos/SD_Lista1

Entrega 2 - Descrição: Implementação da Lista de Exercícios com a utilização de Remote Procedure Calls - (Solução RPC)
Linguagens e Tecnlogias: Java, XML-RPC Protocol, IDE Eclipse
OBS: Para executar o projeto inicie o servidor através do arquivo "JavaServer" e em seguida o cliente através do arquivo "JavaClient". No diretório do projeto "Lista_Node" há o documento PDF contendo a descrição dos exercícios. Dentro do diretório desta implementação você pode encontrar capturas de tela do projeto em funcionamento (Client / Server) utilizando a IDE Eclipse para execução.

Entrega 3 - Descrição: Implementação da Lista de Exercícios com a utilização de Remote Method Invocation - (Solução RMI)
Linguagens e Tecnlogias: Java, RMI, IDE Eclipse
OBS: Para executar o projeto inicie o servidor através do arquivo "Server" e em seguida o cliente através do arquivo "Client". No diretório do projeto "Lista_Node" há o documento PDF contendo a descrição dos exercícios.

Entrega 4 - Projeto Final - Descrição: Implementação do Projeto Final da disciplina "DigiEscola" - (Em edição)
Proposta: Implementar uma solução de invocação remota com arquitetura do tipo request-reply REST-Based e com o uso de operações CRUD.
Justificativa: Senders (Clients) serão Broswers e o Receiver (Server) será implementado com a utilização de Node.JS devido a algumas vantagens fornecidas por essa tecnologia, como:

  • IO não-bloqueante devido ao event loop nativo que nunca para de executar e controla todas as requisições lidando com tarefas em concorrência; simplicidade; Javascript everywhere (Client and Server side) que reduz a curva de aprendizado; Alta capacidade de escala; Comunidade ativa; Adequação à proposta do projeto, entre outros.

OBS: Para suportar as necessidades do projeto algumas tecnologias que usaremos (Back) serão:

  • MySQL Database; Redis; Passport; Express; BodyParser; Crypto; Nodemon; Loadtest; etc.
  • Além de tecnologias secundárias (Front):
  • Pug Template Engine; Jquery; Bootstrap.

Funcionalidades: - (Em edição)
As funcionalidades passíveis de serem realizadas neste sistema são: (Editar)
1-Login e Autenticação de usuarios do tipo Secretaria e Responsável com dados persistidos no banco de dados MySQL com o uso do Passport.JS
2- Estabelecimento de Sessão após Login para os tipos Secretaria e Responsável com o uso do Express Session
3- Cadastro de estudantes e responsáveis (persistência em base de dados MySQL) restrito apenas a usuários do tipo Secretaria
4- Consulta de turmas (relação de alunos da turma) persistidas no banco de dados MySQL restrito apenas a usuários do tipo Secretaria
5- Consulta de frequencia de um dependente (estudante) restrito ao responsável de aluno cadastrado
6- Chat Real Time para realização de reuniões com o uso da tecnologia Socket.io

Não funcionais - (Em edição)
1- A senha dos usuários será persistida de forma criptografada na base de dados em SAH1 com chave e com o uso do Crypto.
2- Para manter e impedir que o servidor saia do ar será utilizado a ferramenta Forever que monitora o servidor realizando pings e a reestarta caso verifique que a mesma esta "fora do ar"
3- Para instanciar novos processos da aplicação e trabalhar de forma distribuída usando a mesma porta da rede e melhorando a perfomance será utilizado o módulo cluster para instanciar um maior nº de processos (quantidade de núcleos do processador do servidor).
4- Será realizado um comparativo (benchmark) para analisar e mensurar o desempenho e comportamento da aplicação em dois cenários: Utilizando cluster e também sem cluster, levando-se em conta concorrência (clientes iniciados em paralelo), número de requisições por segundo e outros parâmetros. Será utilizada a ferramenta loadtest para a ação.
5-

Contato: alexandresantosti@hotmail.com