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
  2. https://git.embrapa.io
  3. https://bug.embrapa.io
  4. https://hit.embrapa.io
  5. https://backup.embrapa.io
  6. https://hub.docker.com/r/embrapa/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.

GitLab

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 miletones e issues. Fica, portanto, disponível para acesso pelos desenvolvedores.

Sentry

Ferramenta responsável pelo rastreamento de erros (do inglês, error tracking) nas aplicações desenvolvidas, disponível para acesso pelos desenvolvedores.

Matomo

Ferramenta responsável pelo monitoramento e análise estatística de uso das aplicações, disponível para acesso pelos desenvolvedores.

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.