Grandes datos

Cómo Credit Karma usa Akka para administrar big data a escala

Big data puede ser un dolor de cabeza a menos que sepa cómo administrarlo a escala. El gerente de ingeniería de Credit Karma, Dustin Lyons, habla con Tecnopedia sobre cómo el gigante fintech maneja sus datos.

Como Credit Karma usa Akka para administrar big data a

Fintech es una de las categorías de inversión de más rápido crecimiento en capital de riesgo. Desde 2010, más de 1200 firmas de capital de riesgo han canalizado más de $22 mil millones en las cuentas bancarias de más de 1800 nuevas empresas, según Pitchbook. El CEO de JPMorgan Chase & Co., Jamie Dimon, recientemente desestimó la consideración del secretario del Tesoro de la administración Trump, advirtiendo a sus pares que «Silicon Valley está llegando».

Una de las estrellas más brillantes de la tecnología financiera es Credit Karma, con sede en San Francisco, que se fundó en 2007 y ha recaudado más de $ 368 millones en fondos de riesgo desde entonces. En la actualidad, la empresa, que ofrece puntajes de crédito gratuitos y gana dinero brindando a los usuarios recomendaciones personalizadas y combinándolas con productos, tiene más de 60 millones de usuarios.

La clave de su éxito es descubrir cómo ofrecer una experiencia de usuario más personalizada. Hace poco hablé con Dustin Lyons, Gerente de ingeniería de Credit Karma, para obtener más información sobre cómo las plataformas de consumidores manejan grandes datos a esta escala y volumen.

un serio problema

república tecnológica: Cuéntame más sobre la escala de datos que gestiona Credit Karma.

LEER  El hospital de Chicago utiliza HealthLake de Amazon para romper los silos de datos y crear un historial coherente del paciente

León: Nuestra infraestructura de datos procesa habitualmente más de 750 000 eventos por minuto a 600-700 MB por minuto. Nuestra canalización de datos se creó originalmente con PHP, pero descubrimos que no podía escalar para satisfacer nuestras crecientes necesidades. Usamos Gearman para importar datos en paralelo entre máquinas, pero a medida que crecía nuestra ingesta de datos, comenzamos a investigar otros lenguajes y herramientas para admitir mejor la administración de cargas de trabajo simultáneas.

VER: Cómo escala The New York Times con herramientas de programación reactiva como Scala

método de paralelización

república tecnológica: Suena como una buena pregunta. ¿Qué has hecho?

León: Necesitamos una nueva arquitectura, no herramientas marginales: estamos en un cohete de crecimiento. Algunos de nuestros ingenieros habían estado probando Scala y Akka, y sabíamos que queríamos alejarnos de la escritura dinámica y la falta de concurrencia de primera clase en PHP.

Así que comenzamos con Scala y Akka de Lightbend, usando Apache Kafka, y comenzamos a construir un sistema de actores Akka que nos ayudaría a hacer un trabajo paralelo entre subprocesos y cajas. Hemos tenido éxito con este enfoque: Scala nos brinda seguridad de tipos y el rendimiento extraordinario de JVM, mientras que Akka abstrae las complejidades de los sistemas distribuidos de subprocesos múltiples. Eso se ajusta mejor a la escala de datos que estamos viendo.

Aun así, nuestra producción inicial se topó con un obstáculo: superaba constantemente el espacio de almacenamiento dinámico y el consumo masivo de memoria. Nos dimos cuenta de que nos faltaba algo fundamental al tratar de procesar decenas de millones de eventos.

bajo (contra) presión

república tecnológica: ¿Cómo resolviste este problema?

Informes de big data de lectura obligada

León: Básicamente nos topamos con un concepto muy importante que se pasó por alto: la contrapresión. Entonces, este nuevo concepto nos introduce a la idea de Manifiesto Reactivo. La contrapresión está claramente definida en el manifiesto, y es un mecanismo de retroalimentación que permite que el sistema controle la velocidad a la que los actores posteriores reciben mensajes. Esto evita que los componentes más lentos del sistema se vean abrumados por los más rápidos. Desarrollamos actores para enviar datos, pero no evaluamos el rendimiento del trabajo entre ellos.

Afortunadamente, nuestros amigos de Lightbend han proporcionado una herramienta para resolver este problema: Akka Streams. Proporciona una API de transmisión que introduce la noción de demanda entre editores y suscriptores. En lugar de que un actor envíe mensajes a través del sistema, Akka Streams pasa a un modelo en el que un actor solicita y extrae trabajo de la transmisión. De esta forma, los actores más lentos pueden solicitar trabajo cuando los recursos están libres. Vemos errores de espacio de almacenamiento dinámico en producción por este motivo.

VER: Cómo una empresa aumentó la productividad de los desarrolladores en un 700 % con la programación reactiva

Después de reescribir la lógica central para usar Akka Streams, estos errores desaparecieron y el uso de la memoria se volvió más predecible. Al cambiar a este sistema basado en extracción, en lugar de precargar grandes cantidades de trabajo y ponerlas en cola en la memoria, pudimos reducir el uso del almacenamiento dinámico en un 300 %. En la actualidad, usamos Scala, Akka y Akka Streams en muchos escenarios clave de canalización de datos rápidos.

LEER  BlackBerry anuncia una financiación de 50 millones de dólares para empresas emergentes creadas en la plataforma BlackBerry IVY

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba