¿Qué significa que el software sea reactivo?

En el 2014 Gartner escribió que era obvio que la antigua arquitectura de 3 capas es obsoleta.

Años atrás hablábamos de la arquitectura de 3 capas, un proyecto en un servidor y un trafico “moderado”, hoy hablamos de programas que sirven muchos clientes, entre ellos web, móvil, otros programas (API), IoT entre otros.

Según Ericsson Mobility Report, se espera que Internet de las cosas (IoT) sobrepase los teléfonos móviles y sea la categoría más grande de dispositivos conectados en 2018.

En Setiembre del 2014 apareció el manifiesto reactivo con el fin de aclarar la confusión de aquel entonces sobre el término “reactivo” y a la vez construir una base sólida para un estilo de desarrollo que cumpla con las características que el software moderno (alineado a la demanda de hoy) debe tener.

¿Entonces, que significa que el software sea reactivo?

En lineas generales y de acuerdo al manifiesto podemos decir:

  • Que el sistema responda de manera oportuna (a diferencia de sistemas que toman varios segundos y en algunos casos hasta minutos en responder al usuario)
  • Que el sistema permanezca responsivo cuando enfrenta fallas (en contraste a que el sistema deje de funcionar por completo y requiera intervención humana)
  • Que el sistema se mantenga responsivo bajo variaciones en la carga de trabajo (en contraste a detenerse por completo o que el servidor devuelva un código de error por sobre carga)
  • Capaz de enviar, recibir y enrutar mensajes en diferentes condiciones de la red (la comunicación entre componentes se realiza a través de mensajes lo que asegura el bajo acoplamiento)

Muchas de las soluciones reactivas han existido desde 1970, el hecho que no hayan sido tan populares en aquel entonces como lo están siendo ahora se debe a varios factores, entre ellos la necesidad de utilizar mejor los recursos y la escalabilidad.

Que los sistemas sean reactivos hoy es una necesidad, no podemos resolver los problemas de hoy con las técnicas y herramientas de ayer.

 

Más información en:
https://www.oreilly.com/learning/why-reactive

¿Qué significa que el software sea reactivo?

Digital Ocean estrena sus nuevos balanceadores de carga

 

Balanceadores de carga de Digital Ocean

Digital Ocean estrena sus nuevos balanceadores de carga, los cuales como el resto de sus productos, seguramente darán mucho que hablar. Digital Ocean es una empresa que se ha caracterizado por tener un excelente servicio, rápido, económico y con un uptime muy bueno.

Si bien casi todos en la industria utilizan los balanceadores de Amazon, los nuevos balanceadores de Digital Ocean son una buena opción a considerar, veamos algunos puntos importantes a tener en cuenta.

  • Su precio es de $20 o $0.03 por hora.
  • Los balanceadores están disponibles por región y de momento no está soportado balancear entre instancias de regiones diferentes.
  • Los protocolos soportados son HTTP, HTTPS, TCP.
  • Las algoritmos de balanceamiento son Round Robin y Least connections.
  • Se pueden crear utilizando el API.

Como vemos, de momento cuenta con todo lo necesario para un proyecto simple, y por el precio ofrecido será cuestión de probarlo para ver los resultados.

Digital Ocean estrena sus nuevos balanceadores de carga

Libros gratis de O’Reilly

La colección gratis de O’Reilly cuenta con muchos temas de interés y en este post hemos seleccionado los relacionados a la programación funcional y los sistemas reactivos.

Los pueden descargar desde los siguientes enlaces:

Object-Oriented vs. Functional Programming
http://www.oreilly.com/programming/free/object-oriented-vs-functional-programming.csp

Functional Programming in Python
http://www.oreilly.com/programming/free/functional-programming-python.csp

Why Reactive?
http://www.oreilly.com/programming/free/why-reactive.csp

Developing Reactive Microservices (requiere registro)
https://info.lightbend.com/COLL-20XX-Developing-Reactive-Microservices_Landing-Page.html?lst=OR

Reactive Microservices Architecture
http://www.oreilly.com/programming/free/reactive-microservices-architecture-orm.csp

 

