{"id":3530,"date":"2021-09-03T13:59:00","date_gmt":"2021-09-03T11:59:00","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=3530"},"modified":"2024-02-02T12:00:17","modified_gmt":"2024-02-02T11:00:17","slug":"come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/","title":{"rendered":"Come integrare l’API legacy con il proxy AWS API Gateway"},"content":{"rendered":"\n

L’emergere di moderne applicazioni Web e mobile, basate su microservizi che espongono le API HTTP, ha evidenziato la necessit\u00e0 di integrare, distribuire, decommissionare, limitare e proteggere efficacemente una pletora di API Web eterogenee. Il motivo principale che ha causato l’affermarsi di questa necessit\u00e0 \u00e8 da ricercarsi nella disomogeneit\u00e0 intrinseca delle risorse di backend permesse e promosse dal modello a microservizi: ogni micro servizio che costituisce un’applicazione complessa pu\u00f2 essere sviluppato e distribuito con criteri esclusivi (linguaggio di programmazione, piattaforma di distribuzione, ecc.). Alcuni dei sopra citati criteri possono essere delle SaaS API, ovvero del software completamente fuori dal controllo diretto dell’azienda che sviluppa l’applicazione nel suo complesso. <\/p>\n\n\n\n

Diverse aziende e iniziative open source hanno sviluppato delle soluzioni API gateway<\/strong> al fine di soddisfare i requisiti di cui sopra, per aiutare gli sviluppatori e SysOps a gestire e proteggere le API in modo integrato ed infine per esporre un formato API consistente per tutti i microservizi che compongono l’applicazione.<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

<\/p>\n\n\n\n

Il servizio di Amazon che si fa carico delle necessit\u00e0 appena citate \u00e8 AWS API Gateway<\/strong>, le cui integrazioni con servizi esistenti di AWS e di terze parti sono descritte nell’immagine sopra riportata. Essenzialmente questo servizio agisce da proxy (con la possibilit\u00e0 di modificare e arricchire le richieste in entrata), caching, load balancer e un generale layer di sicurezza generale per tutte le API.<\/p>\n\n\n\n

A differenza di molte altre soluzioni, AWS API Gateway \u00e8 completamente gestito e serverless; ci\u00f2 si traduce nell\u2019assenza di manutenzione e ridimensionamento in quanto le API vengono gestite da AWS su pagamento di una tariffa fissa calcolata sul tasso di richiesta (per le API REST ~ 1,5 $ per milione di richieste).<\/p>\n\n\n\n

Di seguito verr\u00e0 proposto un approfondimento dell’argomento principale: perch\u00e9 e come utilizzare questo servizio per l’integrazione di API legacy, preceduto da un breve riepilogo sulle integrazioni AWS API Gateway.<\/p>\n\n\n\n

Integrazioni API Gateway<\/strong><\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

Nel contesto di API Gateway, un’integrazione API \u00e8 il tipo di azione eseguita dal gateway per rispondere a una data richiesta API. L’integrazione viene invocata dopo la validazione e l’autorizzazione della richiesta (se configurata\/necessaria). AWS API Gateway (API GW da qui in poi) supporta diversi tipi di integrazioni API:<\/p>\n\n\n\n

    \n
  1. Integrazione HTTP (HTTP\/HTTP_PROXY): \u00e8 il tipo di integrazione pi\u00f9 semplice, API GW inoltra le richieste a un server HTTP. Sono disponibili due modalit\u00e0: proxy (HTTP_PROXY) e non proxy (HTTP). Essendo un’integrazione HTTP generale, pu\u00f2 essere utilizzata per integrare le API esistenti sia su AWS EC2\/ECS che su server locali esistenti.<\/li>\n\n\n\n
  2. Integrazione Lambda (AWS_PROXY): viene richiamata una funzione lambda per gestire la richiesta. L’intera richiesta viene inoltrata a Lambda come oggetto JSON.<\/li>\n\n\n\n
  3. Altro servizio AWS (AWS): la richiesta viene inoltrata a un altro servizio AWS (es. kinesis, SQS, Lambda) dopo essere stata trasformata per aderire alle specifiche API del servizio AWS (se \u00e8 necessaria la modifica). \u00c8 possibile specificare il ruolo che eseguir\u00e0 la richiesta alle API del servizio. La maggior parte dei servizi AWS \u00e8 supportata.<\/li>\n\n\n\n
  4. Integrazione MOCK: restituisce risposte statiche o risposte a cui \u00e8 stata implementata una logica minima utilizando modelli di velocit\u00e0 (vedi https:\/\/docs.aws.amazon.com\/apigateway\/latest\/developerguide\/how-to-mock-integration.html<\/a>)<\/li>\n<\/ol>\n\n\n\n

    Un caso d’uso molto comune di API gateway  nel mondo reale, in cui molte delle integrazioni descritte in precedenza sono effettivamente utilizzate, consiste nella migrazione di un’applicazione legacy da un’infrastruttura monolitica a una moderna applicazione modularizzata basata su microservizi. In questo caso d’uso si avranno tipicamente molte API ancora ospitate sull’infrastruttura monolitica e altre API gi\u00e0 migrate su AWS Lambda (con l’integrazione AWS_PROXY) e\/o AWS ECS (Fargate) esposte tramite un bilanciatore di carico.<\/p>\n\n\n\n

    API gateway esporr\u00e0 un singolo endpoint che pu\u00f2 essere mappato su un Fully Qualified Domain Name (FQDN) a scelta utilizzando la funzionalit\u00e0 Custom Domain API Gateway.<\/p>\n\n\n\n

    Proxy di un’API esistente<\/strong><\/p>\n\n\n\n

    Concentriamoci ora sull’integrazione con la parte monolitica legacy dell’applicazione in fase di migrazione e supponiamo, per semplicit\u00e0, che le API esistenti siano pubblicamente raggiungibili, anche se con qualche sforzo in pi\u00f9 le API esistenti esposte privatamente sia on-prem che su AWS possono anche essere proxate (https:\/\/docs.aws.amazon.com\/apigateway\/latest\/developerguide\/http-api-develop-integrations-private.html<\/a>). Nell’esempio fornito qui utilizzeremo la regione AWS Irlanda (eu-west-1).<\/p>\n\n\n\n

    Iniziamo creando una nuova API nella console web AWS API GW: apri il tuo account AWS, vai al servizio API Gateway (https:\/\/eu-west-1.console.aws.amazon.com\/apigateway\/main\/apis?region=eu-west-1) e creiamo una nuova API, ci viene presentata la seguente procedura guidata:<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    I vari tipi di API che puoi selezionare hanno funzionalit\u00e0 diverse: le Websocket API sono utilizzate per applicazioni full-duplex in tempo reale, sicuramente non il nostro caso, mentre le API HTTP e REST sono entrambe scelte legittime. Le API HTTP, tuttavia, implementano solo un sottoinsieme delle funzionalit\u00e0 disponibili con le API REST. Ad esempio non sono implementate l\u2019autenticazione tramite il servizio Cognito, l\u2019autenticazione Iam, le integrazioni generiche di servizi AWS e le trasformazioni delle richieste tramite velocity template. <\/p>\n\n\n\n

    In questo esempio, per essere il pi\u00f9 generici possibile, useremo le API REST ma si tenga presente che le richieste API HTTP costano meno del 30% delle richieste API REST, quindi sono spesso la scelta pi\u00f9 conveniente.<\/p>\n\n\n\n

    Quindi facciamo clic su Crea su API REST, quindi scegli Nuova API e imposta nome e descrizione.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Il tipo di endpoint definisce dove sono ubicati gli endpoint: un endpoint edge crea una CDN (distribuzione Cloudfront) completamente gestita per distribuire gli endpoint in tutte le regioni AWS, quindi pi\u00f9 vicini ai clienti. Il rovescio della medaglia \u00e8 che diverse operazioni (es. associazioni di domini personalizzati, implementazioni) sono pi\u00f9 lente, mentre il prezzo \u00e8 lo stesso. In questo caso scegliamo l\u2019endpoint Regionale.<\/p>\n\n\n\n

    Fare clic su Crea API per finalizzare la procedura guidata di creazione.<\/p>\n\n\n\n

    Ora \u00e8 finalmente il momento di integrare la nostra API legacy. La cosa pi\u00f9 semplice che puoi fare \u00e8 configurare un semplice proxy utilizzando l’integrazione HTTP_PROXY. In questo esempio, l’integrazione HTTP_PROXY ha come target un\u2019API simulata di Petstore e distribuita da AWS su http:\/\/petstore-demo-endpoint.execute-api.com<\/a>.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Una volta creata la risorsa, questa pu\u00f2 essere visualizzata nella barra di sinistra come \/{proxy+}. Puoi selezionarla e in Azioni Risorsa si pu\u00f2 creare prima un Metodo di tipo ANY con le seguenti impostazioni:<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    dove l’URL dell’endpoint \u00e8 http:\/\/petstore-demo-endpoint.execute-api.com<\/a>.<\/p>\n\n\n\n

    Ora \u00e8 possibile Deployare l\u2019endpoint in modo che sia raggiungibile da internet: vai su Actions, Deploy API, nel form crea un nuovo stage e imposta la descrizione come desideri. La denominazione non \u00e8 importante in questa sezione.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Al termine del Deployment, puoi trovare il tuo nuovo URL API nella sezione Stages.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    e se lo si interroga con curl (curl -vv https:\/\/c1qci60bdh.execute-api.eu-west-1.amazonaws.com\/test\/petstore\/pets):\u00a0<\/p>\n\n\n\n

    [\n  {\n\t\"id\": 1,\n\t\"type\": \"cane\",\n\t\"prezzo\": 249,99\n  },\n  {\n\t\"id\": 2,\n\t\"tipo\": \"gatto\",\n\t\"prezzo\": 124,99\n  },\n  {\n\t\"id\": 3,\n\t\"tipo\": \"pesce\",\n\t\"prezzo \": 0.99\n  }\n]<\/code><\/pre>\n\n\n\n

    Fantastico, abbiamo configurato un proxy completamente serverless per un’API! Ora possiamo semplicemente impostare il nostro nome di dominio utilizzando Custom Domain Names. Vai a Custom Domain Names nella scheda a sinistra e crea un nuovo Custom Domain. Se selezioni Edge-optimized come tipo di endpoint, la latenza delle API sar\u00e0 inferiore perch\u00e9 l’endpoint verr\u00e0 distribuito nella edge location di una distribuzione Cloudfront gestita, tuttavia dovrai attendere diversi minuti per la creazione.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Dopo aver creato il nome di dominio (istantaneo se hai selezionato un endpoint regionale) ora devi impostare l’API Mapping in modo che sia possibile raggiungere l’API appena creata:<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    <\/p>\n\n\n\n

    Per creare la mappatura fai clic su Configure API mapping nella scheda API mapping del Dominio e configurarlo come segue e Salva:<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Ora \u00e8 necessario creare un record DNS CNAME nel tuo provider DNS (se sei tutto su AWS, probabilmente \u00e8 AWS Route 53) usando come valore del record testapi.besharp.net CNAME d-b42ojs42rb.execute-api.eu-west -1.amazonaws.com <\/p>\n\n\n\n

    Una volta che il DNS si \u00e8 propagato, si sar\u00e0 in grado di raggiungere l’API proxy tramite il tuo dominio personalizzato.<\/p>\n\n\n\n

    Ora si potrebbe voler configurare altri PATH in modo da poter integrare altre API con il metodo HTTP desiderato.<\/p>\n\n\n\n

    In questo esempio abbiamo creato un integrazione di tipo mock (https:\/\/docs.aws.amazon.com\/apigateway\/latest\/developerguide\/how-to-mock-integration.html<\/a>)<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    <\/p>\n\n\n\n

    Dopo il deployment se si esegue una richiesta POST su questo nuovo metodo API simulato, il nuovo endpoint mocked risponder\u00e0. Va notato che per un determinato percorso uri l’integrazione {proxy+} viene eseguita solo se non viene trovata alcuna altra risorsa e METODO HTTP corrispondente alla richiesta effettuata.<\/p>\n\n\n\n

    Il passaggio successivo \u00e8 modificare una richiesta in ingresso utilizzando il gateway API per integrare varie API legacy con una definizione API eterogenea in un endpoint API omogeneo esposto tramite API Gateway. A tale scopo \u00e8 possibile i Mapping Templates nelle integrazioni Api Gateway sia per modificare la richiesta che la risposta. Questo argomento molto ampio ed interessante verr\u00e0 spiegato in dettaglio in un articolo successivo. <\/p>\n\n\n\n

    Siamo giunti alla conclusione, restate sintonizzati sul nostro blog e se avete domande o trovate questo argomento interessante e desiderate interagire con noi non esitate a scrivere nei commenti. <\/p>\n","protected":false},"excerpt":{"rendered":"

    L’emergere di moderne applicazioni Web e mobile, basate su microservizi che espongono le API HTTP, ha evidenziato la necessit\u00e0 di […]<\/p>\n","protected":false},"author":9,"featured_media":3523,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[241],"tags":[255],"yoast_head":"\nCome integrare l'API legacy con il proxy AWS API Gateway - Proud2beCloud Blog<\/title>\n<meta name=\"description\" content=\"Integrare l'API legacy con il proxy AWS API Gateway: i nostri Cloud Expert ci spiegano come fare!\" \/>\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\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come integrare l'API legacy con il proxy AWS API Gateway\" \/>\n<meta property=\"og:description\" content=\"Integrare l'API legacy con il proxy AWS API Gateway: i nostri Cloud Expert ci spiegano come fare!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/\" \/>\n<meta property=\"og:site_name\" content=\"Proud2beCloud Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-03T11:59:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-02T11:00:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.besharp.it\/wp-content\/uploads\/2021\/09\/Copertina-blog-03-09-21-_03-09-21-social-ita.png\" \/>\n\t<meta property=\"og:image:width\" content=\"5001\" \/>\n\t<meta property=\"og:image:height\" content=\"2618\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Matteo Moroni\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Come integrare l'API legacy con il proxy AWS API Gateway\" \/>\n<meta name=\"twitter:description\" content=\"Integrare l'API legacy con il proxy AWS API Gateway: i nostri Cloud Expert ci spiegano come fare!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blog.besharp.it\/wp-content\/uploads\/2021\/09\/Copertina-blog-03-09-21-_03-09-21-social-ita.png\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matteo Moroni\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/\",\"url\":\"https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/\",\"name\":\"Come integrare l'API legacy con il proxy AWS API Gateway - Proud2beCloud Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/#website\"},\"datePublished\":\"2021-09-03T11:59:00+00:00\",\"dateModified\":\"2024-02-02T11:00:17+00:00\",\"author\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/0b3e69eb2dcb125d58476b906ec1c7bc\"},\"description\":\"Integrare l'API legacy con il proxy AWS API Gateway: i nostri Cloud Expert ci spiegano come fare!\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.besharp.it\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Come integrare l’API legacy con il proxy AWS API Gateway\"}]},{\"@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\/0b3e69eb2dcb125d58476b906ec1c7bc\",\"name\":\"Matteo Moroni\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/acad790b9bb4c6d62e076ecdc1debb35?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/acad790b9bb4c6d62e076ecdc1debb35?s=96&d=mm&r=g\",\"caption\":\"Matteo Moroni\"},\"description\":\"DevOps e Solution Architect di beSharp, mi occupo di sviluppare soluzioni Saas, Data Analysis, HPC e di progettare architetture non convenzionali a complessit\u00e0 divergente. Appassionato di informatica e fisica, da sempre lavoro nella prima e ho un PhD nella seconda. Parlare di tutto ci\u00f2 che \u00e8 tecnico e nerd mi rende felice!\",\"url\":\"https:\/\/blog.besharp.it\/it\/author\/matteo-moroni\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Come integrare l'API legacy con il proxy AWS API Gateway - Proud2beCloud Blog","description":"Integrare l'API legacy con il proxy AWS API Gateway: i nostri Cloud Expert ci spiegano come fare!","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\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/","og_locale":"it_IT","og_type":"article","og_title":"Come integrare l'API legacy con il proxy AWS API Gateway","og_description":"Integrare l'API legacy con il proxy AWS API Gateway: i nostri Cloud Expert ci spiegano come fare!","og_url":"https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/","og_site_name":"Proud2beCloud Blog","article_published_time":"2021-09-03T11:59:00+00:00","article_modified_time":"2024-02-02T11:00:17+00:00","og_image":[{"width":5001,"height":2618,"url":"https:\/\/blog.besharp.it\/wp-content\/uploads\/2021\/09\/Copertina-blog-03-09-21-_03-09-21-social-ita.png","type":"image\/png"}],"author":"Matteo Moroni","twitter_card":"summary_large_image","twitter_title":"Come integrare l'API legacy con il proxy AWS API Gateway","twitter_description":"Integrare l'API legacy con il proxy AWS API Gateway: i nostri Cloud Expert ci spiegano come fare!","twitter_image":"https:\/\/blog.besharp.it\/wp-content\/uploads\/2021\/09\/Copertina-blog-03-09-21-_03-09-21-social-ita.png","twitter_misc":{"Scritto da":"Matteo Moroni","Tempo di lettura stimato":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/","url":"https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/","name":"Come integrare l'API legacy con il proxy AWS API Gateway - Proud2beCloud Blog","isPartOf":{"@id":"https:\/\/blog.besharp.it\/it\/#website"},"datePublished":"2021-09-03T11:59:00+00:00","dateModified":"2024-02-02T11:00:17+00:00","author":{"@id":"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/0b3e69eb2dcb125d58476b906ec1c7bc"},"description":"Integrare l'API legacy con il proxy AWS API Gateway: i nostri Cloud Expert ci spiegano come fare!","breadcrumb":{"@id":"https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.besharp.it\/it\/come-integrare-lapi-legacy-con-il-proxy-aws-api-gateway\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.besharp.it\/it\/"},{"@type":"ListItem","position":2,"name":"Come integrare l’API legacy con il proxy AWS API Gateway"}]},{"@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\/0b3e69eb2dcb125d58476b906ec1c7bc","name":"Matteo Moroni","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/acad790b9bb4c6d62e076ecdc1debb35?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/acad790b9bb4c6d62e076ecdc1debb35?s=96&d=mm&r=g","caption":"Matteo Moroni"},"description":"DevOps e Solution Architect di beSharp, mi occupo di sviluppare soluzioni Saas, Data Analysis, HPC e di progettare architetture non convenzionali a complessit\u00e0 divergente. Appassionato di informatica e fisica, da sempre lavoro nella prima e ho un PhD nella seconda. Parlare di tutto ci\u00f2 che \u00e8 tecnico e nerd mi rende felice!","url":"https:\/\/blog.besharp.it\/it\/author\/matteo-moroni\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/posts\/3530"}],"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\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/comments?post=3530"}],"version-history":[{"count":0,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/posts\/3530\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/media\/3523"}],"wp:attachment":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/media?parent=3530"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/categories?post=3530"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/tags?post=3530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}