{"id":982,"date":"2019-10-18T14:45:19","date_gmt":"2019-10-18T12:45:19","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=982"},"modified":"2021-03-17T12:54:29","modified_gmt":"2021-03-17T11:54:29","slug":"metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/","title":{"rendered":"Metrics-driven scaling per Amazon Aurora serverless: come si usa?"},"content":{"rendered":"

L\u2019avvento del paradigma Serverless<\/strong> ha dato una decisa svolta al processo di creazione di nuove infrastrutture Cloud e alla loro gestione.<\/p>\n

Nel caso di architetture ospitate su Amazon Web Services, in particolare, \u00e8 possibile ottenere in pochissimo tempo un\u2019infrastruttura Serverless funzionante, semplice da manutenere e con costi sensibilmente ridotti<\/strong> rispetto ad un\u2019architettura \u201cclassica\u201d basata su server. Con un template di AWS CloudFormation anche basilare e dei semplici script di deploy, avremo ottenuto lo scheletro dell\u2019infrastruttura. Sfruttando servizi come Amazon S3 e AWS Lambda, poi, avremo ottenuto storage e potenza di calcolo, senza necessit\u00e0 di manutenere alcun server.<\/p>\n

Per rendere un\u2019architettura completamente serverless, per\u00f2, tutto ci\u00f2 non \u00e8 abbastanza: nel caso in cui occorra setuppare un sistema di Relational database management (RDBMS), la scelta del servizio migliore da utilizzare non \u00e8 altrettanto scontata.<\/p>\n

Il servizio AWS che meglio si presta a rendere serverless questo building block \u00e8 senza dubbio Aurora Serverless.<\/strong><\/p>\n

Aurora serverless, rilasciato nell\u2019agosto 2018, un RDBMS relazionale completamente serverless<\/strong> il cui vantaggio principale promesso \u00e8 senza dubbio lo scaling automatico.<\/strong><\/p>\n

Ma \u00e8 davvero una promessa mantenuta?<\/p>\n

Andiamo nel dettaglio del suo funzionamento per rispondere finalmente a questa domanda.<\/p>\n

Cos\u2019\u00e8 Aurora serverless?<\/h2>\n

Amazon Aurora Serverless offre una configurazione on-demand di auto-scaling per Amazon Aurora<\/strong> (compatibile con MySQL e PostgreSQL) che prevede start e spegnimento autonomi<\/strong> dei database e scale-up e down automatici<\/strong> sulla base nelle richieste effettive delle applicazioni, il tutto senza necessit\u00e0 di gestire alcuna istanza. Aurora Serverless \u00e8 la soluzione adatta a fronteggiare anche workloads intermittenti e non prevedibili.<\/strong><\/p>\n

Vediamo come, entrando nel dettaglio della configurazione.<\/p>\n

Come funziona l\u2019auto-scaling di Aurora Serverless?<\/h2>\n

\"\"<\/p>\n

Lo scaling di Aurora Serverless interviene in modo automatico, triggerato ad esempio da metriche e allarmi. In questo modo il deleveloper \u00e8 sollevato dalla necessit\u00e0 di progettare e gestire policy di scaling.<\/strong><\/p>\n

Il servizio agisce creando un volume di storage replicato su pi\u00f9 Availabily Zones<\/strong> (AZ). Verr\u00e0 poi creato un endpoint<\/strong> all\u2019interno della VPC a cui l\u2019applicazione si connetter\u00e0. A questo punto, configurando dietro all\u2019endpoint un Network Load Balancer<\/strong> (non visibile dall\u2019utente) e un router per le richieste di tipo multi-tenant, Aurora Serverless comincer\u00e0 ad indirizzare il traffico dei database alle istanze sottostanti.<\/p>\n

Questa configurazione consentir\u00e0 al cluster di scalare nel momento in cui ce ne sar\u00e0 la necessit\u00e0 (o di riavviarsi dopo essere stato in pausa). Nel momento di picco, Aurora Serverless attinger\u00e0 da un pool di nodi gi\u00e0 pronti e preconfigurati<\/strong> aggiungendone un numero ottimale ai routers che stanno ricevendo il carico di richieste. Lo storage condiviso tra nodi permetter\u00e0 ad Aurora Serverless di scalare istantaneamente sostenendo in pochissimi secondi qualsiasi workloads.<\/p>\n

Lo scale-up (o lo scale-down) del cluster interverr\u00e0 sulla base di limiti di capacit\u00e0 nella CPU<\/strong>, di numero di connessioni attive<\/strong> o di memoria occupata o nel caso in cui vengano rilevate performance issues.<\/strong><\/p>\n

Da tener presente quando ci si affida all\u2019auto-scaling di Aurora Serverless sono i tempi di cooldown:<\/strong> 15 minuti per poter effettuare un primo scale-down e 310 secondi per scalare nuovamente verso il basso.<\/p>\n

Il processo appena descritto \u00e8 automatico e gestito nella sua totalit\u00e0 da AWS. \u00c8 ovviamente possibile settare valori custom di minimo e massimo<\/strong> che andranno a triggerare le azioni di auto-scaling secondo le nostre necessit\u00e0.<\/p>\n

Il funzionamento di questo meccanismo di scaling autonomo \u00e8 dipendente dall\u2019esistenza di uno scaling point,<\/strong> ovvero di un preciso punto nel tempo in cui il database potr\u00e0 cominciare in tutta sicurezza (senza cio\u00e8 interrompere operazioni in corso) la procedura di scaling. Per default, se nessuno scaling point viene impostato, il servizio non \u00e8 in grado di procedere con lo scaling. L\u2019insuccesso nella ricerca di tale parametro da parte di Aurora Serverless, infatti, non causer\u00e0 nessun errore, n\u00e9 lo stop del servizio: l\u2019operazione di ricerca andr\u00e0 avanti per tutto il tempo in cui il cluster del DB sar\u00e0 sotto stress, ma nessun miglioramente di performance sar\u00e0 applicato.<\/p>\n

In assenza di scaling point impostato, \u00e8 comunque possibile triggerare lo scale-up di Aurora Serverless forzando l\u2019aumento di capacit\u00e0.<\/strong> Si tenga presente che, in questo caso, nessuna connessione in corso sar\u00e0 preservata. Le connessioni al DB potrebbero essere interrotte in un momento non sicuro con conseguente corruzione delle operazioni. Tale forzatura, se pur utile per ottenere lo scaling istantaneo, va usata con attenzione e limitatamente ad applicazioni resilienti alle interruzioni di connessione.<\/strong><\/p>\n

Lo scaling automatico di Aurora Serverless pu\u00f2 aiutarci a coprire la maggioranza dei casi d\u2019uso. Tuttavia, esistono specifici scenari in cui l\u2019auto-scaling gestito da AWS non permetterebbe ai DB delle nostre applicazioni di scalare in modo appropriato.<\/p>\n

Cosa fare?<\/h2>\n

In questi casi possiamo \u201caiutare\u201d il processo di auto-scaling sfruttando gli insights<\/strong> messi a disposizione dall\u2019applicazione.<\/p>\n

Vediamo quindi nel dettaglio come agire quando l\u2019auto-scaling gestito di AWS non performa bene.<\/p>\n

Il parametro \u201cdesired ACUs\u201d<\/h3>\n

Mentre nel caso di picchi di traffico prevedibili il cluster pu\u00f2 facilmente essere \u201cpre-allertato\u201d in modo da essere in grado di soddisfare efficacemente e senza errori tutte le richieste, nel caso di picchi consistenti improvvisi di traffico, l\u2019autoscaling potrebbe non riuscire a rispondere in tempi adeguati. Questo potrebbe dipendere da un settaggio non ottimale del valore ACUs del cluster.<\/strong> \u00a0Un valore troppo basso, infatti, impedirebbe uno scaling tempestivo.<\/p>\n

Ma modificare manualmente e puntualmente il parametro \u201cdesired ACUs\u201d \u00e8 la miglior soluzione?<\/p>\n

CloudWatch custom Metrics<\/h3>\n

Quel che non tutti i developer sanno \u00e8 che \u00e8 possibile rendere automatica la modifica del parametro “desired ACUs”<\/strong> sfruttando semplicemente la raccolta di metriche di utilizzo dell\u2019applicazione.<\/p>\n

A venirci in aiuto in questo caso sono i servizi Amazon CloudWatch<\/strong> e AWS Lambda.<\/strong><\/p>\n

Raccogliendo le metriche dell\u2019applicazione e mandandole a CloudWatch custom metrics<\/strong>, infatti, sar\u00e0 possibile impostare allarmi col compito di triggerare Lambda Function<\/strong> all\u2019interno del quale potremo implementare tutte le logiche di scaling custom<\/strong> che ci permetteranno di coprire potenzialmente qualunque necessit\u00e0.<\/p>\n

Use Case: un sistema in grado di elaborare e memorizzazione dati all\u2019interno di un RDBMS a partire da un flusso di dati generato da un\u2019applicazione.<\/h2>\n

\u00a0<\/strong>Prima di concludere, ecco una soluzione realizzata con Amazon Aurora Serverless:<\/p>\n

\"\"<\/p>\n

In questo progetto, ci\u00f2 che il cliente voleva ottenere era un sistema efficace per elaborare e salvare dati all\u2019interno di un RDBMS a partire da un flusso di dati generato da un\u2019applicazione.<\/span><\/p>\n

Il processo di analisi veniva azionato manualmente: il traffico verso il cluster, dunque, era pressoch\u00e9 nullo fino all\u2019avvio di una nuova analisi. La soluzione iniziale faceva in modo che l\u2019avvio dell\u2019analisi triggerasse lo start di un numero consistente di funzioni Lambda col compito di leggere tutti i dati messi in coda dal servizio Amazon SQS, di elaborarli e di salvare tutti i risultati nel DB connettendosi al cluster. Queste connessioni al DB generavano un picco improvviso di traffico diretto al cluster che, a sua volta, provocava un\u2019azione di auto-scaling. Tuttavia, questa situazione causava il fallimento di molte Lambda dovuto a numerosi errori di connessione dovuti ad all\u2019azione di auto-scaling non sufficientemente rapida.<\/span><\/p>\n

Per risolvere questo problema abbiamo fatto in modo che fosse la stessa applicazione a scatenare un aumento delle risorse del DB. Inoltre, agendo sul parametro \u201ddelay\u201d<\/strong> abbiamo configurato i messaggi sulla coda SQS, in modo da rendersi disponibili solo dopo un certo periodo di tempo. Questo accorgimento lasciava il tempo al DB di scalare, prima di procedere ad attivare tutte le connessioni.<\/span><\/p>\n

Alla fine dei conti la soluzione si \u00e8 dimostrata altamente performante.\u00a0<\/span><\/p>\n

La funzionalit\u00e0 di auto-scaling fa fronte in modo efficace al workload consistente causato dallo start del task di analisi, per poi riportare il DB alla capacit\u00e0 di minimo iniziale. Performance e costi risultano quindi ottimizzati al 100%.<\/span><\/p>\n

Con Aurora Serverless AWS \u00e8 riuscita efficacemente a coprire anche l\u2019ultimo gap rimasto nella creazione di soluzioni totalmente Serverless.\u00a0<\/span><\/p>\n

In questo articolo vi abbiamo dato qualche consiglio per sfruttarne al meglio tutte le potenzialit\u00e0.<\/span><\/p>\n

Ora \u00e8 il momento di provarlo anche per voi!<\/span><\/p>\n

Siamo curiosi di sapere cosa ne pensate<\/span><\/p>\n

Arrivederci al prossimo articolo!<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"

L\u2019avvento del paradigma Serverless ha dato una decisa svolta al processo di creazione di nuove infrastrutture Cloud e alla loro […]<\/p>\n","protected":false},"author":8,"featured_media":985,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[481],"tags":[257,263,267],"yoast_head":"\nMetrics-driven scaling per Amazon Aurora serverless: come si usa? - Proud2beCloud Blog<\/title>\n<meta name=\"description\" content=\"Aurora serverless \u00e8 un RDBMS serverless il cui vantaggio principale promesso \u00e8 lo scaling automatico. Ma \u00e8 davvero una promessa mantenuta? Scopriamolo!\" \/>\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.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Metrics-driven scaling per Amazon Aurora serverless: come si usa?\" \/>\n<meta property=\"og:description\" content=\"Aurora serverless \u00e8 un RDBMS serverless il cui vantaggio principale promesso \u00e8 lo scaling automatico. Ma \u00e8 davvero una promessa mantenuta? Scopriamolo!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/\" \/>\n<meta property=\"og:site_name\" content=\"Proud2beCloud Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-18T12:45:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-03-17T11:54:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.besharp.it\/wp-content\/uploads\/2019\/10\/aurora_blog-17.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1668\" \/>\n\t<meta property=\"og:image:height\" content=\"1251\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alessio Gandini\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Metrics-driven scaling per Amazon Aurora serverless: come si usa?\" \/>\n<meta name=\"twitter:description\" content=\"Aurora serverless \u00e8 un RDBMS serverless il cui vantaggio principale promesso \u00e8 lo scaling automatico. Ma \u00e8 davvero una promessa mantenuta? Scopriamolo!\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alessio Gandini\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/\",\"url\":\"https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/\",\"name\":\"Metrics-driven scaling per Amazon Aurora serverless: come si usa? - Proud2beCloud Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/#website\"},\"datePublished\":\"2019-10-18T12:45:19+00:00\",\"dateModified\":\"2021-03-17T11:54:29+00:00\",\"author\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/e7262d28e51528c2e420327f9b18cd43\"},\"description\":\"Aurora serverless \u00e8 un RDBMS serverless il cui vantaggio principale promesso \u00e8 lo scaling automatico. Ma \u00e8 davvero una promessa mantenuta? Scopriamolo!\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.besharp.it\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Metrics-driven scaling per Amazon Aurora serverless: come si usa?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.besharp.it\/it\/#website\",\"url\":\"https:\/\/blog.besharp.it\/it\/\",\"name\":\"Proud2beCloud Blog\",\"description\":\"il blog di beSharp\",\"alternateName\":\"Proud2beCloud Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.besharp.it\/it\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/e7262d28e51528c2e420327f9b18cd43\",\"name\":\"Alessio Gandini\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/eeb98518768d999bff24f8358b464fe2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/eeb98518768d999bff24f8358b464fe2?s=96&d=mm&r=g\",\"caption\":\"Alessio Gandini\"},\"description\":\"Cloud-native Development Line Manager @ beSharp, DevOps Engineer e AWS expert. Computer geek da quando avevo 6 anni, appassionato di informatica ed elettronica a tutto tondo. Ultimamente sto esplorando l'esperienza utente vocale e il mondo dell'IoT. Appassionato di cinema e grande consumatore di serie TV, videogiocatore della domenica.\",\"url\":\"https:\/\/blog.besharp.it\/it\/author\/alessio-gandini\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Metrics-driven scaling per Amazon Aurora serverless: come si usa? - Proud2beCloud Blog","description":"Aurora serverless \u00e8 un RDBMS serverless il cui vantaggio principale promesso \u00e8 lo scaling automatico. Ma \u00e8 davvero una promessa mantenuta? Scopriamolo!","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.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/","og_locale":"it_IT","og_type":"article","og_title":"Metrics-driven scaling per Amazon Aurora serverless: come si usa?","og_description":"Aurora serverless \u00e8 un RDBMS serverless il cui vantaggio principale promesso \u00e8 lo scaling automatico. Ma \u00e8 davvero una promessa mantenuta? Scopriamolo!","og_url":"https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/","og_site_name":"Proud2beCloud Blog","article_published_time":"2019-10-18T12:45:19+00:00","article_modified_time":"2021-03-17T11:54:29+00:00","og_image":[{"width":1668,"height":1251,"url":"https:\/\/blog.besharp.it\/wp-content\/uploads\/2019\/10\/aurora_blog-17.png","type":"image\/png"}],"author":"Alessio Gandini","twitter_card":"summary_large_image","twitter_title":"Metrics-driven scaling per Amazon Aurora serverless: come si usa?","twitter_description":"Aurora serverless \u00e8 un RDBMS serverless il cui vantaggio principale promesso \u00e8 lo scaling automatico. Ma \u00e8 davvero una promessa mantenuta? Scopriamolo!","twitter_misc":{"Scritto da":"Alessio Gandini","Tempo di lettura stimato":"7 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/","url":"https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/","name":"Metrics-driven scaling per Amazon Aurora serverless: come si usa? - Proud2beCloud Blog","isPartOf":{"@id":"https:\/\/blog.besharp.it\/it\/#website"},"datePublished":"2019-10-18T12:45:19+00:00","dateModified":"2021-03-17T11:54:29+00:00","author":{"@id":"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/e7262d28e51528c2e420327f9b18cd43"},"description":"Aurora serverless \u00e8 un RDBMS serverless il cui vantaggio principale promesso \u00e8 lo scaling automatico. Ma \u00e8 davvero una promessa mantenuta? Scopriamolo!","breadcrumb":{"@id":"https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.besharp.it\/it\/metrics-driven-scaling-per-amazon-aurora-serverless-come-si-usa\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.besharp.it\/it\/"},{"@type":"ListItem","position":2,"name":"Metrics-driven scaling per Amazon Aurora serverless: come si usa?"}]},{"@type":"WebSite","@id":"https:\/\/blog.besharp.it\/it\/#website","url":"https:\/\/blog.besharp.it\/it\/","name":"Proud2beCloud Blog","description":"il blog di beSharp","alternateName":"Proud2beCloud Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.besharp.it\/it\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/e7262d28e51528c2e420327f9b18cd43","name":"Alessio Gandini","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/eeb98518768d999bff24f8358b464fe2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eeb98518768d999bff24f8358b464fe2?s=96&d=mm&r=g","caption":"Alessio Gandini"},"description":"Cloud-native Development Line Manager @ beSharp, DevOps Engineer e AWS expert. Computer geek da quando avevo 6 anni, appassionato di informatica ed elettronica a tutto tondo. Ultimamente sto esplorando l'esperienza utente vocale e il mondo dell'IoT. Appassionato di cinema e grande consumatore di serie TV, videogiocatore della domenica.","url":"https:\/\/blog.besharp.it\/it\/author\/alessio-gandini\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/posts\/982"}],"collection":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/comments?post=982"}],"version-history":[{"count":0,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/posts\/982\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/media\/985"}],"wp:attachment":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/media?parent=982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/categories?post=982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/tags?post=982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}