{"id":1462,"date":"2021-12-27T09:11:36","date_gmt":"2021-12-27T09:11:36","guid":{"rendered":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?p=1462"},"modified":"2021-12-27T09:38:53","modified_gmt":"2021-12-27T09:38:53","slug":"mejorando-el-rendimiento-de-azure-durable-functions-con-netherite","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/mejorando-el-rendimiento-de-azure-durable-functions-con-netherite\/","title":{"rendered":"Mejorando el rendimiento de Azure Durable Functions con Netherite"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1471\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/durable-functions-Netherite.jpg\" alt=\"\" width=\"607\" height=\"344\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/durable-functions-Netherite.jpg 607w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/durable-functions-Netherite-300x170.jpg 300w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><\/p>\n<p>En mayo de este a\u00f1o 2021, Microsoft anunci\u00f3 la llegada de nuevos proveedores de almacenamiento (Storage Providers) para mejorar el rendimiento de <strong>Azure Durable Functions<\/strong> ya que, en algunos casos, necesitamos m\u00e1s velocidad, fiabilidad o flexibilidad. En este art\u00edculo os voy a mostrar c\u00f3mo cambiar el Storage Provider a <strong>Netherite<\/strong>, c\u00f3mo funciona y qu\u00e9 ventajas nos aporta.<\/p>\n<p><!--more--><\/p>\n<h2>\u00bfQu\u00e9 es Netherite?<\/h2>\n<p><a href=\"https:\/\/microsoft.github.io\/durabletask-netherite\/#\/\">Netherite<\/a>, que a\u00fan est\u00e1 en Alpha, no es en s\u00ed un servicio ni un artefacto. Netherite es un motor de ejecuci\u00f3n de flujo de <strong>Azure Durable Functions,<\/strong> es decir, lo que cambia es el modo en el que funcionar\u00e1 internamente el flujo de la orquestaci\u00f3n durante la ejecuci\u00f3n.<\/p>\n<p>Podemos acceder al c\u00f3digo y a los ejemplos en\u00a0<a href=\"https:\/\/github.com\/microsoft\/durabletask-netherite\">el repositorio de GitHub.<\/a><\/p>\n<h2>\u00bfC\u00f3mo funciona Netherite?<\/h2>\n<p>Para el correcto funcionamiento de Azure Durable Functions, es necesario el uso de alg\u00fan sistema que permita ejecutar las diferentes Functions que componen cada orquestaci\u00f3n, incluyendo con ello las sub-orquestaciones. Adem\u00e1s, se usa un sistema de almacenamiento para poder guardar el estado y la informaci\u00f3n en cada momento.<\/p>\n<p>En el modelo actual con BlobStorage como proveedor de almacenamiento, se usan <strong>Azure Storage Queues<\/strong> para almacenar los mensajes, y <strong>Azure Storage Tables<\/strong> para almacenar la informaci\u00f3n del estado.<\/p>\n<p>Aunque este modelo funciona muy bien, en orquestadores que requieran una gran carga de trabajo, tantas escrituras y lecturas en colas y tablas, frena el rendimiento y el escalado.<\/p>\n<p>Netherite intenta solucionar este problema haciendo uso de <strong>Azure Event Hubs<\/strong> para almacenar los mensajes de forma persistente y poder ejecutarlos en orden, y <strong>Azure PageBlobs<\/strong> para almacenar el estado de la instancia de Durable Function en forma de logs, permitiendo un mayor rendimiento.<\/p>\n<h2>Requisitos<\/h2>\n<p>Antes de empezar a usar Netherite, tenemos que tener nuestro entorno de desarrollo preparado con todo lo necesario para no llevarnos sorpresas a mitad del camino.<\/p>\n<p>Microsoft nos propone estos requisitos m\u00ednimos. Tened cuidado si quer\u00e9is usar TypeScript o Python, porque hay algunos m\u00e1s, as\u00ed que id a la\u00a0<a href=\"https:\/\/microsoft.github.io\/durabletask-netherite\/#\/hello-sample\">documentaci\u00f3n<\/a><\/p>\n<blockquote class=\"wp-block-quote\"><p><a href=\"https:\/\/dotnet.microsoft.com\/download\/dotnet-core\/3.1\" target=\"_blank\" rel=\"noreferrer noopener\">.NET Core SDK 3.1<\/a>\u00a0or later. You can run\u00a0<code>dotnet --list-runtimes<\/code>\u00a0to check what is installed.<\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/azure\/azure-functions\/functions-run-local?tabs=windows%2Ccsharp%2Cbash\" target=\"_blank\" rel=\"noreferrer noopener\">Azure Functions Core Tools 3.x<\/a>\u00a0or later. You can run\u00a0<code>func --version<\/code>\u00a0to check what is installed.<\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/powershell\/scripting\/install\/installing-powershell?view=powershell-7.1\" target=\"_blank\" rel=\"noreferrer noopener\">PowerShell 7.1<\/a>\u00a0or later. You can check what is installed with\u00a0<code>pwsh --version<\/code>. PowerShell is easy to install or update via\u00a0<code>dotnet tool install --global PowerShell<\/code>\u00a0or\u00a0<code>dotnet tool install --global PowerShell<\/code>, respectively.<\/p>\n<p><a href=\"https:\/\/github.com\/Azure\/Azurite\" target=\"_blank\" rel=\"noreferrer noopener\">Azurite 3.x<\/a>\u00a0as storage emulator for the local execution. You can run\u00a0<code>azurite --version<\/code>\u00a0to check what is installed.<\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/cli\/azure\/install-azure-cli\" target=\"_blank\" rel=\"noreferrer noopener\">The Azure CLI 2.18.0<\/a>\u00a0or later. You can run\u00a0<code>az --version<\/code>\u00a0to check what is installed.<\/p>\n<p><a href=\"https:\/\/azure.microsoft.com\/free\/search\/\" target=\"_blank\" rel=\"noreferrer noopener\">An Azure subscription<\/a>, to allocate and deploy the required resources.<\/p>\n<p><cite><a href=\"https:\/\/microsoft.github.io\/durabletask-netherite\/#\/hello-sample\">\u2018Hello\u2019 Sample (microsoft.github.io)<\/a><\/cite><\/p><\/blockquote>\n<p>Si vamos a realizar\u00a0<strong>ejecuciones s\u00f3lo en local<\/strong>, es muy importante tener los 4 primeros requisitos: <strong>.Net SDK , Azure Functions Core Tools, PowerShell y Azurite.<\/strong><\/p>\n<p>Una vez tengamos todo instalado, podremos pasar al siguiente punto, que es establecer Netherite como Storage Provider.<\/p>\n<h2>C\u00f3mo establecer Netherite como Storage Provider<\/h2>\n<p>Microsoft, en su af\u00e1n de hacernos las cosas m\u00e1s sencillas (como siempre), ha puesto a nuestra disposici\u00f3n un ejemplo de Azure Durable Function usando Netherite como Storage Provider. <a href=\"https:\/\/microsoft.github.io\/durabletask-netherite\/#\/hello-sample\">Este ejemplo<\/a>\u00a0est\u00e1 desarrollado con .NET Core 3.1 y Azure Functions v3.<\/p>\n<p>Pero como en la vida real no podemos vivir de ejemplos, veamos c\u00f3mo lo podemos establecer nosotros \ud83d\ude09<\/p>\n<h3>Editar local.settings.json<\/h3>\n<p>Lo primero es establecer las variables de configuraci\u00f3n necesarias para el funcionamiento de la Azure Durable Function con Netherite. Para ello, tendremos que establecer las siguiente propiedades:<\/p>\n<ul>\n<li>AzureWebJobsStorage: Cadena de conexi\u00f3n a la cuenta de Storage<\/li>\n<li>EventHubsConnection: Cadena de conexi\u00f3n a Event Hub Namespace<\/li>\n<\/ul>\n<p>Si queremos ejecutar en local el archivo quedar\u00eda de la siguiente forma:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n{\r\n  &quot;IsEncrypted&quot;: false,\r\n  &quot;Values&quot;: {\r\n    &quot;AzureWebJobsStorage&quot;: &quot;UseDevelopmentStorage=true&quot;,\r\n    &quot;EventHubsConnection&quot;: &quot;MemoryF&quot;,\r\n \r\n    &quot;FUNCTIONS_WORKER_RUNTIME&quot;: &quot;dotnet&quot;\r\n  }\r\n}\r\n<\/pre>\n<blockquote class=\"wp-block-quote\"><p>MemoryF es la expresi\u00f3n clave que indica que se usar\u00e1 Event Hub de forma local<\/p><\/blockquote>\n<p>En caso de querer usar los servicios de Blob Storage y Event Hub publicados en Azure, ser\u00e1 necesario establecer las cadenas de conexi\u00f3n con la clave de acceso correspondiente a cada uno de ellos<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n{\r\n  &quot;IsEncrypted&quot;: false,\r\n  &quot;Values&quot;: {\r\n    &quot;AzureWebJobsStorage&quot;: &quot;DefaultEndpointsProtocol=https;AccountName=&#x5B;ACCOUNTNAME];AccountKey=&#x5B;ACCOUNTKEY];EndpointSuffix=core.windows.net&quot;,\r\n    &quot;EventHubsConnection&quot;: &quot;Endpoint=&#x5B;EVENTHUB_ENDPOINT];SharedAccessKeyName=&#x5B;SHAREDACCESSKEYNAME];SharedAccessKey=&#x5B;SHAREDACCESSKEYVALUE]&quot;,\r\n \r\n    &quot;FUNCTIONS_WORKER_RUNTIME&quot;: &quot;dotnet&quot;\r\n  }\r\n}\r\n<\/pre>\n<h3>Editar host.json<\/h3>\n<p>El siguiente paso es editar el archivo host.json para, ahora que tenemos la configuraci\u00f3n necesaria, indicar que se debe usar Netherite con esos valores. Para ello, en la documentaci\u00f3n podemos encontrar dos ejemplos, la versi\u00f3n m\u00ednima y la versi\u00f3n recomendada.<\/p>\n<p>Versi\u00f3n m\u00ednima indicando simplemente Netherite como Storage Provider:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n{\r\n  &quot;version&quot;: &quot;2.0&quot;,\r\n  &quot;extensions&quot;: {\r\n    &quot;durableTask&quot;: {\r\n      &quot;storageProvider&quot;: {\r\n        &quot;type&quot;: &quot;Netherite&quot;\r\n      }\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>Versi\u00f3n recomendada configurando n\u00famero de instancias concurrentes tanto de actividades como de orquestadores y n\u00famero de particiones:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n\r\n{\r\n  &quot;version&quot;: &quot;2.0&quot;,\r\n  &quot;extensions&quot;: {\r\n    &quot;durableTask&quot;: {\r\n \r\n      \/\/ The task hub name can be changed to start from a clean state\r\n      &quot;hubName&quot;: &quot;myawesomeapp-11&quot;,  \r\n \r\n      \/\/ set this to true to reduce likelihood of duplicated work items   \r\n      &quot;UseGracefulShutdown&quot;: &quot;true&quot;,\r\n \r\n      \/\/ tweak these for performance tuning (work the same for all backends)\r\n      &quot;maxConcurrentActivityFunctions&quot;: &quot;100&quot;,\r\n      &quot;maxConcurrentOrchestratorFunctions&quot;: &quot;100&quot;,\r\n \r\n      &quot;storageProvider&quot;: {\r\n \r\n        &quot;type&quot;: &quot;Netherite&quot;,\r\n \r\n        \/\/ the number of partitions to use. Cannot be changed after task hub is created.\r\n        &quot;PartitionCount&quot;: &quot;12&quot;,  \r\n \r\n        \/\/ where to look for the connection strings\r\n        &quot;StorageConnectionName&quot;: &quot;AzureWebJobsStorage&quot;,\r\n        &quot;EventHubsConnectionName&quot;: &quot;EventHubsConnection&quot;\r\n      }\r\n    }\r\n  }\r\n}  \r\n\r\n<\/pre>\n<h2>Ejecutando la Azure Durable Function con Netherite<\/h2>\n<p>Una vez hayamos editado los ficheros de configuraci\u00f3n, ya podremos hacer uso de Netherite, local o con servicios en Azure. As\u00ed que probemos la orquestaci\u00f3n que, en mi caso, se trata de la que genera la plantilla de Visual Studio con el \u00fanico cambio del nombre de las ciudades en el Hello.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1470\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/netherite-1.jpg\" alt=\"\" width=\"417\" height=\"371\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/netherite-1.jpg 417w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/netherite-1-300x267.jpg 300w\" sizes=\"auto, (max-width: 417px) 100vw, 417px\" \/><\/p>\n<p>Si, adem\u00e1s, revisamos las m\u00e9tricas de uso del servicio de Event Hub, podremos observar la cantidad de solicitudes que se generan para un ejemplo tan peque\u00f1o y que, usando Netherite, se realizan de forma eficiente y fiable.<\/p>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1469\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/netherite-2.jpg\" alt=\"\" width=\"488\" height=\"399\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/netherite-2.jpg 488w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/netherite-2-300x245.jpg 300w\" sizes=\"auto, (max-width: 488px) 100vw, 488px\" \/><\/figure>\n<h2>Ventajas de usar Netherite<\/h2>\n<p>Ya hemos hablado de algunas de las ventajas de Netherite, pero vamos a enumerarlas junto con el resto para hacer un resumen:<\/p>\n<ul>\n<li>Significativamente un mejor rendimiento<\/li>\n<li>Menor coste de escalado permiti\u00e9ndonos controlar y optimizar el gasto de forma flexible<\/li>\n<li>Hasta 32 particiones de datos con Event Hubs Basic y Standard SKUs<\/li>\n<li>Mayor eficacia en la relaci\u00f3n coste\/rendimiento que otros proveedores<\/li>\n<\/ul>\n<p>No obstante, las palabras escritas nos dicen poco sobre la realidad de nuestros desarrollos. Veamos una gr\u00e1fica con el benchmark entre BlobStorage y Netherite como Storage Providers para Durable Functions que es demoledora, demostrando que puede llegar a ser hasta casi 200 veces mejor en rendimiento Netherite.<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/techcommunity.microsoft.com\/t5\/image\/serverpage\/image-id\/283251iEA8364FD7ED21BA2\/image-size\/large?v=v2&amp;px=999\" alt=\"thumbnail image 2 of blog post titled New Storage Providers for Azure Durable Functions \" \/><\/figure>\n<h2>V\u00eddeo<\/h2>\n<p>Si prefer\u00eds ver el v\u00eddeo donde explico todo esto y lo muestro en vivo, aqu\u00ed lo ten\u00e9is.<\/p>\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\">\n<div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/nEx4tshA3yw\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<\/figure>\n<h2>Resumen<\/h2>\n<p>Si se usa Azure Durable Functions para cargas de trabajo grandes donde se necesita un buen rendimiento, BlobStorage como proveedor de almacenamiento presenta algunos inconvenientes que Netherite puede resolver mejorando significativamente el rendimiento. Adem\u00e1s es muy flexible a la hora de escalar y muy sencillo de configurar.<\/p>\n<p>No obstante, siempre recomiendo analizar bien el caso en el que aplicarlo,\u00a0 para no incurrir en un sobrecoste innecesario si BlobStorage nos aporta el rendimiento adecuado.<\/p>\n<p>Espero que os haya gustado.\u00a0Enjoy coding!<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>En mayo de este a\u00f1o 2021, Microsoft anunci\u00f3 la llegada de nuevos proveedores de almacenamiento (Storage Providers) para mejorar el rendimiento de Azure Durable Functions ya que, en algunos casos, necesitamos m\u00e1s velocidad, fiabilidad o flexibilidad. En este art\u00edculo os &hellip; <a href=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/mejorando-el-rendimiento-de-azure-durable-functions-con-netherite\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":22,"featured_media":1471,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[111,21],"tags":[],"class_list":["post-1462","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-functions","category-azure-table-storage"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Mejorando el rendimiento de Azure Durable Functions con Netherite | ENCAMINA<\/title>\n<meta name=\"description\" content=\"En este art\u00edculo os voy a mostrar c\u00f3mo cambiar el Storage Provider a Netherite, c\u00f3mo funciona y qu\u00e9 ventajas nos aporta.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.santiagoporras.com\/azure-durable-functions-netherite-storage-provider\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mejorando el rendimiento de Azure Durable Functions con Netherite\" \/>\n<meta property=\"og:description\" content=\"En este art\u00edculo os voy a mostrar c\u00f3mo cambiar el Storage Provider a Netherite, c\u00f3mo funciona y qu\u00e9 ventajas nos aporta.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.santiagoporras.com\/azure-durable-functions-netherite-storage-provider\/\" \/>\n<meta property=\"og:site_name\" content=\"Piensa en software, desarrolla en colores\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-27T09:11:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-12-27T09:38:53+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/durable-functions-Netherite.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"607\" \/>\n\t<meta property=\"og:image:height\" content=\"344\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Santiago Porras Rodr\u00edguez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@saintwukong\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Santiago Porras Rodr\u00edguez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.santiagoporras.com\\\/azure-durable-functions-netherite-storage-provider\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/mejorando-el-rendimiento-de-azure-durable-functions-con-netherite\\\/\"},\"author\":{\"name\":\"Santiago Porras Rodr\u00edguez\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/c84cf613b7c5b8d5e1f7625a3e4c8c27\"},\"headline\":\"Mejorando el rendimiento de Azure Durable Functions con Netherite\",\"datePublished\":\"2021-12-27T09:11:36+00:00\",\"dateModified\":\"2021-12-27T09:38:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/mejorando-el-rendimiento-de-azure-durable-functions-con-netherite\\\/\"},\"wordCount\":1288,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blog.santiagoporras.com\\\/azure-durable-functions-netherite-storage-provider\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2021\\\/12\\\/durable-functions-Netherite.jpg\",\"articleSection\":[\"Azure Functions\",\"Azure Table Storage\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.santiagoporras.com\\\/azure-durable-functions-netherite-storage-provider\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/mejorando-el-rendimiento-de-azure-durable-functions-con-netherite\\\/\",\"url\":\"https:\\\/\\\/blog.santiagoporras.com\\\/azure-durable-functions-netherite-storage-provider\\\/\",\"name\":\"Mejorando el rendimiento de Azure Durable Functions con Netherite | ENCAMINA\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.santiagoporras.com\\\/azure-durable-functions-netherite-storage-provider\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.santiagoporras.com\\\/azure-durable-functions-netherite-storage-provider\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2021\\\/12\\\/durable-functions-Netherite.jpg\",\"datePublished\":\"2021-12-27T09:11:36+00:00\",\"dateModified\":\"2021-12-27T09:38:53+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/c84cf613b7c5b8d5e1f7625a3e4c8c27\"},\"description\":\"En este art\u00edculo os voy a mostrar c\u00f3mo cambiar el Storage Provider a Netherite, c\u00f3mo funciona y qu\u00e9 ventajas nos aporta.\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.santiagoporras.com\\\/azure-durable-functions-netherite-storage-provider\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blog.santiagoporras.com\\\/azure-durable-functions-netherite-storage-provider\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2021\\\/12\\\/durable-functions-Netherite.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2021\\\/12\\\/durable-functions-Netherite.jpg\",\"width\":607,\"height\":344},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/\",\"name\":\"Piensa en software, desarrolla en colores\",\"description\":\"Las ventajas que te ofrece Microsoft Azure y el mundo.NET\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/c84cf613b7c5b8d5e1f7625a3e4c8c27\",\"name\":\"Santiago Porras Rodr\u00edguez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/626d42f63b21b55341f07a1a63002469e3b64521b19c99273621705f28165d74?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/626d42f63b21b55341f07a1a63002469e3b64521b19c99273621705f28165d74?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/626d42f63b21b55341f07a1a63002469e3b64521b19c99273621705f28165d74?s=96&d=mm&r=g\",\"caption\":\"Santiago Porras Rodr\u00edguez\"},\"description\":\"Innovation Team Leader at ENCAMINA | MVP in Developer Technologies. Apasionado por las nuevas tecnolog\u00edas. Colaboro con la comunidad de desarrolladores escribiendo art\u00edculos en mi blog personal y ocasionalmente en CompartiMOSS.com. Adem\u00e1s, soy uno de los coordinadores de TenerifeDev, grupo de usuarios de .NET de Tenerife y de otros grupos como Comunidad Office 365. Puedes encontrarme en la red microparticipando en Twitter con el usuario @saintwukong\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/saintwukong\"],\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/author\\\/en-tu-casa-o-en-la-mia\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mejorando el rendimiento de Azure Durable Functions con Netherite | ENCAMINA","description":"En este art\u00edculo os voy a mostrar c\u00f3mo cambiar el Storage Provider a Netherite, c\u00f3mo funciona y qu\u00e9 ventajas nos aporta.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.santiagoporras.com\/azure-durable-functions-netherite-storage-provider\/","og_locale":"es_ES","og_type":"article","og_title":"Mejorando el rendimiento de Azure Durable Functions con Netherite","og_description":"En este art\u00edculo os voy a mostrar c\u00f3mo cambiar el Storage Provider a Netherite, c\u00f3mo funciona y qu\u00e9 ventajas nos aporta.","og_url":"https:\/\/blog.santiagoporras.com\/azure-durable-functions-netherite-storage-provider\/","og_site_name":"Piensa en software, desarrolla en colores","article_published_time":"2021-12-27T09:11:36+00:00","article_modified_time":"2021-12-27T09:38:53+00:00","og_image":[{"width":607,"height":344,"url":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/durable-functions-Netherite.jpg","type":"image\/jpeg"}],"author":"Santiago Porras Rodr\u00edguez","twitter_card":"summary_large_image","twitter_creator":"@saintwukong","twitter_misc":{"Escrito por":"Santiago Porras Rodr\u00edguez","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.santiagoporras.com\/azure-durable-functions-netherite-storage-provider\/#article","isPartOf":{"@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/mejorando-el-rendimiento-de-azure-durable-functions-con-netherite\/"},"author":{"name":"Santiago Porras Rodr\u00edguez","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/c84cf613b7c5b8d5e1f7625a3e4c8c27"},"headline":"Mejorando el rendimiento de Azure Durable Functions con Netherite","datePublished":"2021-12-27T09:11:36+00:00","dateModified":"2021-12-27T09:38:53+00:00","mainEntityOfPage":{"@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/mejorando-el-rendimiento-de-azure-durable-functions-con-netherite\/"},"wordCount":1288,"commentCount":0,"image":{"@id":"https:\/\/blog.santiagoporras.com\/azure-durable-functions-netherite-storage-provider\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/durable-functions-Netherite.jpg","articleSection":["Azure Functions","Azure Table Storage"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.santiagoporras.com\/azure-durable-functions-netherite-storage-provider\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/mejorando-el-rendimiento-de-azure-durable-functions-con-netherite\/","url":"https:\/\/blog.santiagoporras.com\/azure-durable-functions-netherite-storage-provider\/","name":"Mejorando el rendimiento de Azure Durable Functions con Netherite | ENCAMINA","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.santiagoporras.com\/azure-durable-functions-netherite-storage-provider\/#primaryimage"},"image":{"@id":"https:\/\/blog.santiagoporras.com\/azure-durable-functions-netherite-storage-provider\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/durable-functions-Netherite.jpg","datePublished":"2021-12-27T09:11:36+00:00","dateModified":"2021-12-27T09:38:53+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/c84cf613b7c5b8d5e1f7625a3e4c8c27"},"description":"En este art\u00edculo os voy a mostrar c\u00f3mo cambiar el Storage Provider a Netherite, c\u00f3mo funciona y qu\u00e9 ventajas nos aporta.","inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.santiagoporras.com\/azure-durable-functions-netherite-storage-provider\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blog.santiagoporras.com\/azure-durable-functions-netherite-storage-provider\/#primaryimage","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/durable-functions-Netherite.jpg","contentUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/12\/durable-functions-Netherite.jpg","width":607,"height":344},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#website","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/","name":"Piensa en software, desarrolla en colores","description":"Las ventajas que te ofrece Microsoft Azure y el mundo.NET","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/c84cf613b7c5b8d5e1f7625a3e4c8c27","name":"Santiago Porras Rodr\u00edguez","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/626d42f63b21b55341f07a1a63002469e3b64521b19c99273621705f28165d74?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/626d42f63b21b55341f07a1a63002469e3b64521b19c99273621705f28165d74?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/626d42f63b21b55341f07a1a63002469e3b64521b19c99273621705f28165d74?s=96&d=mm&r=g","caption":"Santiago Porras Rodr\u00edguez"},"description":"Innovation Team Leader at ENCAMINA | MVP in Developer Technologies. Apasionado por las nuevas tecnolog\u00edas. Colaboro con la comunidad de desarrolladores escribiendo art\u00edculos en mi blog personal y ocasionalmente en CompartiMOSS.com. Adem\u00e1s, soy uno de los coordinadores de TenerifeDev, grupo de usuarios de .NET de Tenerife y de otros grupos como Comunidad Office 365. Puedes encontrarme en la red microparticipando en Twitter con el usuario @saintwukong","sameAs":["https:\/\/x.com\/saintwukong"],"url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/author\/en-tu-casa-o-en-la-mia\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/1462","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/comments?post=1462"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/1462\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/media\/1471"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/media?parent=1462"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/categories?post=1462"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/tags?post=1462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}