Projeto da Disciplina - Especificação e Entrega Completa (Relatório, Códigos)
Especificação do Projeto da Disciplina
Informações Iniciais
O projeto da disciplina deve envolver uma aplicação integrada (software ) no contexto de sistemas distribuídos. Para o desenvolvimento da solução, a turma será dividida em grupos com 3 integrantes
Proposta: divisão de elementos de uma arquitetura distribuída em quatro etapas de projeto (aplicação, broker, micro-serviço e armazenamento), as quais serão divididas em times pelos grupos. Cada time será composto por 4 grupos os quais serão responsáveis pelo desenvolvimento de cada uma das etapas. Os alunos devem por meio desse desenvolvimento realizar o controle distribuído de processos, outras aplicações e opcionalmente equipamentos, caso desejem desenvolver algo no contexto de IoT. A troca de mensagens entre os componentes pode ser realizadas utilizando: HTTP, TCP, UDP e MQTT.
Objetivo: apresentar as etapas de criação de uma arquitetura distribuída e estimular nos alunos aspectos acerca do desenvolvimento de soluções conjuntas.
Arquitetura: A comunicação entre os componentes da arquitetura pode ser visualizado conforme a imagem abaixo:
A camada de aplicação deve se comunicar com o microsserviço e se necessário com um banco de dados (relacional ou baseado em documentos).
O Broker deve orquestrar a troca de mensagens utilizando os protocolos acima sugeridos.
A camada de microserviço recebe mensagens do Broker e realiza o tratamento adequado e consequentemente solicitando a gravação no banco de dados.
A camada de armazenamento é responsável por salvar os dados tratados pelo microserviço.
A camada de segurança é responsável pela transição desses dados de forma segura. Ela está em cada etapa desa arquitetura. Nesse ponto é importante se atentar a confiabilidade, autenticidade e integridade dos dados (opcional).
Avaliação: A avaliação será realizada por grupo. Será avaliada a capacidade do grupo de desenvolver as etapas conforme os critérios abaixo:
Aplicação: quão bem a interface foi construída; se a interface está realizando a comunicação com o micro-serviço; e, se está exibindo as informações do broker corretamente; relatório técnico (no github) explicando o que foi feito e as tecnologias utilizadas; Container do Docker com as configurações de instalação e execução.
Broker: instalação do Broker no servidor disponibilizado; configuração do broker; e, relatório técnico (no github) explicando o que foi feito e as tecnologias utilizadas; Container do Docker com as configurações de instalação e execução.
Armazenamento: modelo do banco de dados; definição dos dados; e, relatório técnico (no github) explicando o que foi feito e as tecnologias utilizadas; Container do Docker com as configurações de instalação e execução.
Micro-serviço: coordenar outros componentes; gerenciar as inserções no banco de dados; conexão com o broker MQTT; e, relatório técnico (no gitlhub) explicando o que foi feito e as tecnologias utilizadas; Container do Docker com as configurações de instalação e execução.
Segurança: escrita de um artigo descrevendo como a segurança se aplica em cada uma das etapas descritas, bem como exemplos de algoritmos e métodos utilizados (opcional).
Sugestões de Ferramentas:
Aplicação | Broker | Armazenamento | Micro-Serviço | Segurança (opcional) |
Android (Java, Kotlin, Flutter, React Native, ...) | Mosquitto | MySQL | PHP / Laravel Framework | Segurança no protocolo MQTT |
IOS (Swift, Flutter, React Native, ...) | HiveMQ Community Edition | MongoDB | Java | Algoritmos de criptografia utilizados para seguranças de dispositivos físicos |
Interface WEB (HTML, CSS, JS, ...) | Moquette | PostgreSQL | C# | Segurança na troca de mensagens de dispositivos |
Desktop (Java, C#, ...) | ... | ... | Python | ... |
... | ... |
Avaliação:
- | Checkpoint 1 | Checkpoint 2 | Checkpoint 3 (Entregar junto ao projeto final) |
Aplicação | Seleção da linguagem e tecnologia;
Entrega de um trabalho escrito de até duas páginas sobre a tecnologia, especificando vantagens e desvantagens. | Entrega do código com conexão a um broker. Sugestões: | Entrega do código completo, com o broker do time; Entrega do resumo completo; Container do docker; |
Broker | Seleção da ferramenta do servidor de broker;
Entrega de um trabalho escrito de até duas páginas sobre a tecnologia, especificando vantagens e desvantagens. | Broker executando corretamente no servidor do ICMC; | Entrega do vídeo; Entrega do resumo completo; Container do docker; |
Armazenamento | Seleção da ferramenta do servidor de armazenamento; Entrega de um trabalho escrito de até duas páginas sobre a tecnologia, especificando vantagens e desvantagens. | Modelo de dados. SQL de criação de tabelas, banco e relacionamentos; ou comandos semelhantes de outros banco de dados. | Entrega do vídeo; Entrega do resumo completo; Container do docker; |
Micro-Serviço | Seleção da linguagem e do framework de desenvolvimento. Entrega de um trabalho escrito de até duas páginas sobre a tecnologia, especificando vantagens e desvantagens. | Entrega do código, executando em um serviço de broker simulado. | Entrega do código completo, conectando no banco de dados e consumindo o serviço do broker configurado no ICMC; Entrega do vídeo; Entrega do resumo completo; Container do docker; |
Segurança (opcional) | Seleção das tecnologias de segurança que serão estudadas. Entrega de um trabalho escrito de até duas páginas sobre a tecnologia, especificando vantagens e desvantagens. | Apresentar uma ilustração de quais ferramentas de segurança estão sendo empregadas em cada etapa da arquitetura. | Entrega do vídeo; Entrega do resumo completo; Container do docker; |
O que deve ser entregue e como para a solução completa
- Um resumo descrevendo a solução completa (no Github)
- Todos os códigos da solução (no Github)
- Todo o desenvolvimento e os testes relativos ao projeto devem ser realizados utilizando o material e recursos disponíveis para os grupos
- Arquivos e scripts para executar uma instância do docker
- Envio da imagem do docker para o dockerhub
- Da Estruturação do Resumo
- O resumo, caracterizando a introdução sobre o problema, os resultados obtidos e as soluções deve ter no mínimo 5 páginas e no máximo 10 páginas
- Mostrar o problema tratado e explicar detalhadamente a solução desenvolvida. Detalhes técnicos que precisam ser explicados mas vão ultrapassar o limite de páginas do texto, favor colocar a explicação em um anexo ao texto.
- Discuta as soluções, as dificuldades, os resultados obtidos, o hardware utilizado, a metodologia de execução dos experimentos/configurações, etc. Utilizar tabelas e/ou gráficos
Do Envio do Resumo/Relatório
- O resumo deve ser enviado via Moodle conforme combinado no primeiro dia de aula, obedecendo o prazo final.
- O resumo deve apresentar a forma de execução da solução e com detalhes (README)
- Resumo postado depois do prazo não será corrigido, e invalidará o projeto do grupo.
- Coloque o arquivo do resumo em um .ZIP, com a seguinte estrutura:
projeto-sdmc2023-grupoXX
Da Estruturação dos Códigos
- Os códigos precisam ser claros e estarem devidamente comentados
- A solução deve apresentar um tutorial de como interagir com a mesma.
- Arquivos de configurações, etc devem estar devidamente organizados e comentados no github do grupo
- A URL para o repositório dever estar presente no resumo. Resumos sem a URL do repositório da solução, terão penalização na nota: (-5 pontos)
- Meu usuário no Github: jcezarestrella
Do Envio dos Códigos
- Os códigos devem apenas estarem disponíveis no github. O limite de postagem dos códigos (apenas no github - NÂO ENVIAR CÓDIGOS no edisciplinas) deve obedecer o mesmo prazo de envio do resumo. Por exemplo, não serão aceitos códigos que foram postados depois do prazo de postagem do resumo no Moodle. A data de organização dos códigos no github, DEVE ser menor ou igual a data e horário limite de entrega do projeto. Códigos postados depois do prazo não serão corrigidos, e invalidará o projeto do grupo.
Em suas falas e nos slides (se for o caso), devem constar:
- os dados do projeto, como nomes completos, curso, e título do Projeto;
- uma introdução contendo o assunto, a justificativa, o problema e os objetivos do projeto (é bom destacar aqui porque o estudo desse tema é relevante);
- seu referencial teórico, a pesquisa bibliográfica que você realizou;
- um resumo da metodologia empregada;
- os resultados e discussões, com dados gerais e gráficos, se possível (dedique a maior parte do vídeo a esse aspecto);
- uma conclusão;
- agradecimentos.
Como será a avaliação do projeto?
- A avaliação constará de grupos de notas, distribuídas com o seguinte percentual e atores.
Das Notas e Pesos
- Resumo/Relatório
- Peso: 25%
- Quem Avalia: Professor da disciplina ou Outro docente convidado
- Códigos
- Peso:50%
- Quem Avalia: Professor da disciplina ou Outro docente convidado
- Apresentação
- Peso: 25%
- Quem Avalia: Professor da disciplina ou Outro docente convidado