Una pincelada al concepto de microservicios

Recientemente estuve investigando acerca de este tema que me resulta apasionante: ¿Qué son microservicios y cómo podemos diseñar sistemas basados en este concepto?

Muy rápidamente podemos acotar que microservicios es un paradigma de diseño de software que consiste en la división de un sistema complejo en pequeñas unidades funcionales (servicios) que se comunican entre sí por medio de protocolos de intercambio de mensajes muy básicos o “ligeros”.

En el lenguaje técnico, podemos describir una aplicación diseñada en microservicios como lo contrario a una aplicación monolítica, es decir una aplicación diseñada “de una sola pieza”. Veamos…

Tomemos como ejemplo una aplicación para el manejo de inventarios que tiene tres funcionalidades básicas: (1) autenticación de usuarios, (2) administración de catálogo de productos y (3) registro de movimientos de inventario. Mientras que nuestra aplicación monolítica se instala de una única manera, y está hecha en un único lenguaje (Java por ejemplo) cada vez que necesitamos hacer un cambio a alguna de las funciones del sistema, se debe instalar toda la nueva versión de la aplicación monolítica. Digamos que pasamos de la versión 1 a la version 2.

En el caso de una aplicación distribuida en microservicios podemos ver que cada una de las tres funcionalidades propuestas tiene su propia versión y se comunica con las otras en lo que sea necesario nada más. Así cuando tenemos que hacer un cambio en alguno de los servicios (digamos el registro de movimientos) este pasaría a la siguiente versión y los demás se mantienen sin cambio.

Ventajas

Seguidamente enumeramos una serie de ventajas del paradigma de microservicios:

  1. Mayor mantenibilidad y escalabilidad. Los cambios se realizan en unidades funcionales pequeñas y focalizadas.
  2. Cambios pequeños independientes.
  3. Facilidad de aprendizaje. El conocimiento de cada servicio está focalizado en unidades de negocio pequeñas.
  4. Facilidad de puesta en marcha. La puesta en marcha de un servicio no afecta la generalidad del sistema.

Características

Dentro de las principales características de estos componentes podemos mencionar:

  1. Cada componente provee un servicio funcional. Cada componente es un servicio de negocio.
  2. Cada microservicio tiene un bajo nivel de acoplamiento. Se puede hacer cambios a un servicio con un impacto mínimo en los demás.
  3. Cada microservicio es visto como un producto unitario. Tiene su propia versión y espacio de ejecución.
  4. Comunicación minimalista. Se usan protocolos sencillos como REST/HTTP.
  5. Gestión de datos descentralizada. Cada microservicio tiene su propia base de datos.
  6. Se facilita el uso de mtodologías DEVOPS para el desarrollo y mantenimiento de pequeños componentes independientes.

Desventajas y Cuestionamientos

También se han identificado algunas posibles áreas de cuestionamiento para este paradigma:

  1. Se puede facilmente incurrir en un exceso de granularidad.
  2. Se paga un precio en desempeño computacional por la modularización del sistema en general.
  3. La transición de un modelo monolítico a uno de microservicios puede ser extensa.

 

FONA 808 + ARDUINO UNO – FASE 2 (GPS e Internet)

En nuestra primera entrega sobre este tema discutimos cómo conectar un modem FONA 808 de  Adafruit con un ARDUINO UNO para poder realizar operaciones en la red de telefonía movil GSM tales como el envío de mensajes SMS usando una técnica ampliamente difundida denominada comandos AT.

En esta segunda entrega discutiremos otras funciones del FONA 808 tales como la lectura de posición GPS y el envío de mensajes por Internet usando la biblioteca de Adafruit para dispositivos FONA “Adafruit Fona Library”. Continuar leyendo “FONA 808 + ARDUINO UNO – FASE 2 (GPS e Internet)”

ESP8266 – Serial WiFi Logger

En este proyecto corto estudiaremos el uso del módulo genérico ESP8266 como mecanismo inalámbrico para el registro de datos por WiFi en un servidor. A su vez estaremos estudiando el uso del puerto serial del ESP8266 a fin de que otro controlador pueda enviarle datos al ESP y este enviarlos de forma inalámbrica al servidor.

Este proyecto utilizará el servidor “ZUMMOBOT” que describimos en el artículo sobre Captura Masiva de Datos

Continuar leyendo “ESP8266 – Serial WiFi Logger”

ZUMMOBOT – Captura Masiva de Datos para Análisis

Resumen Experto

Una de las más importantes tareas en el ámbito de la robótica y de la inteligencia artificial es la captura masiva de datos y su posterior análisis.

Este artículo muestra una aproximación a esta tarea mediante el uso de una red local WiFi, un servidor de bajo costo (Up Board + LAMPP) y controladores basados en ARDUINO con capacidades WiFi. La idea es tener la capacidad de subir al upboard muchos datos por segundo desde el ARDUINO y poder descargarlos en formato CSV para su posterior análisis y la capacidad de observarlos en tiempo real.
Continuar leyendo “ZUMMOBOT – Captura Masiva de Datos para Análisis”