Changelog
Todas as mudanças notáveis neste projeto serão documentadas nesse arquivo.
O formato é baseado em Keep a Changelog, e este projeto adere ao Versionamento Semântico.
Não-lançado
Relação de versões de microsserviços:
REST- v0.3.2RUNONCE- v0.3.0USER- v0.3.1SESSION- v0.1.3DISPATCH- v0.1.1- Front-End - v0.1.1 (pré-alfa)
Adicionado
- Geração de imagens: Reabilitado target de compilação para ARM64.
- Geração de imagens: Adicionado script que gera uma working tree limpa ao gerar recipe do Cargo Chef.
RUNONCE: Estruturas para preparação de message broker (virtual hosts e filas fixas).DISPATCH: Criação do microsserviço.- Devcontainers do VSCode: Adicionada configuração inicial (ainda instável).
- Kubernetes: Exposição dos serviços e ferramentas
REST, Grafana e PgAdmin4 nas rotas/api,/grafanae/pgadmin, respectivamente, através do uso de Ingresses. - Kubernetes: Adicionados serviços Prometheus e Grafana, com alguns dashboards padronizados.
- Minerva9: Adicionada documentação para o MVC e repositório do projeto.
- Kubernetes: Adição de configurações para deploy em ambientes IoT.
DATA: Adicionado DTO fixo para retorno de dados de sessão durante login.- REST: API agora possui documentação e ferramentas para teste através de Swagger
e RapiDoc (respectivamente através das rotas
/swaggere/rapidoc). - Sonar: Adicionados arquivos de configuração do SonarQube para deploy em Kubernetes.
- Testes: Adicionada configuração (projeto e pipeline de testes) para deploy dos dados de testes e coberturas para o Sonar, via Tailscale.
- Testes: Adicionada documentação individual sobre testes, principalmente testes de carga.
- Sonar: Adicionada documentação sobre Quality Gates do projeto.
Modificado
- Rust: Define versão 1.65.0 para todo o projeto.
RUNONCE: Spinlocks de aguardo de disponibilidade de serviços agora realizam sleep assíncrono de dois segundos após cada falha.RUNONCE: Spinlocks de disponibilidade agora também operam de forma assíncrona.- Kubernetes: Ajustes nos Ingresses existentes para que funcionem adequadamente, através de Traefik.
- Kubernetes: Ajustes nas configurações de deploy para que haja menos arquivos.
- Kubernetes: Ajustes nos limites de réplicas e de recursos requisitados para alguns serviços.
- MongoDB: Downgrade para versão 4.
- Tonic atualizado para v0.8.2.
- Prost atualizado para v0.11.
- CI/CD: Adicionada dependência do compilador de Protocol Buffers (
protoc), no build via Docker e no ambiente de testes do GitHub Actions. - Compose/Swarm: Exposição das portas do PostgreSQL e do MongoDB para acesso remoto.
- Compose/Swarm: Removidas as ferramentas Mongo Express, Redis Commander e pgAdmin4, já que essas configurações são pensadas primariamente como debug. Para monitorar e inspecionar o MongoDB, o Redis e o PostgreSQL, veja ferramentas ad-hoc como MongoDB Compass, RESP.app ou DBeaver, respectivamente.
- PostgreSQL: Atualizado para versão 15.
- Documentação: Adicionados diagramas separados para cada deployment no Kubernetes, bem como um diagrama geral da arquitetura do mesmo.
REST: Requisições agora exigem token através de Bearer Token.REST: Requisições agora demandam tenant no início das rotas.REST: Todas as rotas agora possuem tipos de resposta bem-definidos, possibilitando extração de schema para OpenAPI.REST: Alteradas as variáveis de ambiente designando profile e nível de log do Rocket nos vários tipos de deploy (local, Compose, Swarm, K8s)
Consertado
USER: Ao remover um usuário, envia mensagem requisitando remoção das sessões do mesmo (cache e coleção de sessões).USER: Caso um usuário falhe em ser criado (ao final da inserção), será considerado como se já existisse.REST(K8s): ConfigMap próprio estava sendo ignorado e agora é utilizado.REST: A API agora é capaz de lidar com a exposição de suas próprias rotas sob um endpoint específico (como/api, por exemplo; isso também funciona para a especificação OpenAPI e para Swagger e Rapidoc).
Removido
- Removidos projetos Rust de módulos ainda não-iniciados, que causavam lentidão desnecessária na compilação.
REST: Removidos exemplos de requisições na documentação das rotas (prefira a documentação via Postman ou use Swagger ou RapiDoc).REST: Removidas cores no texto do console durante deploy em k8s.
Segurança
- Chaves dos dados de sessão armazenados no Redis agora são codificados usando Base64 para reduzir legibilidade.
Problemas conhecidos
- A ferramenta Redis Commander conhecidamente funciona apenas em arquitetura AMD64, o que inviabiliza seu deploy no Kubernetes em ambientes ARM. Isso significa que clusters com o Minerva que sejam totalmente configurados em arquitetura ARM perderão alguma observabilidade quanto ao Redis. Adicionalmente, essa limitação também foi refletida na configuração da ferramenta via k8s.
- As configurações atuais para os Ingresses estão muito relacionadas ao que é necessário para realizar deploy em K3s, com Traefik sendo utilizado como backend para Ingresses. Isso inviabiliza um pouco o uso de Minikube e Microk8s.
- Builds de imagens Docker com Rust quebram o Qemu com uso excessivo de memória,
caso a variável de ambiente
CARGO_NET_GIT_FETCH_WITH_CLInão esteja definida comotrue.
v2 - 2022-07-05
Relação de versões de microsserviços:
USER- v0.2.2SESSION- v0.1.2RUNONCE- v0.2.1REST- v0.2.2- Front-End - v0.1.1 (pré-alfa)
Adicionado
SESSION: Alteração do serviço para abrigar uso de cache via Redis;REST: Catchers para tipos de retorno comuns e retorno genérico padrão;- Documentação: Adição de diagramas iniciais de caso de uso e sequência;
- Projeto: Adição de CHANGELOG e regras de versionamento semântico.
Modificado
USER: Alteração do nome do serviço deUSERSparaUSER, evitando maiores enganos;- Geração de Imagens: Dockerfile para gerar imagens agora foi unificado, incluindo compilação do frontend também no script, e agora utiliza BuildKit por padrão;
- Geração de Imagens: Imagens Docker agora são geradas usando Alpine Linux como base, reduzindo tamanho e footprint em deploys no Compose/Swarm/K8s.
Consertado
REST: Erros na conexão com um microsserviço agora retornam um erro 503 (Recurso Indisponível);- Documentação: Problema na exportação de diagramas usando PlantUML no Github Pages.
Removido
- Documentação: Removido o Dockerfile específico para PgAdmin4. A partir de agora, será usada a imagem oficial do PgAdmin4, e o arquivo de configuração será montado como necessário (via arquivos de configuração do Docker Compose e do Docker Stack, ou via ConfigMap no K8s).
Segurança
- Geral: Removida a dependência da crate
rustc-serializena configuração da cratechrono(em confirmidade com alerta Dependabot), para todos os módulos.
Problemas conhecidos
- Geração de Imagens: O target para ARM64 na criação das imagens Docker foi desabilitado até que seja corrigido um bug no BuildKit que faz com que o Qemu consuma RAM arbitrariamente ao realizar compilação via emulação de hardware.
v1 - 2022-06-17
Relação de versões de microsserviços:
USERS- v0.2.1SESSION- v0.1.1RUNONCE- v0.2.0REST- v0.2.0- Front-End - v0.0.1 (pré-alfa)
Adicionado
- Criação de schemas do banco de dados relacional (PostgreSQL 14);
- Criação das coleções do banco de dados não-relacional (MongoDB 5);
- Adição de protocol buffers;
- Adição do microsserviço gRPC
USERS; - Adição do microsserviço gRPC
SESSION; - Adição da base para alguns outros microsserviços;
- Adição da documentação básica;
- Adição das bibliotecas
DATAeRPC; - Adição do microsserviço gRPC
REST(Rocket v0.5.0-rc.2); - Adição de rotas de autenticação e CRUD de usuários;
- Adição de pooling de conexões com o banco de dados não-relacional;
- Adição de logs para operações de CRUD de usuários e de sessão;
- Adição de configuração de teste para Docker Compose;
- Adição de configuração de deploy para Docker Swarm;
- Adição de configuração de deploy para Kubernetes;
- Adição de conceito básico de Front-End (com Flutter 3.0);
- Adição de automatização de testes;
- Adição de geração de documentação (mdBook,
cargo doc,flutter doc) via GitHub Pages.