Libros gratis de O’Reilly

¿Sabes qué son los sistemas reactivos?

A estas alturas el término reactivo debería ser algo que las empresas y desarrolladores identifican con facilidad, sin embargo, la realidad es que muchos lo desconocen y siguen pensando de forma antigua tanto en el desarrollo como en la gestión (ver así que sigues usando cascada).

En Evolbit creemos que el desarrollo se debe tomar seriamente, que es un proceso muy delicado y que ha cambiado mucho para alinearse a estos tiempos, por esa razón nos alineamos al manifiesto reactivo.

¿Que es un sistema reactivo?

Los sistemas reactivos no son nuevos, en 1985 David Harel y Amir Pnueli plantearon una nueva dicotomía para caracterizar sistemas de computador complejos, los sistemas transformativos versus reactivos. Los sistemas transformativos aceptan un conjunto de entradas, transforman esas entradas y producen salidas, por otro lado, los sistemas reactivos, son estimulados continuamente por su entorno y su rol es responder continuamente a esas estimulaciones.

Unos años después Gérard Berry redefine lo expuesto anteriormente introduciendo la diferencia entre sistemas interactivos y reactivos, donde los programas interactivos definen la velocidad en la que interactúan con el entorno mientras que los reactivos determinan su velocidad por el entorno.

Podemos decir que un programa reactivo tiene las siguientes características:

  • Está disponible para interactuar continuamente con el entorno
  • Se ejecuta a la velocidad determinada por el entorno
  • Trabaja en base a la demanda externa

Cuando se analiza con detalle, las características expuestas anteriormente son como las aplicaciones web deberían funcionar. El manifiesto reactivo engloba las características vistas anteriormente en 4 principios básicos:

  • Responsivos: reaccionar a los usuarios
  • Resilientes: reaccionar a fallos
  • Elásticos: reaccionar a la carga
  • Orientado a mensajes: reaccionar a eventos

reactive-manifesto

Una aplicación responsiva satisface la expectativa del usuario en términos de disponibilidad y tiempo real. La aplicación responde con muy poca latencia.

Como bien sabemos, todas las aplicaciones incluso las más simples tienden a fallar, por eso las aplicaciones reactivas deben ser resilientes a fallas para poder cumplir con la demanda de disponibilidad continua.

Para poder interactuar continuamente con su entorno, una aplicación reactiva debe ser capaz de ajustarse de acuerdo a la carga que está recibiendo. Para responder correctamente de acuerdo a la carga, una aplicación reactiva debe poder ser elástica y escalar a demanda. Debe sacar provecho de todos los recursos de una maquina y debe saber como interactuar con más nodos de computación.

Un mecanismo que ayuda a cumplir con todas las propiedades anteriores es la orientación a eventos basado en comunicación asíncrona. El sistema o subsistema reacciona a eventos como pedidos HTTP sin necesidad de monopolizar los recursos mientras espera por un evento. Como consecuencia de este mecanismo la concurrencia alcanza mejores tasas de latencia (por ser asíncrono) y los componentes son más desacoplados.

Por lo tanto, sabemos que una aplicación es reactiva si cumple con los 4 principios del manifiesto reactivo.

Existen algunas tecnologías para crear programas basados en eventos y asíncronos, por ejemplo Microsoft’s Reactive Extensions (Rx), NodeJs, Netty o Apache Mina sin embargo el único framework maduro en este tema y que ha sido creado para cumplir exitosamente lo que dicta el manifiesto reactivo es playframework.

play_full_color

 

www.playframework.com

En estos días las aplicaciones deben responder a nuevas demandas y el manifiesto reactivo establece 4 principios que se deben cumplir para responder a las exigencias de hoy en día.

¿Estás desarrollando aplicaciones reactivas en tu empresa?, si la respuesta es no, te recomendamos que evalúes la situación actual para empezar a hacerlo y puedas tomar a tu favor las ventajas que una arquitectura reactiva ofrece.

¿Sabes qué son los sistemas reactivos?