{"id":120,"date":"2026-03-08T05:23:11","date_gmt":"2026-03-08T05:23:11","guid":{"rendered":"https:\/\/blog.rebalai.com\/es\/2026\/03\/08\/edge-computing-en-2026-por-qu-los-desarrolladores\/"},"modified":"2026-03-18T22:00:24","modified_gmt":"2026-03-18T22:00:24","slug":"edge-computing-en-2026-por-qu-los-desarrolladores","status":"publish","type":"post","link":"https:\/\/blog.rebalai.com\/es\/2026\/03\/08\/edge-computing-en-2026-por-qu-los-desarrolladores\/","title":{"rendered":"Edge Computing en 2026: Lo que aprend\u00ed despu\u00e9s de dos meses migrando nuestra API al edge"},"content":{"rendered":"<p>En octubre del a\u00f1o pasado, un usuario de Chile me mand\u00f3 un screenshot de DevTools mostrando 1.3 segundos de tiempo de respuesta <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/postgresql-performance-tuning-what-i-learned-optim\/\" title=\"en una\">en una<\/a> llamada a nuestra API de autenticaci\u00f3n. Nuestra <a href=\"https:\/\/m.do.co\/c\/06956e5e2802\" title=\"Infraestructura Cloud con DigitalOcean\" rel=\"nofollow sponsored\" target=\"_blank\">infraestructura<\/a> estaba en us-east-1 \u2014 perfecta para usuarios en Nueva York, bastante mala para alguien en Santiago. Llev\u00e1bamos meses sabiendo que esto era un problema, pero siempre hab\u00eda algo m\u00e1s urgente. Ese screenshot me dio el empuj\u00f3n que necesitaba.<\/p>\n<p>Somos un equipo peque\u00f1o: cinco desarrolladores, una aplicaci\u00f3n SaaS de gesti\u00f3n de proyectos con unos 12,000 usuarios activos, y el 30% del tr\u00e1fico viene de Am\u00e9rica Latina. Lo digo porque el edge computing no es la misma respuesta para todos. Mi experiencia es la de alguien que tiene que justificar cada hora de ingenier\u00eda.<\/p>\n<h2>Qu\u00e9 cambi\u00f3 <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"en el\">en el<\/a> edge entre 2024 y 2026<\/h2>\n<p>Cuando prob\u00e9 <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/cloudflare-workers-vs-aws-lambda-which-edge-runtim\/\" title=\"Cloudflare Workers\">Cloudflare Workers<\/a> por primera vez hace dos a\u00f1os, la experiencia era frustrante. El soporte de Node.js era parcial, hab\u00eda que reescribir medio proyecto para que funcionara con las APIs de Web, y el <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"Modelo de\">modelo de<\/a> depuraci\u00f3n era primitivo. Todav\u00eda recuerdo haber pasado una tarde entera intentando que <code>crypto<\/code> funcionara como esperaba.<\/p>\n<p>Hoy la situaci\u00f3n es diferente. Workers con Node.js Compatibility Mode \u2014 activado en <code>wrangler.toml<\/code> con <code>compatibility_flags = [\"nodejs_compat\"]<\/code> \u2014 cubre la mayor\u00eda de los m\u00f3dulos que usas <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"en el\">en el<\/a> d\u00eda a d\u00eda. No todos: hay excepciones notables, y voy a tocar eso. Pero la brecha con un entorno Node.js &#8220;normal&#8221; se cerr\u00f3 bastante.<\/p>\n<p>Lo que m\u00e1s cambi\u00f3, en mi opini\u00f3n, es la disponibilidad de almacenamiento <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"en el\">en el<\/a> edge. Antes, Workers KV era la \u00fanica opci\u00f3n en Cloudflare y ten\u00eda una latencia de escritura terrible \u2014 eventual consistency que pod\u00eda tardar decenas de segundos en propagarse. Durable Objects y la integraci\u00f3n con D1 hacen que casos de uso m\u00e1s complejos sean viables sin volverte loco.<\/p>\n<p>Vercel tambi\u00e9n madur\u00f3 su oferta de Edge Functions. <a href=\"https:\/\/aws.amazon.com\/?tag=synsun0f-20\" title=\"Amazon Web Services (AWS) Cloud Platform\" rel=\"nofollow sponsored\" target=\"_blank\">AWS<\/a> sigue con Lambda@Edge y CloudFront Functions, aunque nunca me convencieron tanto como Cloudflare <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/setting-up-github-actions-for-python-applications\/\" title=\"para Proyectos\">para proyectos<\/a> nuevos \u2014 la experiencia de desarrollo es m\u00e1s \u00e1spera y el debugging m\u00e1s opaco.<\/p>\n<h2>Cloudflare <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/cloudflare-workers-vs-aws-lambda-which-edge-runtim\/\" title=\"Workers vs\">Workers vs<\/a> Vercel Edge Functions: en qu\u00e9 difieren en la pr\u00e1ctica<\/h2>\n<p>Estas dos plataformas no compiten exactamente <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"en el\">en el<\/a> mismo espacio, aunque superficialmente parezca que s\u00ed. Me cost\u00f3 un tiempo entenderlo.<\/p>\n<p>Cloudflare Workers es una plataforma de prop\u00f3sito general. Puedes <a href=\"https:\/\/m.do.co\/c\/06956e5e2802\" title=\"Desplegar en DigitalOcean\" rel=\"nofollow sponsored\" target=\"_blank\">desplegar<\/a> workers independientes, crear APIs completas, manejar l\u00f3gica de routing \u2014 todo esto sin que tu aplicaci\u00f3n principal est\u00e9 en Cloudflare. Yo los uso para servicios que viven completamente fuera de nuestro stack de Next.js.<\/p>\n<p>Vercel Edge Functions est\u00e1n muy integradas con el framework que despliegas en Vercel. Si tienes una app de Next.js ah\u00ed, son fant\u00e1sticas para middleware: redireccionamiento basado en geolocalizaci\u00f3n, A\/B testing, modificar headers de respuesta. Pero intentar construir un backend independiente en Vercel Edge Functions se siente forzado.<\/p>\n<p>Una cosa que me sorprendi\u00f3: los l\u00edmites de CPU. <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/cloudflare-workers-vs-aws-lambda-which-edge-runtim\/\" title=\"Cloudflare Workers\">Cloudflare Workers<\/a> tiene un l\u00edmite de 10ms de CPU por request <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"en el\">en el<\/a> plan gratuito (50ms en Workers Paid). <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/08\/benchmarks-de-asistentes-de-cdigo-ia-pruebas-de-re\/\" title=\"esto es\">Esto es<\/a> CPU pura, no tiempo de reloj \u2014 las operaciones de I\/O no cuentan. Para verificaci\u00f3n de JWT y l\u00f3gica simple de autenticaci\u00f3n nunca lo roz\u00e9. Pero si est\u00e1s pensando en algo computacionalmente intenso <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"en el\">en el<\/a> edge, esto te va a dar problemas m\u00e1s r\u00e1pido de <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/configuracin-de-github-actions-para-aplicaciones-p\/\" title=\"lo que\">lo que<\/a> esperas.<\/p>\n<p>El pricing tambi\u00e9n importa. Con <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/cloudflare-workers-vs-aws-lambda-which-edge-runtim\/\" title=\"Cloudflare Workers\">Cloudflare Workers<\/a> pagas por requests (10 millones gratis al mes). Con Vercel el modelo es diferente y m\u00e1s dif\u00edcil de predecir si tienes picos de tr\u00e1fico. Para nosotros, Cloudflare result\u00f3 m\u00e1s barato una vez que superamos el tier gratuito.<\/p>\n<h2>C\u00f3mo migr\u00e9 nuestra autenticaci\u00f3n al edge<\/h2>\n<p>El caso de uso que eleg\u00ed para empezar fue la verificaci\u00f3n de tokens JWT. Ten\u00edamos un middleware en Express que validaba el token en cada request, consultaba la base <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/08\/rag-profundo-estrategias-de-chunking-bases-de-dato\/\" title=\"de Datos\">de datos<\/a> para verificar que la sesi\u00f3n no estuviera revocada, y agregaba la informaci\u00f3n del usuario al contexto. Todo ocurr\u00eda en us-east-1. Para un usuario en Buenos Aires, eso son f\u00e1cilmente 200ms antes de que el request llegara a la l\u00f3gica de negocio real.<\/p>\n<p>La idea: mover la verificaci\u00f3n del JWT al edge, y usar KV de Cloudflare para cachear las sesiones revocadas. Si el token est\u00e1 bien y la sesi\u00f3n no est\u00e1 en la lista negra, el request pasa directo. Si est\u00e1 en la lista negra, un 401 inmediato desde el edge sin tocar el origin.<\/p>\n<p>Antes de implementar tuve que entender el <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"Modelo de\">modelo de<\/a> datos. Workers KV tiene reads r\u00e1pidos (<a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/04\/ejecutar-llms-locales-en-2026-guia-completa-de-ollama-lm-studio-y-jan\/\" title=\"Locales en\">locales en<\/a> el edge) pero writes lentos y eventualmente consistentes. Para una lista de sesiones revocadas, <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/08\/benchmarks-de-asistentes-de-cdigo-ia-pruebas-de-re\/\" title=\"esto es\">esto es<\/a> aceptable: si un usuario revoca su sesi\u00f3n y tarda 15-20 segundos en propagarse globalmente, no es el fin del mundo. Para un carrito de compras o saldo bancario, ser\u00eda inaceptable. Con eso claro:<\/p>\n<pre><code class=\"language-javascript\">\/\/ auth-worker\/src\/index.js\n\/\/ <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/cloudflare-workers-vs-aws-lambda-which-edge-runtim\/\" title=\"Cloudflare Workers\">Cloudflare Workers<\/a> \u2014 wrangler 3.x, compatibility_flags = [&quot;nodejs_compat&quot;]\n\nexport default {\n  async fetch(request, env, ctx) {\n    const url = new URL(request.url);\n    const startTime = Date.now();\n\n    \/\/ Rutas p\u00fablicas: pasan directo al origin sin validaci\u00f3n\n    const publicPaths = ['\/auth\/login', '\/auth\/register', '\/health'];\n    if (publicPaths.some(p =&gt; url.pathname.startsWith(p))) {\n      return fetch(request);\n    }\n\n    const authHeader = request.headers.get('Authorization');\n    if (!authHeader?.startsWith('Bearer ')) {\n      return new Response('Unauthorized', { status: 401 });\n    }\n\n    const token = authHeader.slice(7);\n\n    let payload;\n    try {\n      \/\/ Web Crypto API est\u00e1 disponible nativamente \u2014 no necesitas librer\u00edas externas\n      payload = await verifyJWT(token, env.JWT_SECRET);\n    } catch (e) {\n      return new Response('Invalid token', { status: 401 });\n    }\n\n    \/\/ Esta lectura es local <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"en el\">en el<\/a> edge: t\u00edpicamente &lt; 5ms\n    const revoked = await env.REVOKED_SESSIONS.get(`session:${payload.jti}`);\n    if (revoked) {\n      return new Response('Session revoked', { status: 401 });\n    }\n\n    \/\/ Propagamos info del usuario al origin mediante headers internos\n    const modifiedRequest = new Request(request, {\n      headers: {\n        ...Object.fromEntries(request.headers),\n        'X-User-Id': payload.sub,\n        'X-User-Role': payload.role,\n        'X-Edge-Auth': 'verified', \/\/ el origin valida que este header venga del worker\n      }\n    });\n\n    \/\/ Logging async \u2014 no bloquea la respuesta al usuario\n    ctx.waitUntil(\n      logToAxiom(env, {\n        path: url.pathname,\n        userId: payload.sub,\n        processingMs: Date.now() - startTime,\n      })\n    );\n\n    return fetch(modifiedRequest);\n  }\n};\n<\/code><\/pre>\n<p>Dos semanas en <a href=\"https:\/\/m.do.co\/c\/06956e5e2802\" title=\"DigitalOcean para Producci\u00f3n\" rel=\"nofollow sponsored\" target=\"_blank\">producci\u00f3n<\/a>: la latencia p95 de autenticaci\u00f3n baj\u00f3 de 340ms a 45ms para usuarios en LATAM. En Norteam\u00e9rica no cambi\u00f3 mucho (ya estaban en 60-70ms). Europa mejor\u00f3 de 180ms a 55ms.<\/p>\n<p>Si tienes un caso de uso como este \u2014 stateless, con un cache que puede ser eventualmente consistente \u2014 la mejora de latencia es muy real con relativamente poco trabajo.<\/p>\n<h2>El debugging <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"en el\">en el<\/a> edge va a hacerte sufrir antes de que te acostumbres<\/h2>\n<p><code>wrangler dev<\/code> es tu mejor amigo para desarrollo local y simula el entorno de Workers razonablemente bien. Pero &#8220;razonablemente bien&#8221; no es &#8220;perfectamente&#8221;. Hay comportamientos que solo aparecen en <a href=\"https:\/\/m.do.co\/c\/06956e5e2802\" title=\"DigitalOcean para Producci\u00f3n\" rel=\"nofollow sponsored\" target=\"_blank\">producci\u00f3n<\/a>, especialmente relacionados con el timing de las llamadas a fetch.<\/p>\n<p>Empuj\u00e9 un cambio <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/kubernetes-vs-docker-swarm-vs-nomad-container-orch\/\" title=\"un Viernes\">un viernes<\/a> <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/setting-up-github-actions-for-python-applications\/\" title=\"a las\">a las<\/a> 5pm \u2014 s\u00ed, ya s\u00e9 \u2014 y unos 2% de los requests empezaron a devolver 500 sin ning\u00fan mensaje de error \u00fatil. El problema era que <code>Request.clone()<\/code> tiene un comportamiento sutil que no hab\u00eda notado en dev: si lees el body del request antes de clonarlo, el clone llega vac\u00edo. En mi local, todos mis requests de prueba eran GET sin body, as\u00ed que nunca lo vi. En <a href=\"https:\/\/m.do.co\/c\/06956e5e2802\" title=\"DigitalOcean para Producci\u00f3n\" rel=\"nofollow sponsored\" target=\"_blank\">producci\u00f3n<\/a>, los POST con body empezaron a fallar silenciosamente.<\/p>\n<p><code>wrangler tail<\/code> te da logs en tiempo real desde <a href=\"https:\/\/m.do.co\/c\/06956e5e2802\" title=\"DigitalOcean para Producci\u00f3n\" rel=\"nofollow sponsored\" target=\"_blank\">producci\u00f3n<\/a>, lo cual es genial. Pero no <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/08\/benchmarks-de-asistentes-de-cdigo-ia-pruebas-de-re\/\" title=\"es lo\">es lo<\/a> mismo que tener un debugger adjunto. Los stack traces a veces apuntan a l\u00edneas internas del runtime de V8 que no tienen nada que ver con tu c\u00f3digo \u2014 normalmente indica un problema de async mal manejado, pero encontrar cu\u00e1l puede llevarte una hora. <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/setting-up-github-actions-for-python-applications\/\" title=\"Aprend\u00ed a\">Aprend\u00ed a<\/a> loggear con mucha m\u00e1s granularidad que en un backend convencional:<\/p>\n<pre><code class=\"language-javascript\">ctx.waitUntil(\n  fetch(env.LOGGING_ENDPOINT, {\n    method: 'POST',\n    headers: { 'Content-Type': 'application\/json' },\n    body: JSON.stringify({\n      timestamp: Date.now(),\n      path: url.pathname,\n      userId: payload?.sub ?? 'anonymous',\n      processingMs: Date.now() - startTime,\n      region: request.cf?.colo, \/\/ el datacenter de Cloudflare que atendi\u00f3 el request\n    })\n  })\n);\n<\/code><\/pre>\n<p>Uso Cloudflare Analytics m\u00e1s Axiom para logs detallados. Funciona, pero honestamente no estoy seguro de que sea la configuraci\u00f3n \u00f3ptima \u2014 es el \u00e1rea donde sigo buscando algo m\u00e1s limpio.<\/p>\n<h2>Qu\u00e9 desplegar\u00eda al edge <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/deno-20-in-production-2026-migration-from-nodejs-a\/\" title=\"y Qu\u00e9\">y qu\u00e9<\/a> no<\/h2>\n<p>Despu\u00e9s <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/tcnicas-avanzadas-de-prompt-engineering-chain-of-t\/\" title=\"de dos\">de dos<\/a> meses tengo una perspectiva m\u00e1s clara sobre d\u00f3nde el edge <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/webassembly-in-2026-where-it-actually-makes-sense\/\" title=\"Tiene Sentido\">tiene sentido<\/a> real y d\u00f3nde no.<\/p>\n<p>Funciona bien: autenticaci\u00f3n y autorizaci\u00f3n, routing personalizado por geolocalizaci\u00f3n (<code>request.cf?.country<\/code> viene gratis sin llamadas adicionales), rate limiting por IP, transformaci\u00f3n de responses para agregar o remover headers, A\/B testing con cookies. Son todas operaciones r\u00e1pidas, sin estado persistente complejo, donde el beneficio de latencia es m\u00e1ximo.<\/p>\n<p>Lo que no desplegar\u00eda todav\u00eda: cualquier cosa que requiera acceso frecuente a <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/postgresql-performance-tuning-what-i-learned-optim\/\" title=\"una Base\">una base<\/a> <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/08\/rag-profundo-estrategias-de-chunking-bases-de-dato\/\" title=\"de Datos\">de datos<\/a> relacional. S\u00ed, existe Hyperdrive de Cloudflare para conectarse a PostgreSQL, y he experimentado con ello, pero la complejidad operacional me parece excesiva para un equipo de cinco personas. Tampoco l\u00f3gica de negocio con mucho estado, procesamiento de archivos (los l\u00edmites de memoria son reales), o c\u00f3digo que depende de m\u00f3dulos de Node.js a\u00fan no compatibles \u2014 <code>child_process<\/code>, partes de <code>fs<\/code>, cosas as\u00ed.<\/p>\n<p>\u00bf<a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/copilot-vs-cursor-vs-codeium\/\" title=\"Vale la Pena\">Vale la pena<\/a> la complejidad adicional? Depende de d\u00f3nde est\u00e1n tus usuarios. Si los tienes distribuidos globalmente y tu caso de uso encaja en las categor\u00edas de arriba, s\u00ed \u2014 la mejora es medible, no te\u00f3rica. Si tu <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/postgresql-performance-tuning-what-i-learned-optim\/\" title=\"Base de\">base de<\/a> usuarios est\u00e1 concentrada cerca de tu regi\u00f3n de despliegue, probablemente no. Operar dos ambientes tiene un costo real en debugging y en onboarding.<\/p>\n<p>Mi punto de entrada recomendado: el middleware de autenticaci\u00f3n, si tienes usuarios distribuidos. Tiene <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/github-copilot-vs-cursor-vs-codeium-el-mejor-asist\/\" title=\"El Mejor\">el mejor<\/a> ratio beneficio\/complejidad de todo <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/configuracin-de-github-actions-para-aplicaciones-p\/\" title=\"lo que\">lo que<\/a> prob\u00e9. Una vez que internalizas el modelo mental del edge \u2014 sin estado de proceso compartido, sin sistema de archivos, Web APIs en lugar de Node.js puro \u2014 el resto viene m\u00e1s natural. Como capa de optimizaci\u00f3n sobre un backend convencional, <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/08\/fastapi-vs-django-vs-flask-elegir-el-marco-web-pyt\/\" title=\"en 2026\">en 2026<\/a> ya <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/webassembly-in-2026-where-it-actually-makes-sense\/\" title=\"Tiene Sentido\">tiene sentido<\/a> real. Como reemplazo total de tu <a href=\"https:\/\/m.do.co\/c\/06956e5e2802\" title=\"Infraestructura Cloud con DigitalOcean\" rel=\"nofollow sponsored\" target=\"_blank\">infraestructura<\/a>, todav\u00eda no.<\/p>\n<p><!-- Reviewed: 2026-03-08 | Status: ready_to_publish | Changes: removed parallel list structure from final section and tightened conclusion, cut ~200 words of redundant framing, integrated \"Takeaway pr\u00e1ctico\" callout into prose, cut repetitive Vercel intro sentence, removed \"Lo menciono porque\" hedge and tightened team context, trimmed <a href=\"https:\/\/aws.amazon.com\/?tag=synsun0f-20\" title=\"Amazon Web Services (AWS) Cloud Platform\" rel=\"nofollow sponsored\" target=\"_blank\">AWS<\/a>\/Vercel comparison to one sentence, removed \"Which brings me to la pregunta real\" AI transition, flattened uniform paragraph lengths throughout --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En octubre del a\u00f1o pasado, un usuario de Chile me mand\u00f3 un screenshot de DevTools mostrando 1.3 segundos de tiempo de respuesta en una llamada a nuestra AP<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-120","post","type-post","status-publish","format-standard","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/posts\/120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/comments?post=120"}],"version-history":[{"count":26,"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/posts\/120\/revisions"}],"predecessor-version":[{"id":706,"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/posts\/120\/revisions\/706"}],"wp:attachment":[{"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/media?parent=120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/categories?post=120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/tags?post=120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}