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
- https://git.embrapa.io
- https://bug.embrapa.io
- https://hit.embrapa.io
- https://backup.embrapa.io
- 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.