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)”

FONA808 + ARDUINO UNO – FASE 1: Conexión, Comandos AT y Mensajes SMS

En este tutorial demostramos 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 o comunicación por internet usando una red 3G.

En esta entrega discutiremos las conexiones de diversos puertos y pines del FONA, así como el envío de comandos AT mediante el monitor serial del IDE de ARDUINO (o cualquier terminal serial conectada al ARDUINO) Continuar leyendo “FONA808 + ARDUINO UNO – FASE 1: Conexión, Comandos AT y Mensajes SMS”