Uso de Redis Enterprise en Azure

El almacenamiento NoSQL viene en muchos tipos. Algunas son bases de datos de documentos, otras almacenan pares clave / valor, y todas admiten muchos tipos diferentes de índices y consultas. Hay sistemas basados ​​en disco y otros diseñados para funcionar en memoria. Algunos manejan grandes cantidades de datos de manera eficiente; otros se centran en ofrecer velocidad. Con tantos productos diferentes, a veces es difícil elegir uno.

Uno de los sistemas en memoria más populares es Redis, el servidor de diccionario remoto. Está construido sobre el servidor Redis de código abierto, patrocinado por RedisLabs, con un conjunto de opciones empresariales comerciales. Microsoft ha ofrecido su propia implementación del código abierto Redis en Azure desde hace algún tiempo, donde se usa principalmente como caché de alto rendimiento. Sin embargo, recientemente anunció una asociación con RedisLabs, trayendo una pila de Redis Enterprise completamente administrada a la nube de Microsoft.

Agregar Redis Enterprise a Azure

Quizás sea mejor pensar que el nuevo servicio agrega dos nuevos niveles a los servicios Básico, Estándar y Premium existentes: Enterprise y Enterprise SSD. La implementación de Redis de Microsoft se ha centrado en ofrecer un caché de alto rendimiento para sus datos en grandes aplicaciones nativas de la nube, donde el caché ayuda a administrar los mensajes para el código impulsado por eventos o el estado de la sesión cuando está construyendo sistemas en contenedores o sin servidor.

Los cachés no solo sirven para administrar los datos entrantes. Las aplicaciones modernas pueden usarlas como una forma de precargar contenido al que los usuarios acceden regularmente. Puede precargar Redis de Azure con sus activos comunes, como encabezados y logotipos, que no cambian con tanta frecuencia. Al alojarlos en la memoria, se pueden entregar mucho más rápidamente, en lugar de extraerlos del disco cada vez que se carga una página.

El uso de Redis tiene que ver con el rendimiento. Poner sus datos de caché en un sistema en memoria puede reducir significativamente la latencia de la aplicación, especialmente cuando está compilando y ejecutando aplicaciones distribuidas a escala. El contenido de las tiendas Redis se puede replicar entre regiones de Azure, lo que reduce el riesgo de que los usuarios de una región tengan que acceder al contenido almacenado en la mitad del mundo.

Comenzando con Azure Cache para Redis

La implementación de código abierto de Microsoft, Azure Cache for Redis, viene en Basic, Standard y Premium, con un tamaño máximo de 1.2TB para bases de datos Premium. Basic es una implementación de un solo nodo relativamente simple, sin SLA pero con una opción de tamaños de memoria. Estándar le brinda más confiabilidad al implementar un sistema de dos nodos y agregar un SLA. Si necesita un mejor rendimiento y una latencia más baja, la opción Premium usa un grado diferente de hardware de Azure, lo que brinda un rendimiento más alto que el estándar para lo que de otro modo sería la misma configuración.

Es bastante fácil configurar una caché de Redis en Azure. Comience con un nombre DNS, luego agregue la caché a un grupo de recursos y elija una ubicación. Esto configura las máquinas virtuales subyacentes e inicia su caché; una vez que Azure lo informe como en ejecución, puede usarlo en su código. Las credenciales necesarias para conectarse a Redis están en su Portal de Azure, con claves de acceso y cadenas de conexión. El portal muestra la dirección de su instancia más el puerto al que debe conectarse su código. De forma predeterminada, esto será a través de SSL.

Hay varios paquetes NuGet para usar Redis con sus aplicaciones .NET, con llamadas para obtener y configurar elementos en la caché de Redis, así como para verificar que su aplicación esté conectada a Redis. Todo lo que necesita hacer es configurar su cadena de conexión de caché y luego usarla para crear un objeto de caché a partir de su base de datos de Redis. Si está utilizando Visual Studio, puede trabajar con Redis utilizando herramientas de base de datos .NET conocidas, como Entity Framework.

