📄️ Arquitetura da solução
Arquitetura - V3
📄️ Dashboard
Um dashboard permite que usuários explorem, visualizem e compartilhem insights a partir de conjuntos de dados. No caso específico do projeto, com a utilização do Metabase não há a necessidade de conhecimento avançado em SQL ou programação. O Metabase facilita a criação de painéis interativos e consultas personalizadas, tornando a análise de dados mais acessível para uma variedade de usuários. Nesse projeto, ele é utilizado para a visualização das entidades presentes no banco de dados, criação de gráficos, mapas e outros insights. Abaixo uma visão geral do dashboard criado:
📄️ Frontend
Introdução
📄️ Backend
O código contido neste recorte do projeto representa o sistema de simulação, mensageria, visualização (Metabase), servidor web e banco de dados NoSQL ( MongoDB ) de um projeto de Hiperconectividade para Cidades Inteligentes. Este projeto foi construído conforme as golang-standards . Ademais, também foi implementada, dado requisito de alta escalabilidade definido para o projeto, a arquitetura hexagonal
📄️ Banco de dados
O MongoDB oferece uma solução flexível e escalável para projetos que demandam agilidade na manipulação de dados. Sua estrutura baseada em documentos JSON permite adaptar o esquema conforme necessário, enquanto sua capacidade de escala horizontal e desempenho rápido o tornam ideal para lidar com grandes volumes de dados e cargas de trabalho intensivas. Além disso, sua ampla gama de recursos, suporte a consultas complexas e robusto ecossistema de ferramentas e comunidade contribuem para sua popularidade e eficácia em diversos cenários de aplicativos que buscam alta escala e disponibilidade de dados. Com base nisso embasamos a nossa escolha por essa estratégia em detrimento da centrada em um banco de dados relacional.
📄️ Simulador MQTT
O Simulador MQTT cumpre um papel fundamental no desenvolvimento da solução aqui apresentada, já que permite a simulação de uma grande massa de dados sendo transmitida através de tópicos MQTT, sem a necessidade de dispositivos físicos.
📄️ Test-Driven Development
A adoção do TDD (Desenvolvimento Orientado a Testes) é uma prática que oferece inúmeros benefícios no processo de desenvolvimento de software. Além de proporcionar feedback imediato sobre as novas funcionalidades, como mencionado anteriormente, o TDD promove a criação de um código mais limpo. Isso ocorre porque os desenvolvedores escrevem códigos simples, focados na passagem dos testes, resultando em uma base de código mais clara e fácil de manter. Essa abordagem não apenas acelera o ciclo de desenvolvimento, mas também contribui para a sustentabilidade e qualidade a longo prazo do software. Segue abaixo uma breve explicação de como esse projeto implementa isso e as instruções para comprovar a esteira de testes desenvolvida.