Contenidos
El tiempo real y el IoT han modernizado el desarrollo de aplicaciones. Pero “las leyes de la física todavía se aplican”. Como orador invitado al principio de mi carrera, le diría a la audiencia que el conocimiento fundamental obtenido de sus experiencias tradicionales de desarrollo de aplicaciones todavía se aplica al desarrollo de aplicaciones modernas. Por eso es hora de pasar a una arquitectura impulsada por eventos.
Las experiencias de desarrollo enseñan lecciones valiosas.
Aproximadamente 25 años después de que hice esa presentación por primera vez, todavía creo que la experiencia del desarrollo enseña lecciones valiosas. Por ejemplo, debemos saber que las bases de datos no se ejecutan más rápido en una aplicación de Internet de las cosas (IoT) de lo que se ejecutan en la aplicación típica de servicio al cliente creada con métodos tradicionales.
Sin embargo, sigo viendo demasiados casos en los que los desarrolladores de IoT ignoran las limitaciones de las bases de datos tradicionales. Estas bases de datos no pueden manejar las enormes demandas necesarias para analizar grandes cantidades de datos. Entonces, los desarrolladores terminan intentando crear aplicaciones que requieren miles de actualizaciones por segundo. Deben saber desde el principio que no funcionará.
En el mundo de IoT, las soluciones dependen de la transmisión de datos.
Las soluciones dependen de la transmisión de datos. Pero la mayoría de los desarrolladores de aplicaciones aún no comprenden bien cuál es la mejor manera de procesar esos datos. Suelen decir: “Obtengo algunos datos. Los pongo en la base de datos y luego ejecuto las consultas”.
El proceso de ingresar datos en la base de datos y ejecutar consultas funciona cuando se crean aplicaciones tradicionales para procesamiento de transacciones o inteligencia comercial. El uso de la base de datos requiere velocidades de datos moderadas y no requiere respuestas en tiempo real.
Pero esto no funcionará cuando tenga grandes flujos de datos que lleguen cada segundo que requieran un análisis inmediato.
Por ejemplo, pregúntele a un desarrollador acerca de la velocidad de su base de datos y podría decirle que puede realizar 5,000 actualizaciones por segundo. Entonces, ¿por qué intentan crear una aplicación de IoT que deba ejecutar 50.000 actualizaciones por segundo? Eso no funcionará. Ellos ya deberían saber esto por experiencia.
Demos un paso atrás para entender por qué sucede esto.
Aplicaciones y bases de datos en tiempo real
Durante décadas, las bases de datos se han utilizado para almacenar información. Una vez que los datos estuvieron allí, siempre puede volver cuando lo desee y consultar la base de datos para determinar qué le interesa.
Pero con la llegada de los sistemas en tiempo real, las bases de datos son un albatros. El objetivo de los sistemas en tiempo real es analizar y reaccionar ante un evento. en el momento. Si no puede analizar datos en tiempo real, está muy limitado, especialmente con las aplicaciones de seguridad.
La mayoría de los desarrolladores de aplicaciones están más acostumbrados a situaciones en las que llenan una base de datos y luego ejecutan consultas. Pero el modelo de entrada / ejecución no funciona cuando las aplicaciones transmiten toneladas de datos por segundo que requieren una respuesta inmediata.
Otro desafío: cómo ver datos en tiempo real en una especie de tablero.
Normalmente, consulta la base de datos para obtener los datos. Elimina recursos cuando intenta ver información en tiempo real con una gran cantidad de datos que ejecutan consultas grandes cada segundo.
Con la excepción de un puñado de especialistas ricos en tecnología, la mayoría de nosotros no estamos preparados para manejar grandes volúmenes de transmisión de datos.
Considere un sensor que monitorea la temperatura ambiente que genera una nueva lectura una vez por segundo. La temperatura ambiente no cambia tan rápido, por lo que algunos sensores pueden ser manejables. Ahora imagine la enorme cantidad de datos generados por 10,000 sensores que emiten información simultáneamente.
De manera similar, considere el ejemplo de una compañía eléctrica que recopila miles de millones de puntos de datos que se ingresan directamente en una base de datos. Simplemente no es posible descargar todos los datos a un sistema al mismo tiempo y esperar procesar todo al instante. Una base de datos no se puede actualizar 100.000 veces por segundo.
El sistema no es barato ni eficiente para arrojar todos estos datos a una base de datos a la vez y luego no hacer nada durante un día hasta que llegue el siguiente lote.
Imagina el hardware que necesitas para manejar el pico. La situación genera problemas. De hecho, la mayoría de los desarrolladores nunca antes habían creado este tipo de aplicación. Y cuando lo intenten, es probable que encuentren errores o se sientan frustrados por las bajas velocidades.
El pico y el sistema requieren buscar formas de procesar datos en la memoria en lugar de intentar hacer todo en la base de datos
Nuevos tiempos, nuevo modelo de desarrollo
Observar el pico y el sistema de hardware explicará por qué todavía estamos luchando por implementar una arquitectura funcional y escalable que pueda respaldar la promesa de IoT.
Piense en los desafíos que enfrentan los municipios al tratar de administrar “carreteras inteligentes”. Si desea evitar accidentes, necesita datos al instante. Pero cuando las transmisiones de flujos de datos que miden el tráfico llegan lentamente a la sede, es un gran obstáculo (perdón por el juego de palabras).
¿Qué pasa con los sistemas basados en una arquitectura impulsada por eventos?
Con la adopción de sistemas basados en una arquitectura impulsada por eventos (EDA), ese futuro no tiene por qué suceder necesariamente. Aunque EDA es relativamente nuevo, muchas industrias ya utilizan este enfoque.
Es común en líneas de montaje o transacciones financieras, cuyas operaciones sufrirían retrasos en la obtención de datos cruciales para la toma de decisiones.
Hasta ahora, el modelo de desarrollo de software se ha basado en almacenar grandes volúmenes de información en bases de datos para su posterior procesamiento y análisis. Pero con las aplicaciones EDA, los sistemas analizan los datos cuando ocurren eventos en una malla de eventos distribuida.
Los datos cruciales proporcionados.
En estos escenarios, el procesamiento y análisis de datos ahora se acerca, o de hecho, a los sensores y dispositivos que realmente generan los datos.
Los datos de gran volumen deben analizarse en la memoria para lograr los tiempos de respuesta rápidos requeridos. El resultado: el desarrollo de aplicaciones que actúan en tiempo real y responden a decenas de miles, o incluso millones, de eventos por segundo cuando es necesario.
En lugar de depender de técnicas tradicionales centradas en bases de datos, necesitamos aplicar una arquitectura basada en eventos.
Cuando aplicamos una arquitectura basada en eventos, los sistemas pueden analizar los datos en tiempo real. Y podemos procesar flujos de eventos de gran volumen de manera más eficiente y rápida que las bases de datos tradicionales.
Los contornos del futuro rara vez han sido más claros sobre hacia dónde se dirige la tecnología.