O Embrapa I/O é uma plataforma de software de código-aberto, disponível publicamente, composta por diversos componentes desacoplados:

Arquitetura do Embrapa I/O

Os círculos numerados representam as interfaces disponíveis para os desenvolvedores, sendo elas:

  1. https://dashboard.embrapa.io - Painel de Controle / Dashboard
  2. https://git.embrapa.io - GitLab
  3. https://bug.embrapa.io - Sentry
  4. https://hit.embrapa.io - Matomo
  5. https://log.embrapa.io - Grafana Loki
  6. https://code.embrapa.io - SonarQube
  7. https://iot.embrapa.io - ThingsBoard
  8. https://backup.embrapa.io - Backup
  9. 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.