Las aplicaciones basadas en Redis son fáciles de implementar usando patrones MVC (modelo, vista y controlador), usando controladores para escribir datos serializados en el caché y leerlos cuando sea necesario. Microsoft recomienda usar formatos JSON para escribir y leer datos, con datos JSON devueltos fáciles de formatear y mostrar usando bibliotecas comunes de JavaScript y .NET.

Azure Cache for Redis es más que una base de datos y un conjunto de API, ya que contiene un conjunto completo de herramientas de administración, incluida la supervisión. Estos pueden ayudarlo a escalar su instancia de Redis según sea necesario. Solo puede escalar niveles, pasando de Básico a Estándar a Premium.

Cualquier cambio de tamaño es una operación separada, y puede cambiar el tamaño hacia arriba o hacia abajo dentro del mismo nivel (con la condición de que no puede escalar a la oferta de tamaño estándar más pequeña). Si desea bajar de un nivel, cree una nueva instancia de Redis y luego copie cualquier dato o estructura en la nueva base de datos antes de eliminar la versión anterior. Si necesita automatizar el escalado, puede usar PowerShell o la CLI de Azure, o con código mediante las Bibliotecas de administración de Azure.

Ampliación a las funciones de base de datos en memoria de Redis Enterprise

La implementación de Redis de Azure es buena, pero no es toda la historia. Está basado en Redis de código abierto, por lo que no tiene todas las características de Redis Enterprise comercial. Es por eso que Microsoft y Redis colaboraron para ofrecer dos niveles adicionales, administrados por Microsoft y respaldados por ambas empresas, con integración completa en el Portal de Azure. Enterprise, el nivel base, usa almacenamiento estándar de Azure, mientras que el nivel Enterprise SSD agrega soporte para almacenamiento flash para un acceso más rápido a los datos que no están disponibles en la memoria.

Actualmente en una vista previa privada, el nuevo servicio agrega soporte para módulos clave de Redis Enterprise, lo que le permite usar el servicio para mucho más que datos puramente almacenados en caché. Esa es una distinción importante, ya que una base de datos rápida en memoria es una parte importante de un sistema a escala impulsado por eventos, especialmente uno que se basa en datos de series de tiempo. Otras características compatibles incluyen RedisBloom, que agrega filtrado de datos probabilísticos, y RediSearch, que mejora la indexación y le permite usar la búsqueda de texto completo en sus datos.

Se agregarán características adicionales a medida que el servicio pase de la vista previa privada a la disponibilidad general (actualmente programada para fines de 2020). Estos le permitirán usar la replicación activa-activa entre regiones geográficas e implementaciones híbridas que funcionan entre instancias de Redis privadas y alojadas en Azure. No es necesario tener una conexión dedicada entre local y Azure Redis; La replicación activa-activa funcionará a través de una VPN.

La nueva implementación de Redis Enterprise se parece a la caché de Azure existente para Redis dentro del portal, y podrá escalar a partir de instancias existentes o comenzar desde cero. Si está buscando un mejor rendimiento, la ampliación es una opción, pero probablemente desee crear una instancia completamente nueva si está utilizando alguna de las nuevas funciones de la base de datos. Puede habilitarlos como parte del proceso de creación, desde el portal o mediante una plantilla de Azure Resource Manager. Aunque gran parte de su administración y supervisión se realizará desde el interior del Portal de Azure, tiene la opción de usar las herramientas de administración propias de Redis para ayudar a ajustar y optimizar sus datos.

La combinación de la implementación de Redis de Azure y Redis Enterprise de RedisLabs es interesante y muestra cómo un proveedor con una oferta premium construida sobre una base de código abierto puede coexistir con nubes de hiperescala. Azure puede ofrecer un servicio basado en la plataforma de código abierto, mientras que las implementaciones más complejas pueden utilizar las herramientas de RedisLabs. Esta ruta le da a la empresa acceso a una nueva fuente de ingresos sin tener que cambiar su modelo de licencia a uno que excluye a los proveedores de la nube.

Con una ruta simple desde el servicio de caché basado en Redis de Azure a Redis Enterprise, y sin cambios en las herramientas de administración o las relaciones de facturación, también es transparente para los usuarios finales. Obtienen acceso a nuevos niveles y funciones sin tener que cambiar su forma de trabajar.