Rakuten Rewards (anteriormente Ebates) es un programa de lealtad en línea con casi 15 millones de miembros activos y más de 3.500 comerciantes y servicios en línea. Esta es nuestra historia, pero un escenario similar se está desarrollando en organizaciones de todas las industrias y en todo el mundo.
Antes de trasladarnos al almacén de datos en la nube de Snowflake, utilizábamos tecnología local (SQL Server, seguido de Hadoop) y aún teníamos dificultades para cumplir con nuestros acuerdos de nivel de servicio (SLA). El trabajo de mantenimiento técnico estaba consumiendo una cantidad cada vez mayor de nuestros recursos de ingeniería y estábamos arriesgando la creación de silos de datos (algo en lo que habíamos trabajado duro durante años para prevenir). Pasábamos demasiado tiempo depurando y ajustando nuestro entorno, y eso nos impedía realizar análisis comerciales críticos e ingeniería de soluciones de datos.
Necesitábamos poder manejar una variedad de cargas de trabajo de datos diferentes, pero no queríamos separar los datos. Necesitábamos poder cargar los datos rápidamente para alcanzar nuestros SLA; y necesitábamos permitir grandes volúmenes de uso simultáneo. Y, por supuesto, teníamos que hacer todo esto de forma rentable para mantenernos dentro de nuestros objetivos presupuestarios. Pasar a la nube y utilizar el almacén de datos Snowflake nos permitió maximizar el ROI y escalar con el resto de Rakuten Rewards.
Cuatro técnicas que usamos para maximizar nuestra inversión en Snowflake
A continuación se describen algunas formas específicas en las que hemos podido administrar los costos de Snowflake con éxito en Rakuten Rewards. Estos enfoques no son específicos de Rakuten Rewards y se pueden replicar en muchas empresas que luchan con estos mismos problemas.
1) Crear un almacén Snowflake para cada unidad de negocio
Cada unidad de negocio (por ejemplo, ventas, marketing, producto), componente ETL y herramienta de terceros, como MessageGears o Segment, debe tener su propio almacén Snowflake. Los almacenes en Snowflake son clústeres de procesamiento separados, tiendo a pensar en ellos como grupos de CPU y memoria. Un almacén en Snowflake no limita el acceso a los datos ni genera silos de datos. Los datos permanecen almacenados de forma centralizada y se puede acceder a ellos a través de cualquier almacén, siempre que el usuario tenga los permisos necesarios. Tener almacenes más distintos es útil porque le permite aislar cargas de trabajo. Y lo que es aún mejor, tener varios almacenes distintos le permite ajustar el tamaño (y por lo tanto el costo) del almacén para reflejar la carga de trabajo que está procesando. Por ejemplo, el equipo de ventas puede tener su propio almacén, que está completamente separado de los almacenes del equipo de productos, que también están separados del equipo de marketing. Cada almacén se puede dimensionar para satisfacer las necesidades del equipo o la tarea específicos, y la carga de trabajo de un equipo no interfiere con la de los otros equipos que lo rodean.
2) Controlar los tamaños del almacén de datos en la nube
En lugar de darle a cada equipo el control sobre los cambios de tamaño de los almacenes, le dimos a cada equipo varios almacenes de diferentes tamaños. Por ejemplo, puede darle al equipo de ventas tres almacenes, uno pequeño, uno mediano y uno grande. ¿Por qué desaconsejo que los equipos individuales controlen el tamaño de sus propios almacenes? Puede ser muy tentador aumentar el tamaño de un almacén, especialmente si tiene uno o dos trabajos de ejecución lenta. Esto aumenta la CPU y la memoria disponibles para el trabajo y puede acelerar el trabajo. Sin embargo, cuanto más grande es el almacén, mayor es el costo por hora. Por lo tanto, si un equipo tiene control sobre el tamaño del almacén y aumenta el tamaño del almacén para manejar un trabajo particularmente complicado, pero luego se olvida de rechazarlo ... sus costos pueden comenzar a aumentar muy rápidamente.
El otro beneficio de centralizar el control sobre el tamaño del almacén es que puede trabajar de manera proactiva para "cambiar el tamaño" de los almacenes al tamaño correcto. Por ejemplo, hemos encontrado varias cargas de trabajo en las que hemos podido reducir significativamente el tamaño del almacén, y pudimos hacerlo sin afectar los tiempos de ejecución del trabajo. Esto ahorra dinero y no tiene ningún impacto en el rendimiento. A menudo, estos trabajos requieren un trabajo pesado de E / S y poca computación. Sin embargo, este no es un proceso lineal sencillo y lo más pequeño no siempre es mejor. También hemos tenido situaciones en las que aumentamos el tamaño del almacén y ahorramos dinero. Si tiene trabajos con grandes necesidades informáticas, es posible que un clúster más grande termine el trabajo mucho más rápido que ahorrará dinero en comparación con ejecutar el mismo trabajo en un clúster más pequeño. Al final, el costo del almacén de datos más grande puede pagarse por sí mismo en términos de velocidad, aunque es mucho más caro por hora. La configuración de sus almacenes de una manera que permita la experimentación y un ajuste sencillo es fundamental.
También nos pareció importante establecer un interruptor de apagado en las consultas. Nuestro equipo tiene un interruptor de apagado que se activa a las dos horas; cualquier consulta que se ejecute durante más de dos horas se cancela automáticamente. Este tiempo de ejecución máximo es un reflejo del tamaño de los conjuntos de datos que administramos y la cantidad de trabajo que hemos realizado para crear una capa de análisis con todas las funciones en la parte superior del lago de datos sin procesar. Es raro que nuestros colegas intenten ejecutar una carga de trabajo durante más de dos horas y, en los casos muy raros en los que surge, los ayudamos de manera proactiva a ajustar el código. En realidad, este interruptor de interrupción se activa con muy poca frecuencia, y nunca hemos tenido una situación en la que no pudiéramos ajustar el código.
¿Qué necesitas para que todo esto funcione? Es una buena idea establecer un equipo de supervisión y administración de costos centralizado. La dotación de personal para este equipo no tiene por qué ser un compromiso de tiempo completo si su empresa no está en condiciones de financiarlo. Este equipo ayuda a crear una descripción general centralizada de la gestión de costos de Snowflake y puede actuar deliberadamente para evitar costos de fuga.
3) Aumentar la visibilidad de los metadatos
Otra parte fundamental de nuestro enfoque de administración de costos fue visualizar tablas de metadatos con Tableau. Snowflake proporciona una gran cantidad de metadatos muy útiles, que están fácilmente disponibles dentro de una serie de tablas y vistas de Snowflake. Conectar Tableau a estas tablas y vistas le permite visualizar mejor todos sus costos y analizar sus cargas de trabajo hasta los datos de nivel de consulta. Además, puede crear y distribuir informes estandarizados para enviarlos a su equipo de supervisión de costos, lo que facilita la detección de picos o anomalías en sus costos o patrones de uso.
Con esta visibilidad mejorada, puede hacer que el monitoreo de costos y el uso sea mucho más fácil para el equipo de supervisión. Los problemas se pueden detectar de forma inmediata y eficiente, lo que permite una acción rápida.
4) Preagregar y unir datos sin procesar granulares
Las agregaciones y uniones son inevitablemente caras. Hay una variedad de formas de intentar controlar estos costos, pero una de las formas en las que hemos tenido mucho éxito es con las tablas de almacenamiento de datos derivadas. Hemos ahorrado un porcentaje significativo de nuestros costos totales con solo hacerlo. Efectivamente, hemos escaneado nuestra carga de trabajo en busca de uniones o agregaciones repetitivas y luego, en lugar de procesar esas uniones repetidamente durante la jornada laboral, ejecutamos las uniones y los agregados varias veces al día, almacenamos los resultados en una tabla y pedimos a los usuarios que usen las tablas en lugar de volver a los datos sin procesar. Rara vez es un desafío cuando pedimos a las personas que muevan sus trabajos a estas tablas, ya que su SQL se vuelve más fácil y rápido.
Trabajar con AtScale lleva esto a otro nivel. La herramienta AtScale realiza este mismo tipo de evaluación, pero lo hace automáticamente y elimina los agregados innecesarios si no se están utilizando. El resultado es un conjunto de tablas preagregadas y unidas previamente, que pueden impulsar un gran volumen de trabajo de informes para la empresa.
La implementación de estas técnicas puede ayudar a proporcionar una plataforma de inteligencia empresarial a nivel empresarial con la potencia necesaria para desbloquear conocimientos y soluciones de datos significativos; y puede hacerlo sin tener que sacrificar el control o el costo.
Y este no es el final, hay más consejos y trucos para maximizar la productividad mientras se mantienen los costos, que no hay espacio para revisar aquí. Por ejemplo:
La nube es esencial para las empresas modernas, pero los beneficios como la escalabilidad y la flexibilidad no se logran de forma aislada. Es fundamental elegir el almacén de datos en la nube adecuado para su organización y vigilar la productividad, los patrones de uso y los costos. Una vez que elija un almacén de datos, haga el esfuerzo de probar e iterar sobre cómo puede optimizar el uso de su almacén de datos. Maximice el ROI al reducir los costos innecesarios asociados con el análisis comercial. Juntas, estas son las claves para aprovechar todo el valor de la nube.