Conociendo los Sistemas reactivos

Rafael Lopez
hacknight.tech
Published in
2 min readJul 21, 2017

Les platicare uno de lo pilares importantes que debemos de tener claro al momento de desarrollar un sistema de cualquier tamaño.

Un cambio importante que sucedió con el tiempo es que la programación secuencial fue remplazada por la programación paralela y concurrente.

Una de las causas fue que anteriormente se desarrollaba un sistema con diferentes requerimientos, pensando que solo tendría unos cientos de usuarios, que lo usarían a una determinada hora, no importaba tanto el tiempo de respuesta o donde estuviera alojado, pero actualmente los sistemas puedes llegar a tener millones de usuarios en todo el mundo a cualquier hora, o hacer consultas en tiempo real, poca latencia, poder escalar de manera rapida sin necesidad de aumentar los costos o alojarlo en un sistema embebido, etc.. .

Tiempo atrás era cuantos segundos tarda en responder, ahora es cuantas conexiones concurrentes soporta y en cuantos milisegundos responde.

Un grupo de ingenieros crearon un manifiesto donde recoge una seria de puntos a seguir para desarrollar un sistema reactivo, que soporte los requerimientos actuales.

Los Sistemas Reactivos son sistemas:

  • Responsivos: Los sistemas responden de una manera oportuna en la medida de lo posible.
  • Resilientes: Los sistemas resilientes permanecen responsivos ante fallos. Son sistemas que disponen de alta disponibilidad, sistemas de misión crítica.
  • Elásticos: El sistema se mantiene responsivo bajo variaciones en la carga de trabajo. Los sistemas Reactivos pueden reaccionar a cambios en la frecuencia de peticiones incrementando o reduciendo los recursos asignados para servir dichas peticiones
  • Orientados a mensajes: Los sistemas orientados a mensajes asíncronos permiten la gestión aún más rápida de tareas sin bloqueos. Estos sistemas mantienen un bajo nivel de acoplamiento, aislamiento y proporcionan medios para delegar la gestión de errores.

Algunos de los lenguajes que fueron pensados para hacer uso de este tipo de requerimientos son:

  • Go
  • Erlang-Elixir
  • NodeJS
  • Rust
  • Escala

Los invito a conocer y firmar el manifiesto:

Gracias

Referencias:

--

--