|
Este é o repositório dos arquivos dos alunos do Módulo 7 do curso de Ciência da Computação do Inteli no 3º trimestre de 2023. Durante este trimestre foi desenvolvido um projeto em parceria com a Stone.
- Elias Biondo
- Gabriel Carneiro
- Jonas Viana Sales
- Mateus Soares de Almeida
- Pedro Romão
- Sarah Ribeiro
- Sergio Lucas
Este projeto aborda um desafio comum enfrentado por sites e aplicativos populares, especialmente durante os intervalos comerciais como do Big Brother Brasil (BBB). Durante esses momentos, muitas pessoas acessam o site e o aplicativo da nossa empresa, o que pode causar lentidão e até mesmo falhas no sistema. Nosso objetivo principal é garantir que o desempenho da aplicação seja consistente mesmo quando há um grande número de pessoas tentando usá-la ao mesmo tempo
Para resolver esse problema, estamos criando uma infraestrutura que pode se ajustar automaticamente ao aumento de tráfego. Estamos usando a tecnologia Kubernetes em um ambiente de nuvem (AWS) para garantir que a carga seja distribuída de forma eficiente entre os diferentes componentes do sistema.
Além disso, estamos criando um sistema de teste para simular esses momentos de alta demanda, usando a ferramenta "k6". Isso nos ajudará a garantir que a aplicação possa lidar com picos de tráfego sem problemas.
Os arquivos da documentação deste projeto estão na pasta docs/index.md, e o seu conteúdo é publicado via GitHub Pages.
O artigo deste projeto está no diretório artigo/artigo.md
Este documento descreve as configurações necessárias para o desenvolvimento de uma aplicação que utiliza as tecnologias NestJS para o backend, Next.js para o frontend, RabbitMQ como serviço de mensagens e Docker para o gerenciamento de contêineres. A aplicação é composta por diversas partes que trabalham em conjunto para fornecer uma solução de software completa.
NestJS é um framework Node.js que fornece uma estrutura escalável para o desenvolvimento de aplicativos server-side. Ele utiliza TypeScript como linguagem principal e é conhecido por sua modularidade, facilidade de testes e suporte a várias bibliotecas. No contexto dessa aplicação, o NestJS é responsável por gerenciar a lógica de negócios e a comunicação com o RabbitMQ para processamento de filas.
Next.js é um framework de React que permite o desenvolvimento de aplicações web do lado do cliente e do servidor. Ele fornece recursos como renderização do lado do servidor (SSR) e geração de páginas estáticas, tornando as aplicações web mais rápidas e eficientes. O Next.js é responsável pela interface do usuário da aplicação e pela interação com o backend do NestJS.
RabbitMQ é um sistema de mensagens de código aberto que facilita a comunicação assíncrona entre componentes de uma aplicação distribuída. Ele é amplamente utilizado para processar tarefas em segundo plano, processamento em fila e comunicação entre microserviços. Nesta aplicação, o RabbitMQ é usado para enfileirar e processar tarefas de forma eficiente.
Docker é uma plataforma de virtualização de contêineres que permite empacotar aplicativos e suas dependências em contêineres isolados. Isso facilita a implantação e execução de aplicativos em qualquer ambiente. Neste projeto, o Docker é usado para criar e gerenciar contêineres para o RabbitMQ e outros serviços auxiliares, simplificando o gerenciamento de dependências e ambientes de desenvolvimento.
Para executar a aplicação em seu ambiente de desenvolvimento, siga estas etapas:
-
Certifique-se de ter as seguintes dependências instaladas em seu sistema:
- Node.js: Download Node.js
- npm (Node Package Manager): Normalmente instalado junto com o Node.js
- Docker: Download Docker
-
Clone o repositório do projeto para o seu ambiente local.
-
Navegue até a pasta raiz do projeto.
-
Execute o seguinte comando para iniciar os contêineres Docker que hospedam o RabbitMQ e outros serviços auxiliares:
docker-compose up
Este comando lerá as configurações do arquivo
docker-compose.ymle iniciará os contêineres necessários. -
Agora, você pode iniciar o servidor NestJS e o cliente Next.js. Consulte a [documentação específica](docs/definição_da_aplicação.md] dessas partes da aplicação para obter detalhes sobre como iniciar cada um deles.
- SPRINT 1:
- Entendimento de Negócios
- Entendimento do Usuário
- MVP com deploy da aplicação com arquitetura básica
- Requisitos do Sistema
- SPRINT 2:
- Arquitetura corporativa
- Front-end concluído
- Back-end concluído
- Artigo V1
- SPRINT 3:
- Modelagem e Implementação.
- Relatório Técnico
- Artigo V2.
- SPRINT 4:
- Testes do sistema.
- Definição da aplicação.
- Artigo V3.
- SPRINT 5:
- Refinamentos da aplicação
- Apresentação final
- Artigo Completo
