Skip to content

Instantly share code, notes, and snippets.

@molavec
Created April 15, 2020 01:15
Show Gist options
  • Save molavec/56251f415774bec5e536d09b95670e0e to your computer and use it in GitHub Desktop.
Save molavec/56251f415774bec5e536d09b95670e0e to your computer and use it in GitHub Desktop.
Idea Datainer

Datainer

The data container for lazy developers!! It's like wordpress of data.

Pensado para desarrolladores que no quieren lidiar con la infraestructura de almacenamiento.

Aplicacioens

  • Gestionar informaci贸n financiera
  • Dom贸tica.
  • Agricutura
  • Miner铆a
  • La wea 馃嚚馃嚤 que quieras desarrollador 馃 flojo 馃挭!!

Descripci贸n

Los datos provenientes de distintas fuentes se gestionan mediante contenedores. Estos contenedores, conectan plugins que ejecutan acciones sobre los datos.

Por ejemplo un contenedor weather-saver con el que se obtiene la temperatura desde un API podr铆a conectar 3 plugins de la siguiente forma:

weather-api -> temperature-parser -> one-file-per-day

Contenedores

Los contenedores configuran la conexi贸n entre los distintos plugins y pueden ser construidos mediante archivos de configuraci贸n.

Los contendores son configurados en el archivo config.yaml ubicado en la ra铆z del proyecto.

/plugins
/src
.gitignore
config.yaml
app.js

La siguiente configuraci贸n construye un contenedor conectando los plugins de la siguiente forma:

version: "1"

containers:

  - weather-saver:
      name: "Weather Getter"
      description: "Obtain weather info for Vi帽a del Mar and save it one file per day."
      source: weather-api
      database: one-file-per-day
      managers:
        - temperature-parser:
            input: weather-api
            output: one-file-per-day

Visualmente se podr铆a describir el contenedor de la siguiente forma: weather-saver: weather-api -> temperature-parser -> one-file-per-day

Plugins

Son modulos que contienen el c贸digo y los archivos de configuraci贸n necesarios que ejecutan las acciones de gesti贸n de los datos. La idea es que los plugins sean los que realicen las acciones sobre los datos y se puedan comunicar entre ellos.

Los plugins se almacenan en la carpeta plugins:

/plugins
  /one-file-per-day
  /temperature-parser
  /weather-api

Un plugin deber铆a tener por lo menos un index.js, config.yaml y Readme.md

/plugins
  /one-file-per-day
    /config.yaml
    /index.js
    /README.md

Los plugins que son desarrollados deben obtener desde config.yml y las acciones se deben programar en el index.js.

Tipos de plugins

Los plugins pueden ser de tres tipos:

Data Sources

Fuentes de datos. Pueden ser APIs, Webhooks o incluso otro tipo de conectores como Sockects.

###聽Managers Prosesan los datos y realizan acciones sobre ellos. Pueden ser automatizaciones, webhooks que conecten a otras APIs, plugins que procesen informaci贸n para ser desplegadas en interfaces gr谩ficas.

Databases

Lugar en el que se almacene la informaci贸n requerida.

Plugins por defecto

  • Webhooks: Provenientes desde otros servidores o dispositivos.
  • APIs: Se configuran consultas desde otros dispositivos.
  • Save in Object: Almacena los datos en un objeto.

Ejemplo de acciones necesarios para a帽adir un plugin

Por ejemplo si un usuario (desarrollador) desea...

Gestionar datos obtenidos desde un APIs debe:

1.- Descargar y a帽adir la carpeta del plugin el plugin a la carpeta de plugins. 2.- Personalizar las configuraciones requeridas en el archivo "config.yaml". 3.- A帽adir el plugin en alguno de los contenedores en el archivo "config.yaml" del directorio raiz.

Gestionar datos recibidos desde un Webhook debe:

1.- Descargar y a帽adir la carpeta del plugin el plugin a la carpeta de plugins. 2.- Personalizar las configuraciones requeridas en el archivo "config.yaml". 3.- A帽adir el plugin en alguno de los contenedores en el archivo "config.yaml" del directorio raiz.

Notas adicionales

  • Gestion de usuarios b谩sica mediante archivos de configuraci贸n y/o variables de entorno.
  • Los datos simplemente almacenan en memoria (RAM). En caso querer utilizar un sistema persistente se debe realizar mediante plugins.

Ideas "comerciales":

  • (Plugin) Realizar pruebas unitarias: Por ejemplo generar una zona para ejecutar un c贸digo que parsee la informaci贸n. En caso de querer enviar a otro servidor se debe pagar. En caso de ocupar mucha CPU se debe pagar.
  • (Plugin) Automatizaciones: (En caso de querer reenviar a Base de datos se debe pagar).
  • (Plugin) Almacenar logs de errores: Destacar palabras claves como Error, warning, etc. Generar un cuadro para insertar un JSON de prueba, similar al que llegar铆a desde el webhook.
  • (Plugin) Gesti贸n de usuarios: Similar a los que
  • (Plugin) A帽adir plugins que consulten otras APIs para potenciar los datos capturados por los dispositivos propios.
  • (Plugin) Google Sheet: envia los datos a una hoja de Google Sheet.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment