Blog

Plugdata, un nuevo framework basado en nodejs, angular y mongoDB

INTRODUCCIÓN

Hoy os queremos presentar la plataforma en la que estamos trabajando y que creemos va a marcar un antes y un después en la importación, transformación y la publicación de datos.

El framework se basa en un listado de módulos con objetivos concretos. Esto hace posible que en cada implementación realizada con el framework sólo se utilicen las librerías necesarias y así evitar carga innecesaria, a parte de otros beneficios como la separación de conceptos y el control total en el desarrollo.

FILOSOFÍA DE LA PLATAFORMA

  • Debe ser una plataforma totalmente colaborativa y de código libre.
  • La documentación debe ser lo más clara y directa posible, con ejemplos, GIFs, vídeos, y cualquier elemento que pueda ayudar a mejorar tanto la barrera de entrada como la curva de aprendizaje.
  • Tendrá el número mínimo indispensable de librerías, consideramos que hoy en día se depende demasiado de librerías externas hasta para las tareas que con unas pocas líneas de código se podrían hacer, lo que conlleva que los proyectos pesen mucho más de lo que deberían y carguen código innecesario.
  • Enfoque especial en el rendimiento y la velocidad.
  • Sistema de extensiones que permita al programador modificar cada elemento de la administración añadiendo sus propias implementaciones.
  • Facilitar la vida del programador todo lo posible, con generadores de código, buena documentación, utilidades para las tareas comunes, facilidad a la hora de extender, etc.
  • Como práctica común en los paquetes npm, utilizaremos un control de versiones semántico para todos nuestros paquetes, y todos los paquetes tendrán la misma versión. Es decir, que si subimos de la versión 2.1.0 a 2.1.1, todos los paquetes relacionados con plugdata tendrán esta nueva versión
  • Hoy en día la seguridad es algo que hay que tener en cuenta al mismo nivel que cualquier otra característica, por ello va a haber un gran enfoque en mantener unas librerías actualizadas y seguras, y estar atento a las últimas técnicas de seguridad web.

PRINCIPALES TECNOLOGÍAS

  • NodeJS: Nos permite tener un servidor web ligero con una tecnología que está en auge y con mucho futuro.
  • Typescript: Creemos en un código claro y limpio, y consideramos que Typescript ayuda considerablemente en esta tarea.
  • MongoDB: Aunque en un futuro soportaremos otras bases de datos, MongoDB tiene una excelente sintonía con Javascript aparte de poder manejar de manera eficiente una considerable cantidad de datos y con posibilidad de escalar.
  • Angular: Sólo se usará para el panel de administración, el usuario podrá usar la tecnología que considere para su front, pero después de mucho investigar hemos visto en Angular la capacidad de soportar la robustez y flexibilidad necesaria para el panel de administración.

MÓDULOS

@plugdata/core

https://nodei.co/npm/@plugdata/core.png?downloads=false&downloadRank=false&stars=false

Módulo principal que será necesario para cualquier implementación, sus principales características son:

  • Inyección de dependencias: Es una implementación personalizada basada en una sintaxis decoradora, y será la piedra angular de todos nuestros módulos y productos. Esta sección está relacionada con nuestra filosofía de API consistente, ya que todo será administrado y configurado por el contenedor. Está influenciado por typedi, pero con una funcionalidad ampliada para satisfacer nuestras necesidades.
  • Configuración: Habrá un archivo de configuración principal que tendrá todo lo necesario para la configuración de otros paquetes, implementaciones personalizadas y futuros productos. Se basa en archivos JSON, que podrán hacer referencia a variables de entorno y tener diferentes versiones para diferentes entornos (producción, pre-producción, desarrollo, etc...).
  • Logs: Para todos nuestros registros usaremos pino, ya que se ajusta a nuestra filosofía y tenemos una gran conectividad con otros productos como Elastic logs.
  • Cliente Http y Https: Tenemos un cliente http/s liviano que es un simple contenedor promisificado del cliente http/s de Nodejs con métodos sencillos para realizar llamadas REST JSON.
  • Manejador de eventos **Próximamente**: Es una adaptación de EventEmitter3 a nuestro sistema de inyección de dependencias. Tiene casi la misma API que los eventos Node JS pero con algunas adiciones como contextos, por lo que no será necesario llamar a .bind(this), y se eliminarán algunos métodos innecesarios para un mejor rendimiento.
  • Validación de objetos: Una integración con nuestra inyección de dependencia de AJV que admite el draft-07 of JSON Schema y es una de las bibliotecas mantenidas más rápidas y mejores para este propósito.
  • Utilidades genéricas: Durante el desarrollo de varios proyectos, hemos estado reuniendo algunas utilidades de uso común, principalmente para la manipulación de objetos y promises, y otros envoltorios de NodeJS para cosas como llamadas al sistema de archivos.
  • Tests: Es una biblioteca de prueba simple que utiliza la Node JS assert library para su validación y se basa en clases de Typescript con una integración a nuestro sistema de inyección de dependencias. No pretende ser una biblioteca de pruebas con todas las funciones como las ya existentes, y sabemos que es una elección personal de cada equipo, por lo que ofrecemos sólo una posibilidad para pruebas simples, y la usamos para todas nuestras pruebas internas, por lo que También tendrá integración con otros paquetes de datos y web.

@plugdata/data

https://nodei.co/npm/@plugdata/data.png?downloads=false&downloadRank=false&stars=false

En este módulo se incluirá todo lo relacionado con la persistencia de datos en cualquier sistema, especialmente en bases de datos SQL y NoSQL.

  • NoSql: Inicialmente soportamos MongoDB dentro de nuestro sistema de inyección de dependencias y sistema de configuración, pero planeamos ir agregando otras implementaciones específicas para otras bases de datos.

  • ORM **Próximamente**: Para nuestra gestión de bases de datos SQL usamos TypeORM que es un ORM con todas las funciones para las bases de datos SQL más utilizadas. Esto está totalmente integrado con nuestra configuración y sistemas de inyección de dependencias.

  • Impration/exportation **Próximamente**: Utiliza las utilidades de TypeORM para crear JSON para la importación / exportación de datos entre diferentes sistemas, pudiendo seleccionar las tablas y colecciones con el soporte de consultas.

@plugdata/web

https://nodei.co/npm/@plugdata/web.png?downloads=false&downloadRank=false&stars=false

Aquí encontraremos todo lo necesario para la comunicación en web, como por ejemplo la generación de APIs REST.

  • Web framework: Para la creación de APIs.

  • OAS 3: Creemos que se necesita una buena documentación para una buena API, evento si es solo para uso interno. Esto agrega soporte para una fácil creación de archivos de descripción de OAS 3, pudiendo agregar pequeños trozos de documentación para cada operación creada, por lo que se actualiza fácilmente al mismo tiempo que cambia el código, y se puede versionar.

  • Login **Próximamente**: Fácil integración de mecanismos de inicio de sesión básicos como basic auth o JWT, pero también fácil de ampliar para estrategias de inicio de sesión personalizadas, y se agregará nuevo soporte en el futuro.

El proyecto se encuentra actualmente en versión beta pero muy pronto lanzaremos públicamente la primera versión para ser usada en producción, apúntate a nuestra newsletter y te mantendremos informado, muchas gracias por tu atención!

Nuestro sitio web utiliza cookies para mejorar su experiencia de navegación. Al utilizar nuestro sitio, usted acepta nuestro uso de cookies. Leer más...