
Dando el curso de «DP-203 de Ingenieria de datos en Azure», uno de mis alumnos me hizo una interesante pregunta que quiero responder.
Dentro de Synapse Analytics, tenemos dos «contextos» diferenciados para configurar la capacidad de cómputo con el que realizar las tareas: los pools de Spark, y los SQL Pool (ya sean dedicados o serverless).
Los primeros los puedo configurar de forma muy sencilla para que se auto detengan en un tiempo limitado -por ejemplo 15 minutos-, mientras que los SQL Pool dedicados, los tengo que pausar de forma manual desde el Synapse Analytics Studio.
La pregunta que surgió fue: ¿De qué forma puedo automatizar el arranque y parada de esta capacidad de computación, para así ajustar los costes?
Realmente tenemos varias formas de realizar y automatizar estas acciones. Pero, para no repetir lo ya publicado, en este artículo voy a compartir los enlaces más útiles a la documentación; explicando a donde apuntan y qué contienen:
- Inicio rápido: Pausa y reanudación del proceso en un grupo de SQL dedicado mediante Azure Portal
Una breve práctica en donde utilizo el Portal de Azure para pausar y arrancar un dedicated SLQ pool. Obviamente esté sistema es poco repetible y confiable. - Inicio rápido: Pausa y reanudación del proceso en un grupo de SQL dedicado con Azure PowerShell
Una breve práctica en donde utilizo PowerShell para realizar las acciones. Estos comandos no solamente los voy a poder lanzar desde Azure Cloud Shell, sino que también los puedo automatizar en un runbook, en una Azure Function o, como verás más adelante, en una Pipeline del propio Synapse Analytics. Si quiero conocer más cmdlets que también pueda utilizar, tengo una buena descripción en este documento. - Quickstart: Create a Synapse SQL pool with Azure CLI
Una breve práctica en donde lanzo las principales actividades de los SQL pool utilizando Azure CLI. Además, no solamente las puedo lanzar dentro de un Azure Cloud Shell, sino que las puedo automatizar en un fichero .bash y lanzarlas desde código en una Azure Function, u otro servicio de automatización que soporte el lenguaje de Azure CLI. - Pausa y reanudación de grupos de SQL dedicados con canalizaciones de Synapse
Una breve práctica en donde construyo un pipeline dentro del propio Synapse Analytics.
Primero listo todos los Dedicated SQL Pools que tengo dados de alta, filtro a los que les voy a aplicar las acciones, construyo un bucle ForEach en donde evalúo el estado de los pools, y enciendo o pauso los pools. Esta práctica es especialmente interesante porque muestra las capacidades básicas de la plataforma para gestionar sus propios recursos. Recomendable para aprender más sobre los pipelines. - API REST para el grupo de SQL dedicado en Azure Synapse Analytics
Un pequeño ejemplo del uso de la API Rest de los Dedicated SQL Pools, en donde enciendo y pauso las bases de datos (aquí falta todo el tema de la autenticación). Si necesito más operaciones contra esta API puedo leer este pequeño documento de referencia sobre la API de SQL Pools, o bucear en la documentación completa de la API de Azure Synapse Analytics.
Parece mucho material, pero en realidad no es así. En cada una de estas breves prácticas voy a ir a lo concreto de las operaciones de pausa y reinicio de mis Dedicated SQL Pool, para luego poder escoger que mecanismo de automatización quiero utilizar.
Post Data: no he incluido el uso de conexiones al pool desde herramientas externas como Visual Studio Code o SQL Server Management, pero que sepas que también se podría hacer con ellas.
¡Espero que sea de ayuda!