Hubble: Ahora Más Rápido que la Luz

Autor

Simon Chow

Fecha de publicación

Datos

Hubble

Bienvenido a la última entrega de nuestra serie sobre la Plataforma de Datos Componible (CDP), la próxima generación de plataforma de acceso a datos en Stellar. Hoy, estamos emocionados de presentar nuestro primer estudio de caso: refactorizar el marco de movimiento de datos de Hubble, Stellar ETL, para usar CDP.


Ahora que tenemos un entendimiento básico de CDP desde la introducción y Galexie publicaciones, nos adentraremos en una aplicación del mundo real, Stellar ETL, que ha sido refactorizada para usar el conjunto completo de beneficios de CDP. Al final del artículo verás cuán rápido, barato, y fácil de usar realmente es CDP!

¿Qué son Hubble y Stellar ETL?

Hubble es un conjunto de datos de código abierto, disponible públicamente que proporciona un registro histórico completo de la red Stellar. Stellar ETL es la aplicación que Hubble usa para ingerir datos de la red Stellar. Para saber más sobre Hubble y Stellar ETL revisa nuestra Documentación para Desarrolladores y entrada de blog.


Visión General de la Arquitectura Original

El diseño original de Stellar ETL acoplaba estrechamente la extracción y transformación de datos en una sola aplicación. Esto significa que Stellar ETL instancia un nuevo Captive Core para extraer datos para cada rango de ledger procesado (resaltado en rojo). En última instancia, esto funciona, pero viene con muchos puntos dolorosos:

  • Es lento: Captive Core tarda 15+ minutos en iniciar
  • Es caro: Captive Core necesita sus propios recursos aumentando tu costo de cómputo
  • Es difícil de usar: necesitas mantener una instancia de Captive Core además de tu aplicación

Es Lento: ¿Ya llegamos?

Captive Core tarda mucho en iniciar, aproximadamente 15 minutos. Esto significa que estás perdiendo 15 minutos de tiempo cada vez que ejecutas Stellar ETL. Imagina todo el tiempo perdido si quieres procesar continuamente datos de la red Stellar en lotes de 30 minutos. Eso es ~12 horas por día de tiempo de inicio de Captive Core! Sin mencionar que los datos que extraes tendrán al menos 15 minutos de antigüedad en relación con el ledger actual de la red. Esto solo empeora si imaginas rellenar un gran rango de datos históricos. La naturaleza de un solo hilo de Stellar ETL significa que rellenar la historia completa de los datos de la red Stellar tomaría meses, o incurrir en costos prohibitivos para trabajadores paralelos adicionales costosos.

Es Caro: ¿Dónde se fue todo mi dinero?

Stellar ETL es una aplicación simple, ligera que transforma los datos crudos de la red Stellar en un formato legible por humanos. Esto es como usar grep y sed para buscar y formatear datos en texto legible. Realmente querrías que tu grep y sed requirieran ser ejecutados en una máquina de 4 núcleos y 16 GB? Esperemos que no. Ese monstruo de máquina es todo para Captive Core. Captive Core representa la mayoría de los requisitos de recursos y costos de Stellar ETL.

Es Difícil de Usar: ¿Qué hago con mis manos?

Además de mantener Stellar ETL, necesitamos mantener una instancia de Captive Core actualizada. Eso significa mantener un archivo de configuración de Captive Core adicional así como la imagen de Captive Core en sí. Así que ahora necesitas ser un experto en tu aplicación así como en las complejidades de Captive Core. Las actualizaciones de versión de Captive Core y las mejoras de protocolo requieren que vuelvas a desplegar tu aplicación, incluso si no hay cambios en tu código subyacente.

Otro tema candente es la depuración. Digamos que había un bug en Stellar ETL que procesaba incorrectamente un rango de ledger definido. Para probar realmente la corrección del bug en este rango de ledger necesitaríamos ejecutar Captive Core cada vez que quisiéramos probar el cambio de código (de nuevo, eso es 15+ minutos de tiempo de inicio por ejecución). Cuando el bug se corrige, corregir los datos malos también requiere una instancia de Captive Core.

Reemplazando Captive Core con CDP

Claramente, el problema con la arquitectura original de Hubble es Captive Core. Entonces, ¿cómo solucionamos esto? Eliminando Captive Core y reemplazándolo con componentes de CDP!

CDP fue muy fácil de insertar y reemplazar Captive Core. En esencia, desacoplamos Captive Core de Stellar ETL usando Galexie y un nuevo Backend de Ledger. Como recapitulación, Galaxie es una aplicación simple, ligera que agrupa datos de la red Stellar, los procesa y los escribe en un almacén de datos externo. Luego podemos usar este almacén de datos en lugar de Captive Core. El almacén de datos se convierte en la fuente de registro para los datos de la red Stellar. El Backend de Ledger que se interfaz con la red Stellar es en gran medida el mismo, solo que se interfaz con el Almacén de Metadatos de Ledger en GCS en lugar del flujo de datos de Captive Core.

¿Valió la pena?

