Vivimos en un entorno tremendamente cambiante donde los requerimientos de las aplicaciones varían constantemente.
Hace unos pocos años una aplicación grande tenía decenas de servidores, con tiempos de respuesta en segundos y gigabytes de datos. Hoy en día las aplicaciones están desplegados en todo tipo de dispositivos, desde móviles a clusters basados en la nube que corren con miles de procesadores multinúcleo. En el lado del cliente, la rápida proliferación de los teléfonos inteligentes y el auge de la llamada «Internet de las cosas» incrementan el número de usuarios concurrentes y se espera que los sistemas sean capaces de soportarlo y manejarlo adecuadamente.
Los usuarios en la actualidad esperan que los tiempos de respuesta sean de milisegundos o microsegundos y de un 100% de disponibilidad. La necesidad de almacenamiento de datos está creciendo considerablemente expandiéndose hacia los petabytes
En este contexto se espera que nuestras aplicaciones sean “reactivas”, es decir tener componentes activos y listos para recibir eventos.
Las características de una aplicación reactiva son :
- Dirigida por Eventos : Permitir el procesamiento paralelo , asíncrono de mensajes y eventos con facilidad .
- Escalable : Poder escalar dentro y a través de los nodos elásticamente para proporcionar potencia de computación bajo demanda cuando sea necesario .
- Resistente : La capacidad para recuperarse y repararse a sí mismo de forma automática con el fin de asegurar la continuidad aplicación sin fallas.
- Sensible : Respuestas en tiempo real que proporcionen información instantánea sobre la base de las interacciones del usuario y de otros estímulos.
Es evidente que debemos considerar usar nuevas tecnologías y nuevos paradigmas de programación para poder satisfacer estos niveles de sofisticación para poder tener aplicaciones reactivas.
En este escenario los lenguajes de programación funcional han empezado a tener auge, debido a que pueden ayudarnos a satisfacer dichos requerimientos. Entre los más conocidos lenguajes de programación funcionales tenemos a: Scheme, Erlang, Haskell, Scala, Closure, F#, Lisp, entre otros.
Por lo pronto ya empecé a ver un par de ellos, espero traerles mis experiencias en los próximos posts.
Más información