O Embrapa I/O é uma plataforma de software de código-aberto, disponível publicamente, composta por diversos componentes desacoplados:
Os círculos numerados representam as interfaces disponíveis para os desenvolvedores, sendo elas:
- https://dashboard.embrapa.io - Painel de Controle / Dashboard
- https://git.embrapa.io - GitLab
- https://bug.embrapa.io - Sentry
- https://hit.embrapa.io - Matomo
- https://log.embrapa.io - Grafana Loki
- https://code.embrapa.io - SonarQube
- https://iot.embrapa.io - ThingsBoard
- https://backup.embrapa.io - Backup
- https://hub.docker.com/r/embrapa/releaser - Releaser
Cada componente da big picture acima é descrito a seguir:
Dashboard
Trata-se de uma single-page application (ou aplicação Web responsiva) desenvolvida em JavaScript utilizando o framework VueJS com Vuetify, permite aos desenvolvedores de ativos digitais terem acesso a todos os projetos dos quais são membros da equipe e suas aplicações. Está, portanto, disponível como uma interface de acesso ao desenvolvedores.
Core
Aplicação de backend que implementa a API de interface com a Dashboard. Esta aplicação, implementada em NodeJS com Express e Mongoose, persiste os dados em um banco MongoDB e no mensageiro (broker) implementado em Redis.
Autômato Genesis
Este autômato, implementado em PHP, é responsável pela criação de grupos e repositórios no GitLab, organizações e projetos no Sentry e grupos e sites no Matomo.
Autômato Deployer
Este autômato, implementado em PHP, é responsável pelo deploy das aplicações nos clusters remotos.
Autômato Doctor
Este autômato, implementado em PHP, é responsável pelo monitoramento e gestão das instâncias nos clusters remotos. Também permite executar o backup por demanda dos dados destas instâncias, disponibilizando uma interface de acesso a estes arquivos.
Autômato Router
Este autômato, implementado em PHP, é responsável pelo roteamento, certificados SSL e balanceamento de carga no acesso às instâncias.
Integrações
A plataforma Embrapa I/O é integrada com várias ferramentas que apoiam as diversas etapas do processos de desenvolvimento de software. É utilizada apenas a variante open source de cada ferramenta, mantida por suas respectivas comunidades.
a. GitLab
O GitLab é a ferramenta responsável pelo armazenamento de gerência de configuração do código-fonte de todas as aplicações. Além disso, nela é realizado o planejamento e acompanhamento dos projetos por meio de milestones e issues.
b. Sentry
O Sentry é a ferramenta responsável pelo rastreamento de erros (do inglês, error tracking) nas aplicações desenvolvidas.
c. Matomo
O Matomo é a ferramenta responsável pelo monitoramento de acessos e análise estatística de uso das aplicações.
d. Grafana Loki
O Grafana Loki é a ferramenta responsável por coletar e indexar os logs (do inglês, logging) de todas as aplicações que estejam hospedadas na rede de clusters da plataforma.
e. SonarQube
O SonarQube é a ferramenta responsável por realizar a análise estática do código das aplicações e gerar relatórios de qualidade apontando problemas de manutenibilidade, confiabilidade e segurança.
f. ThingsBoard
O ThingsBoard é um middleware para internet das coisas (do inglês, Internet of Things - IoT) e é a ferramenta responsável por integrar dispositivos de borda à plataforma Embrapa I/O provendo um repositório para armazenamento de dados dos sensores e a criação de regras de automação para os atuadores.
Releaser
Ferramenta “avulsa” à plataforma, que permite a entrega (deploy) de aplicações em ambientes externos, tal como servidores em data centers de parceiros ou em nuvens privadas. A ferramenta está disponível publicamente para uso pelos desenvolvedores.