{"id":79153,"date":"2020-04-24T19:42:43","date_gmt":"2020-04-24T17:42:43","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom"},"modified":"2020-04-24T19:42:43","modified_gmt":"2020-04-24T17:42:43","slug":"istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom","title":{"rendered":"Storia della creazione del servizio cloud, arricchita da cyberpunk","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/d1cad1dfa3513b5794c7be916a9dbb4b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Con l'aumentare dell'esperienza nel settore IT, inizi a notare che i sistemi hanno una loro personalit\u00e0. Possono essere docili, silenziosi, capricciosi, o severi. Possono attrarti o respingerti. In ogni caso, devi \"trovare un compromesso\" con loro, navigando tra \"insidie\" e costruendo catene dei loro interazioni.<\/p>\n<p><\/p>\n<p>E cos\u00ec abbiamo avuto l'onore di costruire una piattaforma cloud, e per farlo \u00e8 stato necessario \"convincere\" un paio di sottosistemi a lavorare con noi. Fortunatamente, abbiamo un \"linguaggio API\", mani abili e una grande dose di entusiasmo. <\/p>\n<p><\/p>\n<p>In questo articolo non ci sar\u00e0 hardcore tecnico, ma una descrizione dei problemi che abbiamo affrontato nel costruire il cloud. Ho deciso di descrivere il nostro percorso come una leggerezza di fantasia tecnica su come abbiamo cercato un linguaggio comune con i sistemi e cosa ne \u00e8 venuto fuori. <\/p>\n<p><\/p>\n<p>Benvenuti sotto.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h3 id=\"nachalo-puti\">Inizio del viaggio<\/h3>\n<p><\/p>\n<p>Qualche tempo fa la nostra squadra ha ricevuto l'incarico di avviare una piattaforma cloud per i nostri clienti. Avevamo il supporto della direzione, risorse, un'infrastruttura hardware e libert\u00e0 nella scelta delle tecnologie per realizzare la parte software del servizio.<\/p>\n<p><\/p>\n<p>C'erano anche alcuni requisiti:<\/p>\n<p><\/p>\n<ul>\n<li>il servizio ha bisogno di un'interfaccia utente comoda;<\/li>\n<li>la piattaforma deve essere integrata nel sistema di fatturazione esistente;<\/li>\n<li>la parte software e hardware: OpenStack + Tungsten Fabric (Open Contrail), di cui i nostri ingegneri hanno acquisito una buona padronanza.<\/li>\n<\/ul>\n<p><\/p>\n<p>Racconteremo in un'altra occasione come \u00e8 stata formata la squadra, come \u00e8 stato sviluppato l'interfaccia dell'account personale e come sono state prese le decisioni di design, se la comunit\u00e0 di Habr sar\u00e0 interessata.<br \/>\nGli strumenti che abbiamo deciso di utilizzare:<\/p>\n<p><\/p>\n<ul>\n<li>Python + Flask + Swagger + SQLAlchemy \u2014 un insieme Python abbastanza standard;<\/li>\n<li>Vue.js per il frontend;<\/li>\n<li>abbiamo deciso di gestire l'interazione tra i componenti e i servizi utilizzando Celery sopra AMQP.<\/li>\n<\/ul>\n<p><\/p>\n<p>Anticipando le domande sulla scelta di Python, spiego. Il linguaggio ha trovato la sua nicchia nella nostra azienda e intorno ad esso si \u00e8 sviluppata una piccola, ma pur sempre una cultura. Pertanto, \u00e8 stato deciso di iniziare a costruire il servizio proprio su di esso. Inoltre, la velocit\u00e0 di sviluppo in compiti di questo tipo spesso fa la differenza. <\/p>\n<p><\/p>\n<p>Quindi, iniziamo il nostro incontro.<\/p>\n<p><\/p>\n<h3 id=\"molchalivyy-bill--billing\">Bill il Silenzioso \u2014 fatturazione<\/h3>\n<p><\/p>\n<p><em>Con questo tipo di persona ci conosciamo da tempo. \u00c8 sempre seduto l\u00ec accanto e contava qualcosa in silenzio. A volte ci passava le richieste degli utenti, emetteva fatture ai clienti, gestiva i servizi. Un ragazzo normale e laborioso. Tuttavia, c'erano delle difficolt\u00e0. Era riservato, a volte pensieroso e spesso \u2014 nel suo mondo.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/262bb5c9d6234041d264f8e041e647fe.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La fatturazione \u00e8 il primo sistema con cui abbiamo cercato di familiarizzare. E la prima difficolt\u00e0 ci si \u00e8 presentata durante l'elaborazione dei servizi.<\/p>\n<p><\/p>\n<p>Ad esempio, durante la creazione o la cancellazione, il compito finisce in una coda interna della fatturazione. In questo modo \u00e8 realizzato un sistema di lavoro asincrono con i servizi. Per elaborare i nostri tipi di servizi dovevamo \"accumulare\" i nostri compiti in questa coda. E qui ci siamo scontrati con un problema: la mancanza di documentazione. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/4d96251df014e315308c94f848bc6cd0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dalla descrizione dell'API, sembra che sia comunque possibile risolvere questo compito, ma non abbiamo avuto tempo per dedicarci al reverse engineering, quindi abbiamo estratto la logica e organizzato una coda di compiti sopra RabbitMQ. L'operazione sul servizio \u00e8 innescata dal cliente dal proprio pannello di controllo, avvolta in un 'compito' Celery sul backend e viene eseguita dal sistema di fatturazione e OpenStack. Celery consente di gestire in modo abbastanza comodo i compiti, organizzare i retry e monitorare lo stato. Per saperne di pi\u00f9 su 'Celery' si pu\u00f2 leggere, ad esempio, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/433476\/\">qui<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Inoltre, il sistema di fatturazione non ha stoppato il progetto quando i fondi sono finiti. Parlando con gli sviluppatori, abbiamo scoperto che durante il calcolo delle statistiche (e noi dobbiamo implementare proprio questa logica) esiste una complessa interrelazione delle regole di interruzione. Ma questi modelli non si adattano bene alle nostre realt\u00e0. Abbiamo anche implementato questa logica tramite compiti su Celery, portando sul backend la gestione dei servizi. <\/p>\n<p><\/p>\n<p>Entrambe le problematiche sopra citate hanno portato a un certo appesantimento del codice e in futuro dovremo occuparci del refactoring per separare la logica di gestione delle attivit\u00e0 in un servizio dedicato. Dobbiamo anche conservare parte delle informazioni sugli utenti e sui loro servizi nelle nostre tabelle per sostenere questa logica.<\/p>\n<p><\/p>\n<p>Un altro problema \u00e8 il silenzio.<\/p>\n<p><\/p>\n<p>Su alcune richieste all'API, Billi risponde silenziosamente con un \u00abOk\u00bb. Ad esempio, \u00e8 successo quando effettuavamo accrediti dei pagamenti promessi durante la fase di test (di cui parler\u00f2 pi\u00f9 tardi). Le richieste venivano eseguite correttamente e non vedevamo errori. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/d03f2c381fd39dbf33f2a0c3eeb1294d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ho dovuto esaminare i log, lavorando con il sistema tramite l'interfaccia utente. Si \u00e8 scoperto che il billing stesso esegue tali richieste, cambiando lo scope per un utente specifico, ad esempio, admin, passando questo come parametro su.<\/p>\n<p><\/p>\n<p>Nel complesso, nonostante le lacune nella documentazione e piccoli difetti nell'API, tutto \u00e8 andato abbastanza bene. I log sono leggibili anche con un carico elevato, se si comprende come sono strutturati e cosa cercare. La struttura del database \u00e8 complicata ma del tutto logica e in alcuni aspetti persino attraente.<\/p>\n<p><\/p>\n<p>Quindi, riassumendo, i principali problemi che abbiamo incontrato durante l'interazione riguardano le peculiarit\u00e0 di implementazione del sistema specifico: <\/p>\n<p><\/p>\n<ul>\n<li>funzionalit\u00e0 non documentate che ci hanno coinvolto in un modo o nell'altro;<\/li>\n<li>codice sorgente chiuso (la fatturazione \u00e8 scritta in C++), di conseguenza \u2014 impossibilit\u00e0 di risolvere il problema 1 in alcun modo, se non attraverso il \"metodo di prova ed errore\".<\/li>\n<\/ul>\n<p><\/p>\n<p>Fortunatamente, il prodotto ha un API abbastanza ampia e abbiamo integrato nel nostro pannello personale i seguenti sotto-sistemi:<\/p>\n<p><\/p>\n<ul>\n<li>modulo di assistenza tecnica \u2014 le richieste dal pannello personale vengono \"proxyizzate\" nella fatturazione in modo trasparente per i clienti del servizio;<\/li>\n<li>modulo finanziario \u2014 consente di emettere fatture ai clienti attuali, effettuare addebiti e generare documenti di pagamento;<\/li>\n<li>modulo di gestione dei servizi \u2014 per questo abbiamo dovuto implementare il nostro gestore. L'espandibilit\u00e0 del sistema ha lavorato a nostro favore e abbiamo \"istruito\" Billy a un nuovo tipo di servizi.<br \/>\n\u00c8 stato un po' di lavoro, ma in un modo o nell'altro, penso che andremo d'accordo con Billy.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"progulki-po-volframovym-polyam--tungsten-fabric\">Passeggiate nei campi di tungsteno \u2014 Tungsten Fabric<\/h3>\n<p><\/p>\n<p><em>Campi di tungsteno costellati di centinaia di cavi che trasmettono migliaia di bit di informazioni. Le informazioni vengono raccolte in \"pacchetti\", elaborate, creando percorsi complessi, come per magia.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/9b6dd46d9f15e0e3393a8c1222abbf2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Questo \u00e8 il regno del secondo sistema con cui abbiamo dovuto fare amicizia: Tungsten Fabric (TF), precedentemente noto come OpenContrail. Il suo compito \u00e8 gestire l'hardware di rete, fornendo un'astrazione software a noi utenti. TF \u00e8 SDN, che incapsula una logica complessa per lavorare con l'hardware di rete. Ci sono articoli interessanti sulla tecnologia, ad esempio, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/muk\/blog\/251959\/\">qui<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Il sistema \u00e8 integrato con OpenStack (di cui parleremo pi\u00f9 avanti) tramite il plugin di Neutron. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/5abe3992efaab3e016a0c51dc0070a94.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Interazione dei servizi OpenStack.<\/em><\/p>\n<p><\/p>\n<p>Siamo stati introdotti a questo sistema dai ragazzi del reparto operativo. Utilizziamo l'API del sistema per gestire lo stack di rete dei nostri servizi. Finora non abbiamo avuto problemi seri o disagi (non mi prendo la responsabilit\u00e0 di parlare per i ragazzi dell'OE), tuttavia ci sono stati alcuni eventi curiosi durante l'interazione.<\/p>\n<p><\/p>\n<p>Il primo si \u00e8 presentato cos\u00ec: i comandi che richiedevano l'output di un gran numero di dati sulla console dell'istanza durante la connessione SSH semplicemente \"bloccavano\" la connessione, mentre tutto funzionava correttamente su VNC.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/02bc97d63a1299e1dda08fce0f10fb97.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Per chi non \u00e8 familiare con il problema, pu\u00f2 sembrare piuttosto divertente: ls \/root funziona correttamente, mentre, ad esempio, top \u00absi blocca\u00bb completamente. Fortunatamente, abbiamo gi\u00e0 affrontato problemi simili. Si \u00e8 risolto ottimizzando l'MTU sul percorso dalle nodi compute ai router. A proposito, questo non \u00e8 un problema di TF.<\/p>\n<p><\/p>\n<p>La prossima problematica ci attendeva dietro l'angolo. In un \u00abmeraviglioso\u00bb momento, la magia del routing \u00e8 svanita, cos\u00ec, all'improvviso. TF ha smesso di gestire il routing sull'hardware.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/db2a75ffdf2940b2ca90f73835f7a321.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Abbiamo lavorato con OpenStack a livello di admin e poi siamo passati al livello dell'utente necessario. SDN, a quanto pare, \u00abintercetta\u00bb il dominio dell'utente con cui vengono eseguite le azioni. Il fatto \u00e8 che questo stesso account admin viene utilizzato per collegare TF e OpenStack. Durante il passaggio all'utente, la \u00abmagia\u00bb svaniva. Abbiamo deciso di creare un account separato per lavorare con il sistema. Questo ha permesso di operare senza compromettere la funzionalit\u00e0 dell'integrazione.<\/p>\n<p><\/p>\n<h3 id=\"silikonovye-formy-zhizni--openstack\">Forme di vita siliconiche \u2014 OpenStack<\/h3>\n<p><\/p>\n<p><em>Una creatura siliconica di forma bizzarra vive vicino ai campi di tungsteno. Ricorda molto un bambino gigante, in grado con un solo colpo di schiacciarci, ma non mostra segni evidenti di aggressivit\u00e0. Non provoca paura, ma le sue dimensioni instillano preoccupazione. Cos\u00ec come la complessit\u00e0 di ci\u00f2 che accade intorno.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/8622d43e0cb963bc9ef2a2ce59a32499.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>OpenStack \u00e8 il nucleo della nostra piattaforma.<\/p>\n<p><\/p>\n<p>OpenStack ha diversi sottosistemi, dei quali al momento utilizziamo principalmente Nova, Glance e Cinder. Ognuno di essi ha la propria API. Nova gestisce le risorse di calcolo e la creazione di istanze, Cinder gestisce i volumi e le loro istantanee, mentre Glance \u00e8 il servizio di immagini che gestisce i template del sistema operativo e le relative informazioni.<\/p>\n<p><\/p>\n<p>Ogni servizio viene eseguito in un contenitore, mentre il broker dei messaggi \u00e8 il 'coniglio bianco' \u2014 RabbitMQ.<\/p>\n<p><\/p>\n<p>Questo sistema ci ha dato pi\u00f9 problemi inaspettati.<\/p>\n<p><\/p>\n<p>E il primo problema non ha tardato ad arrivare quando abbiamo cercato di collegare un volume aggiuntivo al server. L'API di Cinder si \u00e8 categoricamente rifiutata di eseguire questa operazione. Pi\u00f9 precisamente, a sentire OpenStack, la connessione viene stabilita, ma all'interno del server virtuale il dispositivo di disco risulta assente.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/b4755d893f3f8ad7d7aeab3af69f35cf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Abbiamo deciso di \"aggirare\" il problema e abbiamo richiesto la stessa azione all'API Nova. Il risultato \u00e8 che il dispositivo si connette correttamente ed \u00e8 accessibile all'interno del server. Sembra che il problema si verifichi quando lo storage a blocchi non risponde a Cinder.<\/p>\n<p><\/p>\n<p>Un'ulteriore difficolt\u00e0 ci attendeva durante il lavoro con i dischi. Non siamo riusciti a scollegare il volume di sistema dal server.<\/p>\n<p><\/p>\n<p>Ancora una volta, lo stesso OpenStack \"giura\" di aver distrutto la connessione e ora \u00e8 possibile lavorare correttamente con il volume separatamente. Ma l'API si \u00e8 categoricamente rifiutata di eseguire operazioni sul disco. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/952fd7cd11181605c52a7df71cd4f69f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Qui abbiamo deciso di non combattere troppo, ma di cambiare approccio sulla logica operativa del servizio. Dato che esiste un'istanza, deve esserci anche un volume di sistema. Pertanto, l'utente non pu\u00f2 ancora eliminare o disattivare il \"disco\" di sistema senza prima eliminare il \"server\".<\/p>\n<p><\/p>\n<p>OpenStack \u00e8 un complesso sistema piuttosto complicato con la propria logica di interazione e un'API tortuosa. Ci aiuta una documentazione abbastanza dettagliata e, naturalmente, il metodo di tentativi ed errori (come potremmo fare senza di esso).<\/p>\n<p><\/p>\n<h3 id=\"testovyy-zapusk\">Avvio del test<\/h3>\n<p><\/p>\n<p>Il test \u00e8 stato condotto a dicembre dello scorso anno. L'obiettivo principale era verificare il nostro progetto in modalit\u00e0 operativa sia dal punto di vista tecnico che dell'UX. Abbiamo invitato un pubblico selezionato e il test \u00e8 stato chiuso. Tuttavia, abbiamo anche lasciato la possibilit\u00e0 di richiedere l'accesso al testing sul nostro sito.<\/p>\n<p><\/p>\n<p>Ovviamente, il test non \u00e8 stato privo di momenti curiosi, poich\u00e9 le nostre avventure sono appena iniziate. <\/p>\n<p><\/p>\n<p>Innanzitutto, abbiamo sottovalutato l'interesse per il progetto e abbiamo dovuto aggiungere rapidamente nodi di calcolo durante il test. \u00c8 un caso comune per un cluster, ma c'erano anche delle peculiarit\u00e0. Nella documentazione per la versione specifica di TF \u00e8 indicata una versione specifica del kernel, sulla quale \u00e8 stato testato il funzionamento con vRouter. Abbiamo deciso di avviare nodi con kernel pi\u00f9 recenti. Il risultato \u00e8 stato che TF non ha ricevuto percorsi dai nodi. Abbiamo dovuto ripristinare urgentemente i kernel.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/377208246d5e396317fb934a35ed1227.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Un altro imprevisto \u00e8 legato alla funzionalit\u00e0 del pulsante \"cambia password\" nel pannello di controllo. <\/p>\n<p><\/p>\n<p>Abbiamo deciso di utilizzare JWT per gestire l'accesso al pannello utente, in modo da non dover lavorare con le sessioni. Poich\u00e9 i sistemi sono molto diversi e ampiamente distribuiti, gestiamo il nostro token, che \u00abincapsula\u00bb le sessioni di fatturazione e il token di OpenStack. Ovviamente, al cambiamento della password, il token \u00abscade\u00bb, poich\u00e9 i dati dell'utente non sono pi\u00f9 validi e devono essere riemessi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/daa27256d0b888b2c59d4bc6129f600d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Abbiamo trascurato questo aspetto e purtroppo non avevamo risorse per completare rapidamente questo pezzo. Abbiamo dovuto eliminare funzionalit\u00e0 proprio prima del lancio del test.<br \/>\nAttualmente disconnettiamo l'utente se la password \u00e8 stata cambiata.<\/p>\n<p><\/p>\n<p>Nonostante queste complessit\u00e0, i test sono andati bene. In poche settimane, circa 300 persone sono venute a visitarci. Siamo riusciti a vedere il prodotto con gli occhi degli utenti, testarlo in azione e raccogliere un feedback qualitativo. <\/p>\n<p><\/p>\n<h3 id=\"prodolzhenie-sleduet\">To be continued<\/h3>\n<p><\/p>\n<p>Per molti di noi, questo \u00e8 il primo progetto di tale portata. Abbiamo appreso una serie di lezioni preziose su come lavorare in squadra, prendere decisioni architettoniche e di design. Come integrare sistemi complessi con risorse limitate e pubblicarli in produzione. <\/p>\n<p><\/p>\n<p>Naturalmente, c'\u00e8 molto da migliorare sia nel codice che nell'integrazione dei sistemi. Il progetto \u00e8 ancora giovane, ma siamo pieni di ambizioni per farne un servizio affidabile e user-friendly.<\/p>\n<p><\/p>\n<p>Siamo riusciti a convincere i sistemi. Bill si occupa diligentemente della contabilit\u00e0, della fatturazione e delle richieste degli utenti nel suo angolo. La \"magia\" dei campi di tungsteno ci garantisce una connessione stabile. Solo OpenStack ogni tanto tiene il broncio, gridando qualcosa come \"'WSREP has not yet prepared node for application use\". Ma questa \u00e8 un'altra storia...<\/p>\n<p><\/p>\n<p>Poco tempo fa abbiamo lanciato il servizio.<br \/>\nPuoi trovare tutti i dettagli sul nostro <noindex><a rel=\"nofollow\" href=\"https:\/\/clo.ru?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=product&amp;utm_term=first_clo\">sito<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Storia della creazione del servizio cloud, arricchita da cyberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/32550980b529a5d7b395b3962218e53e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Team di sviluppo CLO<\/em><\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">Link utili<\/b><\/p>\n<p><strong>OpenStack<\/strong><\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openstack.org\/nova\/latest\/\">https:\/\/docs.openstack.org\/nova\/latest\/<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openstack.org\/keystone\/latest\/\">https:\/\/docs.openstack.org\/keystone\/latest\/<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openstack.org\/cinder\/latest\/\">https:\/\/docs.openstack.org\/cinder\/latest\/<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openstack.org\/glance\/latest\/\">https:\/\/docs.openstack.org\/glance\/latest\/<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Tungsten Fabric<\/strong><\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.tungsten.io\/en\/latest\/user\/getting-started\/index.html\">http:\/\/docs.tungsten.io\/en\/latest\/user\/getting-started\/index.html<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.juniper.net\/documentation\/en_US\/contrail-cloud10.0\/topics\/concept\/contrail-cloud-openstack-integration-overview.html\">https:\/\/www.juniper.net\/documentation\/en_US\/contrail-cloud10.0\/topics\/concept\/contrail-cloud-openstack-integration-overview.html<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/first\/blog\/493606\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u0441\u0442\u0430\u0436\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IT \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u043b\u0430\u0434\u0438\u0441\u0442\u044b\u043c\u0438, \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u044b\u043c\u0438, \u0432\u0437\u0431\u0430\u043b\u043c\u043e\u0448\u043d\u044b\u043c\u0438, \u0441\u0443\u0440\u043e\u0432\u044b\u043c\u0438. \u041c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u043a \u0441\u0435\u0431\u0435 \u0438\u043b\u0438 \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c. \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u00ab\u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f\u00bb \u0441 \u043d\u0438\u043c\u0438, \u043b\u0430\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u00ab\u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u0430\u043c\u043d\u044f\u043c\u0438\u00bb \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412\u043e\u0442 \u0438 \u043d\u0430\u043c \u0432\u044b\u043f\u0430\u043b\u0430 \u0447\u0435\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u00ab\u0443\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u00bb [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":79154,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-79153","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u0441\u0442\u0430\u0436\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IT \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u043b\u0430\u0434\u0438\u0441\u0442\u044b\u043c\u0438, \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u044b\u043c\u0438, \u0432\u0437\u0431\u0430\u043b\u043c\u043e\u0448\u043d\u044b\u043c\u0438, \u0441\u0443\u0440\u043e\u0432\u044b\u043c\u0438. \u041c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u043a \u0441\u0435\u0431\u0435 \u0438\u043b\u0438 \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c. \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u00ab\u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f\u00bb \u0441 \u043d\u0438\u043c\u0438, \u043b\u0430\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u00ab\u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u0430\u043c\u043d\u044f\u043c\u0438\u00bb \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412\u043e\u0442 \u0438 \u043d\u0430\u043c \u0432\u044b\u043f\u0430\u043b\u0430 \u0447\u0435\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u00ab\u0443\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u00bb\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043f\u0440\u0438\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u0438\u0431\u0435\u0440\u043f\u0430\u043d\u043a\u043e\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u0441\u0442\u0430\u0436\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IT \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u043b\u0430\u0434\u0438\u0441\u0442\u044b\u043c\u0438, \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u044b\u043c\u0438, \u0432\u0437\u0431\u0430\u043b\u043c\u043e\u0448\u043d\u044b\u043c\u0438, \u0441\u0443\u0440\u043e\u0432\u044b\u043c\u0438. \u041c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u043a \u0441\u0435\u0431\u0435 \u0438\u043b\u0438 \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c. \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u00ab\u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f\u00bb \u0441 \u043d\u0438\u043c\u0438, \u043b\u0430\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u00ab\u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u0430\u043c\u043d\u044f\u043c\u0438\u00bb \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412\u043e\u0442 \u0438 \u043d\u0430\u043c \u0432\u044b\u043f\u0430\u043b\u0430 \u0447\u0435\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u00ab\u0443\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u00bb\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-04-24T17:42:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-24T17:42:43+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Storia della creazione del servizio cloud, con un pizzico di cyberpunk | ProHoster","description":"Con l'aumentare dell'esperienza nel settore IT, inizi a notare che i sistemi hanno una loro personalit\u00e0. Possono essere malleabili, silenziosi, capricciosi, o severi. Possono attrarti o respingerti. In un modo o nell'altro, bisogna \u00abnegoziare\u00bb con loro, navigare tra le \u00abinsidie\u00bb e costruire catene di interazione. Cos\u00ec ci \u00e8 toccato costruire una piattaforma cloud, e per farlo \u00e8 stato necessario \u00abconvincerli\u00bb","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043f\u0440\u0438\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u0438\u0431\u0435\u0440\u043f\u0430\u043d\u043a\u043e\u043c | ProHoster","og:description":"\u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u0441\u0442\u0430\u0436\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IT \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u043b\u0430\u0434\u0438\u0441\u0442\u044b\u043c\u0438, \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u044b\u043c\u0438, \u0432\u0437\u0431\u0430\u043b\u043c\u043e\u0448\u043d\u044b\u043c\u0438, \u0441\u0443\u0440\u043e\u0432\u044b\u043c\u0438. \u041c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u043a \u0441\u0435\u0431\u0435 \u0438\u043b\u0438 \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c. \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u00ab\u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f\u00bb \u0441 \u043d\u0438\u043c\u0438, \u043b\u0430\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u00ab\u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u0430\u043c\u043d\u044f\u043c\u0438\u00bb \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412\u043e\u0442 \u0438 \u043d\u0430\u043c \u0432\u044b\u043f\u0430\u043b\u0430 \u0447\u0435\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u00ab\u0443\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u00bb","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-04-24T17:42:43+00:00","article:modified_time":"2020-04-24T17:42:43+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"79153","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:43:24","updated":"2022-10-02 03:25:48"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/79153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=79153"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/79153\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/79154"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=79153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=79153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=79153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}