Code-Makers ha revivido. It's alive! Bienvenidos! Presentate aca!

Middlewares !!

Como controles de versiones Git, SVN, etc., o herramientas, IDEs, etc.
Avatar de Usuario
dreams_eater
Site Admin
Mensajes: 40
Registrado: Sab Feb 27, 2016 1:27 am
Ubicación: 1s y 0s del capacitor de RAM

Middlewares !!

Mensajepor dreams_eater » Jue Mar 24, 2016 7:51 pm

Hola, voy a hablar de middlewares, más que un articulo es una opinión porque no lo saque de ningún lado y esta basado en mi experiencia nada más.

¿Qué es eso? El middleware es la lógica de intercambio de información entre aplicaciones.
¿Para que sirve? El middleware es el encargado de que programas puedan compartir información.
En la practica el middleware es un rol, el rol de pasar un dato de un lado a otro.
¿Cuando necesito un middleware? Cuando tengo un sistema distribuido(, es decir en un momento determinado mis programas pueden estar en diferentes computadoras) Y dichos programas deben trabajar juntos para funcionar bien (, es decir tener un medio de comunicación entre ellos).

Un middleware es algo que se hace siempre muy a medida de las necesidades del sistema por una mezcla de X razones:
  • Las aplicaciones a una distancia X:
    • están en la misma maquina,
    • están en diferentes maquinas dentro de la LAN, son del mismo departamento/autoridad
    • están en diferentes maquinas dentro de la LAN, son de diferentes departamentos/autoridades
    • están en diferentes maquinas dentro de internet
  • La latencia de comunicación entre las aplicaciónes es X:
    • debe ser baja
    • debe ser media
    • no importa
  • Los datos compartidos tienen un tiempo de vida X:
    • se usan y se descartan
    • se borra el dato menos usado
    • se borra el dato tras x segundos
    • todos los datos se almacenan "para siempre"

Ejempos de quien es el actor que comparte los datos:
  • Podría ser un programa hecho por uno mismo (c, pascal, java, python, go, etc con comunicación).
  • Podría ser un servidor RESTfull (http, https)
  • Podría ser una base de datos relacional ( bd2, mysql, ect)
  • Podría ser una base de datos no-Sql (mongodb, etc)
  • Podría ser una base de datos en memoria (redis, Memcached, etc)
  • Podría ser un message broker que implementan el estándar AMQP (rabbitMQ, etc)
  • Lo más probable es que sea una mezcla de algunos items anteriores.

De todas estas herramientas se usa la que mejor encaja con lo que se necesita.

¿Que abarca el middleware?
  • Podría ser un cliente de la herramienta. Cada herramienta tiene su propio libro de roles y nombres que le asignan a esos roles. Por ejemplo detesto que le llamen "client" a algo que puede llegar a ser un shard dentro de elasticsearch.
  • También puede darse el caso que ademas de desarrollar "el cliente" tienen que desarrollar la extracción, transformación y carga de los datos de un lugar a otro, en otras palabras podría contener un mini-wrapper de datos para mantener la misma consistencia de los datos.

Eso es todo.
Saludos!


Esta vez, es la buena!!

Volver a “Temas de programacion en general”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado