Especificação do Projeto
Projeto de Cloud: SSC0158 - 2023
O projeto da disciplina deve envolver uma solução funcional de aplicação integrada (software e hardware) no contexto de Cloud Computing. Para o desenvolvimento da solução, a turma será dividida em grupos com 4 integrantes.
Cada grupo terá acesso a recursos computacionais que envolvem:
Acesso a infraestrutura do LaSDPC (Cloud) para a integração da solução proposta, se for o caso escolhido pelo grupo
Outros materiais (depende da disponibilidade)
O Projeto
Propõe-se a utilização de um ambiente de Computação em Nuvem no LaSDPC com as ferramentas de infra lá dispostas relacionada à infraestruturas
E propõe-se o estudo, instalação, configuração e gerenciamento de uma plataforma de controle de fluxo de dados no LaSDPC gerados por sensores distribuídos. Esta plataforma é o Kafka e todos os grupos devem utilizá-la. (PaaS)
O estudo de caso será baseado na recepção de dados vindos do broker do Mosquitto e devem ser integrados com uma infraestrutura do Kafka. Ou, de API’s remotas, como Twitter, OpenWeatherMap, etc.
Objetivos
Desenvolver soluções distribuídas para processamento de dados em larga escala.
Do Desenvolvimento do Projeto
Para desenvolver o projeto, cada grupo deve ter especial atenção para a fases a seguir:
Fase 01: Definição do fluxo dos dados dentro do sistema nas vms do LaSDPC e opcionalmente em ambientes de Cloud como GCP, AWS, Azure e Digital Ocean.
Como os dados são provenientes de uma fonte externa, deve ser mapeado o fluxo interno do dado. Por quais partes da arquitetura e como ele se move dentro do sistema. Podem ser utilizados desde fluxogramas a diagramas da UML.
Fase 02: Protocolos de comunicação que devem ser utilizados.
Definir os protocolos de comunicação que serão utilizados na aplicação. Esses protocolos podem incluir o MQTT, REST, SOAP etc.
Fase 03: Linguagens de Programação / Sistema Operacional / Frameworks de Desenvolvimento
A plataforma para gerenciar o fluxo de dados é o Kafka, o qual permite a implementação do produtor e do consumidor em diferentes linguagens de programação. Além disso, a escolha de linguagens, frameworks podem ser definidas pelos grupos para trabalharem da forma que acharem melhor. Basta justificar a utilização das ferramentas escolhidas por vocês.
Fase 04: Integração com a nuvem computacional
O grupo deve desenvolver a aplicação e subir para o ambiente computacional do LaSDPC primeiro. Uma nuvem pública como o AWS, Google Cloud ou Microsoft Azure também pode ser usada em seguida, replicando o que já foi feito na nuvem do LaSDPC. Qualquer ação envolvendo a nuvem deve ser associada ao que foi definido na primeira fase.
Fase 05: Testes de Funcionalidade
Em um dos checkpoints os grupos deverão apresentar os resultados de funcionamento da solução proposta.
O que deve ser entregue e como?
Um relatório descrevendo a solução completa
Todos os códigos da solução.
Todo o desenvolvimento e os testes relativos ao projeto devem ser realizados utilizando o material e recursos disponíveis para os grupos
Sugestões de Ferramentas
Plataforma de Gerenciamento de Fluxo de Dados |
Kafka |
Linguagem de Programação (C#, PHP, Java, Python, ...) |
Banco de Dados (MongoDB, Cassandra, ...) |
... |
O que será cobrado em cada checkpoint ?
- | Checkpoint 1 27/03 | Checkpoint 2 24/04 | Checkpoint 3 05/06 |
Projeto de Plataforma de Fluxo de Dados | Entrega do relatório de tecnologias selecionadas no máximo duas páginas; Entregar arquitetura definida para o projeto da plataforma (Fluxograma e UML, se houver); | Entrega do código já desenvolvido no gitlab do grupo com a forma de execução do README.md; | Entrega de funcionalidades adicionais depois do checkpoint02 |
Relatório | - | - | Entrega ao menos do esqueleto do relatório com a indicação das seções que deverão ser escritas para a entrega da versão final |
Da Estruturação do Relatório
O relatório, caracterizando a introdução sobre o problema, os resultados obtidos e as soluções deve ter no mínimo 8 páginas e no máximo 15 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
O relatório deve seguir o template da SBC https://www.sbc.org.br/documentos-da-sbc/category/169-templates-para-artigos-e-capitulosde-livros
- O relatório deve ter no mínimo as seguintes seções (além de ttítulo, autores, emails)
- Introdução
- Motivação e Objetivos
- Descrição do Problema
- Metodologia de Desenvolvimento
- Resultados
- Conclusão
Do Envio do Relatório
O relatório deve ser enviado via Moodle conforme combinado no primeiro dia de aula, obedecendo o prazo final.
O relatório deve apresentar a forma de execução da solução e com detalhes (README)
Relatório postado depois do prazo não será corrigido, e invalidará o projeto do grupo.
Coloque o arquivo do relatório em um .ZIP, com a seguinte estrutura:
projeto-cloud2022-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 solução no README.md.
Arquivos de configurações, etc., devem ser enviados para um repositório do gitlab de cada grupo.
A URL para o repositório deve estar presente no relatório. Relatórios sem a URL do repositório da solução, terão penalização na nota: (-5 pontos)
Do Envio dos Códigos
Os códigos devem apenas estarem disponíveis no gitlab. O limite de postagem dos códigos (apenas no gitlab - NÂO ENVIAR CÓDIGOS no e-disciplinas) deve obedecer o mesmo prazo de envio do relatório. Por exemplo, não serão aceitos códigos que foram postados depois do prazo de postagem do relatório no Moodle. A data de organização dos códigos no gitlab, 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.
Como será a Avaliação do Projeto?
A avaliação da disciplina constará de grupos de notas, distribuídas com o seguinte percentual e atores.
Das Notas e Pesos
Relatório
Peso: 20%
Quem Avalia: Professor da disciplina ou Outro docente convidado
Códigos
Peso:60%
Quem Avalia: Professor da disciplina ou Outro docente convidado
Entrega
Peso: 20%
Quem Avalia: Professor da disciplina ou Outro docente convidado
Das Perguntas
Cada grupo deverá responder 4 perguntas, as quais serão feitas pelo professor, ou docente convidado, no dia da apresentação dos posters.
Um integrante de cada grupo responderá 1 única pergunta, sobre qualquer assunto relativo ao escopo do projeto desenvolvido.
Cada pergunta equivale a 25% da nota geral do grupo. Por exemplo: A pergunta respondida corretamente pelo integrante não prejudicará a nota geral o grupo.
Ela ou vai incrementar apenas a nota do integrante em 25% ou decrementar a sua nota em 25%.
Entrega Final