Comparemos la nueva versión de Stellar ETL con la antigua:

  • Es más rápido: accede a datos de la red Stellar en segundos, no minutos
  • Es más barato: funciona en una máquina de tamaño diminuto
  • Es fácil de usar: mantén tu código de aplicación, nada más

Es Más Rápido: ¿Tengo tiempo para jugar al Pickleball ahora?

Sin la necesidad de ejecutar una instancia de Captive Core, ahora estamos limitados solo por el rendimiento de nuestro código de aplicación. En lugar de 15+ minutos para ingerir un rango de ledger definido de datos, ahora toma menos de 1 minuto. Ejecutar Stellar ETL en el mismo intervalo de lote de 30 minutos toma solo 48 minutos por día VS 12 horas por día. Eso es una reducción del tiempo del 93%! Ahora también podemos ejecutar Stellar ETL más frecuentemente, incluso como micro-lotes, para que Hubble contenga datos casi en tiempo real.

El rellenado ahora es realmente viable. Rellenar la historia completa de los datos de la red Stellar toma menos de 4 días vs meses. Acceder a datos preprocesados desde un Almacén de Metadatos de Ledger es significativamente más rápido que extraer datos iterativamente de Captive Core. Además, puedes paralelizar la lectura de datos desde un almacén de datos. No puedes paralelizar la lectura desde una sola instancia de Captive Core.

Es Más Barato: ¿Qué hago con todo este dinero?

Sin Captive Core, hemos disminuido nuestros costos en ~90%. Esto se debe a que ahora podemos dimensionar adecuadamente nuestras máquinas para ajustarse a nuestra aplicación. Originalmente nuestros pods de kubernetes necesitaban ser ejecutados con 3.5 vCPU y 20 GiB de memoria. Ahora solo necesitamos 0.5 vCPU y 1 GiB de memoria. Esto resulta en ~10$/mes vs ~100$/mes en costos de recursos.

Es Fácil de Usar: ¿Sí o sí?

Sin Captive Core, la carga de mantenimiento se ha desacoplado. No hay necesidad de actualizar la versión de tu aplicación solo porque Captive Core tuvo una actualización de versión no relacionada. No hay necesidad de mantener un archivo de configuración separado que es completamente ajeno a tu aplicación. Todo esto conduce a menos código, menos complejidad mientras se mantiene la misma interfaz fácil de usar de Ledger Backend.

Hablando de depuración, ahora es muy fácil volver a ejecutar cosas localmente. La depuración y el desarrollo iterativos ya no están limitados por largos tiempos de inicio. Las pruebas de integración ahora son realmente viables. ¡El desarrollo solo está limitado por tu imaginación!

¿Qué Sigue?

Estamos trabajando en mostrarte cómo otros productos de la plataforma, como Horizon y Stellar RPC, usan CDP. ¡Estate atento a esos blogs en el futuro cercano!

Ahora mismo, nuestro equipo está creando una biblioteca que analizará los Metadata del Ledger crudos a un formato más amigable para el usuario. La biblioteca incluirá un flujo de streaming de eventos intuitivo que consiste en un productor de ledger público y transformaciones de datos bien definidas. El productor de ledger público transmitirá automáticamente los Metadata del Ledger desde CDP. Las transformaciones de datos, o procesadores, tomarán el flujo de datos y lo analizarán a un formato amigable para el usuario.

Nuestro objetivo es hacer que el desarrollo de aplicaciones sea más rápido y fácil porque podrás transmitir, transformar y filtrar los datos de la red Stellar como veas conveniente en lugar de meterte en los detalles crudos de los Metadata del Ledger.

Comentarios

Únete a nosotros en Discord en los canales #hubble y #horizon! Nuestro equipo y miembros de la comunidad están allí para discutir y brindar soporte.

Los Boletines

EL CORREO QUE REALMENTE QUIERES LEER

Entérate de nosotros primero. Suscríbete para obtener información en tiempo real sobre noticias, funcionalidades y recursos del ecosistema Stellar.

Al proporcionar la información de contacto requerida en este formulario, aceptas ser contactado por Stellar Development Foundation (SDF) para informarte sobre nuestros productos y servicios. Para más información sobre nuestras prácticas de privacidad o cómo darte de baja, por favor consulta nuestra Política de Privacidad.

Este sitio está protegido por reCAPTCHA y la Política de Privacidad de Google y Términos de Servicio aplican

Leer Más...

Artículo

Molly Karcher

Plataforma de Datos Componible: Una Nueva Forma de Acceder a Datos en Stellar

Herramienta para Desarrolladores

Datos

Este artículo es el primero de una serie expansiva sobre la Plataforma de Datos Componible, la próxima generación de plataforma de acceso a datos en…

Ver

Artículo

Urvi Savla

Introduciendo Galexie: Extraer y Almacenar Datos de Stellar de Manera Eficiente

Datos

Herramienta para Desarrolladores

Galexie es el primer componente de la Plataforma de Datos Componible de Stellar, la próxima generación de plataforma de acceso a datos. Galexie es…

Ver

Artículo

Molly Karcher

Horizon de SDF: Limitando Datos a 1 año

A partir del 1 de agosto de 2024, las instancias de Mainnet de Horizon de Stellar Development Foundation proporcionarán un año de datos históricos,…

Ver