Esta charla fue presentada el 30 de Abril en la Conferencia de Arquitectura IT (ArqConf 2015). En la misma presenté las características deseadas, los desafíos y una propuesta de arquitectura para Big Data Analytics que permite computación en real-time.
EDIT: 2015-05-29: Agregado el video de la charla
Speakers ArqConf 2015
Sobre la Charla
Título: Creando una Arquitectura Moderna para Big Data Analytics
Hay cientos de opciones de frameworks y sistemas de Big Data, cuando se empieza a estudiar cómo armar la solución completa, rápidamente nos encontramos con la necesidad de tomar muchas decisiones que van afectar el proyecto a largo plazo, preguntas como: dónde y cómo almacenar, cómo procesar en batch y realtime; Map-Reduce, DAG, Hadoop, Spark, Storm, Hive, NoSQL, son algunos de los términos que hay que conocer cuando se arma una arquitectura de Big Data. Esta charla va a presentar brevemente estas tecnologías y opiniones para utilizar en su próxima plataforma de análisis de datos.
Video de la charla
{% raw %}
Puntos Clave
Si no pudiste ver la charla o si solo querés algunos tips rápidos sobre, acá les dejo los puntos que considero clave para el éxito de este tipo de proyecto.
Atributos esperados
- Simple de pensar, con la menor cantidad posible de sub-sistemas
- Ser resiliente a fallas de sistemas y humanas
- Optar por implementaciones que tengan escalabilidad linear
- Soportar Dashboards y Análisis Exploratorios
- Soportar Operaciones Batch y Real-time
Conceptos técnicos
Los conceptos aplicados no son nuevos, pero la aplicación de los mismos en conjunto generan excelentes resultados y escalabilidad:
- Todas las operaciones deben ser inmutables, esto simplifica la forma de pensar y evita errores.
- Las transformaciones (ej: A=A+1) deben ser expresadas en Eventos.
- Por más tentador que lo sea trabajar directamente con
JSON
aplique schema a tus datos. - Almacená los todos los eventos crudos (
raw events
) en un storage escalable (S3, HDFS). - Las metricas del dashboard se computan y se guardan en el un datastore escalable con alta performance de lectura.
- Los análisis exploratórios pueden ser hechos con consolas iterativas tipo REPL o ambientes iterativos mas completos como Apache Zepelin
Tecnologias Aplicadas
La elección de soluciones se basó en uso de tecnologías relativamente maduras y que sean FOSS, obviamente se puede obtener resultados similares con distintas composiciones, lo importante es preservar los atributos
- Data Schema: Apache Avro
- Message Bus: Apache Kafka
- Storage: Amazon S3 o HDFS
- Processing: Apache Spark + Spark Streaming
- Data Store:
Slides & Fotos
{% raw %}
Las fotos del evento se encuentran en el Facebook de ArqConf
Referencias
Los conceptos resumidos en esta presentación son resultado del estudio e investigación que se está dando en el mundo, dejo un listado de los blogs posts y fuentes de información que me parecieron más relevantes para esta charla.
Big Data Architecture - Reading List
Tu opinión!
Estas tecnologías y soluciones todavía tienen un largo camino por recorrer antes de ser consideradas patterns, aunque en los últimos años viene aumentando la adopción no hay una solución única y mucho menos perfecta. Qué opinas? Qué harias diferente de esta propuesta y porqué? Hacé tus comentarios a continuación!