{"id":78887,"date":"2020-04-22T19:42:51","date_gmt":"2020-04-22T17:42:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov"},"modified":"2020-04-22T19:42:51","modified_gmt":"2020-04-22T17:42:51","slug":"wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","title":{"rendered":"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Vi invitiamo a prendere visione della trascrizione della relazione del gennaio 2020 di Georgy Rylov \"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0\"<\/strong><\/p>\n<p><\/p>\n<p>I manutentori dell'open-source si trovano ad affrontare molteplici problemi man mano che crescono. Come scrivere sempre pi\u00f9 funzionalit\u00e0 richieste, risolvere un numero crescente di problemi e gestire un numero sempre maggiore di pull request? Attraverso l'esempio di WAL-G (backup-tool per PostgreSQL) racconter\u00f2 come abbiamo affrontato queste sfide, avviando un corso sulla sviluppo open-source all'universit\u00e0, cosa abbiamo ottenuto e quali saranno i nostri prossimi passi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/c76e27949b782480284ab52791fdfe15.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ciao a tutti ancora una volta! Sono un sviluppatore in Yandex di Ekaterinburg. E oggi vi parler\u00f2 di WAL-G.<\/p>\n<p><\/p>\n<p>Nel titolo della relazione non era specificato che si trattasse di backup. Qualcuno non sa cosa sia WAL-G? O lo sanno tutti? Alzate la mano se non lo sapete. Wow, siete venuti alla relazione e non sapete di cosa si parla.<\/p>\n<p><\/p>\n<p>Parliamo di cosa ci sar\u00e0 oggi. La nostra squadra si occupa di backup da un bel po' di tempo. E questa \u00e8 un'altra relazione in una serie dove raccontiamo come memorizziamo i dati in modo sicuro, affidabile, comodo ed efficiente.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/4307e7b2acc60cd908d91e3f1b83a9b6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nelle serie precedenti ci sono state molte relazioni di Andrey Borodin e Vladimir Leskov. Eravamo in molti. E negli ultimi anni abbiamo parlato di WAL-G per molto tempo. <\/p>\n<p><\/p>\n<p>clck.ru\/F8ioz \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2018\/abstracts\/3964\">https:\/\/www.highload.ru\/moscow\/2018\/abstracts\/3964<\/a><\/noindex><\/p>\n<p><\/p>\n<p>clck.ru\/Ln8Qw \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\/abstracts\/5981\">https:\/\/www.highload.ru\/moscow\/2019\/abstracts\/5981<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Questa relazione sar\u00e0 leggermente diversa dalle altre, poich\u00e9 quelle si concentravano in gran parte sulla parte tecnica, mentre qui parler\u00f2 di come ci siamo confrontati con i problemi legati alla crescita della comunit\u00e0. E di come abbiamo pensato a una piccola idea che ci aiuta a gestirlo. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/ec728f7d99ea9b6a5df4785d7e8a2a75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Qualche anno fa WAL-G era un progetto piuttosto piccolo, che ci \u00e8 stato dato da Citus Data. Abbiamo appena iniziato a lavorarci sopra. Era sviluppato da una sola persona.<\/p>\n<p><\/p>\n<p>E solo in WAL-G non c'era:<\/p>\n<p><\/p>\n<ul>\n<li>Backup da replica.<\/li>\n<li>Non c'erano backup incrementali.<\/li>\n<li>Non c'erano backup WAL-Delta. <\/li>\n<li>E c'erano molte altre cose che mancavano.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Negli ultimi anni WAL-G \u00e8 cresciuto notevolmente.<\/strong> <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/16700dfcc2c54539c5a064894cd1ec88.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E entro il 2020 tutto ci\u00f2 menzionato era gi\u00e0 disponibile. E a questo si aggiunse anche il fatto che ora abbiamo:<\/p>\n<p><\/p>\n<ul>\n<li>Oltre 1.000 stelle su GitHub.<\/li>\n<li>150 fork.<\/li>\n<li>Circa 15 PR aperti.<\/li>\n<li>E anche molti contributori. <\/li>\n<li>E sempre nuovi issues aperti. E questo nonostante ci entriamo praticamente ogni giorno per gestirli. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/5e5dea14b328a7f0437017ca834d1eaf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E siamo giunti alla conclusione che questo progetto richiede pi\u00f9 della nostra attenzione, anche quando noi stessi non abbiamo bisogno di implementare nulla per il nostro servizio Managed Databases in Yandex.<\/p>\n<p><\/p>\n<p>E da qualche parte nell'autunno del 2018 ci \u00e8 venuta un'idea. Di solito un team ha diversi modi per sviluppare nuove funzionalit\u00e0 o risolvere bug quando mancano le risorse. Ad esempio, si pu\u00f2 assumere un altro sviluppatore e pagarlo. Oppure si pu\u00f2 prendere uno stagista per un certo periodo e pagargli uno stipendio. Ma c'\u00e8 anche un gran numero di persone, parte delle quali sa davvero scrivere codice. Semplicemente, non sai sempre quale sia la qualit\u00e0 di questo codice.<\/p>\n<p><\/p>\n<p>Abbiamo pensato di provare ad attrarre studenti. Ma gli studenti non parteciperanno a tutto. Faranno solo una parte del lavoro. Ad esempio, scriveranno test, risolveranno bug, realizzeranno funzionalit\u00e0 che non influenzano la funzionalit\u00e0 principale. La funzionalit\u00e0 principale \u00e8 la creazione di backup e il ripristino dei backup. Se si verifica un bug nella creazione di un backup, potremmo perdere dati. E nessuno lo desidera, ovviamente. Tutti vogliono che tutto sia molto affidabile. Pertanto, non vogliamo rischiare codice di cui non ci fidiamo meno rispetto al nostro. Cio\u00e8, qualsiasi codice non critico \u00e8 ci\u00f2 che speriamo di ricevere dalle nostre risorse aggiuntive.<\/p>\n<p><\/p>\n<p><strong>In quali condizioni viene accettato un PR da uno studente<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>Devono coprire il proprio codice con test. Tutto deve passare in CI. <\/li>\n<li>E facciamo anche 2 revisioni. Una da Andrej Borodin e una mia. <\/li>\n<li>Inoltre, per verificare che non rompa nulla nel nostro servizio, carico separatamente la build con questo commit. E controlliamo nei test end-to-end che non ci siano problemi.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Corso specialistico su Open Source<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/58832406f3acdf294cd68e6adde14ec8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Un po' su perch\u00e9 \u00e8 necessario e perch\u00e9 questa mi sembra una grande idea. <\/p>\n<p><\/p>\n<p><strong>Per noi il profitto \u00e8 ovvio:<\/strong> <\/p>\n<p><\/p>\n<ul>\n<li>Otteniamo risorse aggiuntive. <\/li>\n<li>E cerchiamo candidati per il team tra studenti capaci che scrivono codice valido. <\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Qual \u00e8 il profitto per gli studenti?<\/strong><\/p>\n<p><\/p>\n<p>Possono essere meno evidenti, perch\u00e9 gli studenti, almeno, non ricevono denaro per il codice che scrivono, ma ricevono solo voti. <\/p>\n<p><\/p>\n<p>Ho chiesto loro a riguardo. E secondo le loro parole:<\/p>\n<p><\/p>\n<ul>\n<li>Esperienza da contributore in Open Source.<\/li>\n<li>Avere una riga nel CV.<\/li>\n<li>Dare prova di s\u00e9 e superare un colloquio con Yandex.<\/li>\n<li>Diventare partecipante di GSoC.<\/li>\n<li>+1 corso specialistico per chi vuole scrivere codice.<\/li>\n<\/ul>\n<p><\/p>\n<p>Non parler\u00f2 di come fosse strutturato il corso. Dico solo che WAL-G era il progetto principale. Inoltre, abbiamo incluso nel corso progetti come Odyssey, PostgreSQL e ClickHouse.<\/p>\n<p><\/p>\n<p>E non abbiamo dato incarichi solo in questo corso, ma abbiamo anche rilasciato diplomi e tesi.<\/p>\n<p><\/p>\n<p><strong>E il beneficio per gli utenti?<\/strong><\/p>\n<p><\/p>\n<p>Ora passiamo alla parte che vi interessa di pi\u00f9. Qual \u00e8 il vantaggio per voi? Il vantaggio \u00e8 che gli studenti hanno risolto molti bug. E hanno creato richieste di funzionalit\u00e0 che ci avete chiesto di realizzare. <\/p>\n<p><\/p>\n<p>E lasciate che vi parli delle cose che desideravate da tempo e che sono state implementate.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/bb836742bf4f99e1b91c891ed1802bf0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Supporto per tablespaces. Il supporto per i tablespaces in WAL-G era atteso fin dal rilascio di WAL-G, poich\u00e9 WAL-G \u00e8 il successore di un altro strumento di backup, WAL-E, che supportava il backup dei database con tablespaces.<\/p>\n<p><\/p>\n<p>In breve, ricordo cos'\u00e8 e a cosa serve. Di solito, tutti i vostri dati Postgres occupano una directory nel file system chiamata directory base. E questa directory contiene gi\u00e0 tutti i file e le sottodirectory necessari per Postgres.<\/p>\n<p><\/p>\n<p>I tablespaces sono directory in cui si trovano i dati di Postgres, ma non si trovano al di fuori della directory base. Nella diapositiva \u00e8 evidente che i tablespace sono situati al di fuori della directory base.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/0f25591cfcaaeaec02903c9b98d8ac65.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Come appare per Postgres stesso? Nella directory base c'\u00e8 una sottodirectory chiamata pg_tblspc. E vi si trovano collegamenti simbolici alle directory in cui si trovano effettivamente i dati di Postgres al di fuori della directory base.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/9e9875696c03e6e42bb98b5a7a9acd75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Quando utilizzate tutto ci\u00f2, per voi questi comandi possono apparire in questo modo. Cio\u00e8, create una tabella in un tablespace specificato e controllate dove si trova ora. Queste due ultime righe, due ultime chiamate a comandi. E si vede che c'\u00e8 un certo percorso. Ma in realt\u00e0, non \u00e8 un percorso vero. \u00c8 un percorso con un prefisso dalla directory base al tablespace. E da l\u00ec \u00e8 legato a un collegamento simbolico che porta ai vostri dati reali.<\/p>\n<p><\/p>\n<p>Noi non utilizziamo tutto questo nel nostro team, ma \u00e8 stato utilizzato da molti altri utenti di WAL-E, che ci hanno scritto dicendo che volevano migrare a WAL-G, ma questo era un ostacolo. Ora \u00e8 supportato.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/95ec319ccefa7e6c8bce193317407229.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Un'altra funzionalit\u00e0 che ci ha portato il nostro corso specialistico \u00e8 il catchup. La catchup \u00e8 conosciuta da persone che probabilmente hanno lavorato di pi\u00f9 con Oracle che con Postgres.<\/p>\n<p><\/p>\n<p>In breve, cos'\u00e8. Una topologia tipica di un cluster nel nostro servizio pu\u00f2 apparire in questo modo. Abbiamo un master. C'\u00e8 una replica che trasmette da lui il write-ahead log. E la replica informa il master su quale LSN si trova attualmente. E parallelamente a questo, il log pu\u00f2 essere archiviato. Inoltre, vengono inviati backup nel cloud. E vengono inviati delta-backup.<\/p>\n<p><\/p>\n<p>Qual \u00e8 il problema? Quando hai un database abbastanza grande, pu\u00f2 succedere che la replica inizi a rallentare notevolmente rispetto al master. E rallenta cos\u00ec tanto che non pu\u00f2 pi\u00f9 raggiungerlo. Questo problema di solito deve essere affrontato in qualche modo. <\/p>\n<p><\/p>\n<p>Il modo pi\u00f9 semplice \u00e8 rimuovere la replica e reinstallarla da zero, perch\u00e9 non la recuperer\u00e0 mai pi\u00f9, e dobbiamo risolvere il problema. Ma questo richiede molto tempo, perch\u00e9 ripristinare un intero backup di un database da 10 TB richiede un tempo estremamente lungo. E vogliamo fare tutto il pi\u00f9 rapidamente possibile, se si verificano questi problemi. Ed \u00e8 proprio a questo scopo che \u00e8 stato progettato catchup.<\/p>\n<p><\/p>\n<p>Catchup consente di utilizzare delta-backup, che vengono salvati nel cloud in questo modo. Indicate a quale LSN si trova attualmente la replica in ritardo e lo specificate nel comando catchup per creare un delta-backup tra quel LSN e l\u2019LSN su cui si trova attualmente il vostro cluster. E dopo ricostruite questo backup sulla replica che era in ritardo.<\/p>\n<p><\/p>\n<p><strong>Altri database<\/strong><\/p>\n<p><\/p>\n<p>Inoltre, gli studenti ci hanno portato subito molte funzionalit\u00e0. Poich\u00e9 in Yandex ci occupiamo non solo di Postgres, ma anche di MySQL, MongoDB, Redis, ClickHouse, a un certo punto \u00e8 stato necessario poter fare backup con point-in-time recovery per MySQL, e avere la possibilit\u00e0 di caricarli nel cloud.<\/p>\n<p><\/p>\n<p>Volevamo farlo in un modo simile a quello in cui fa WAL-G. E abbiamo deciso di sperimentare per vedere come sarebbe stato.<\/p>\n<p><\/p>\n<p>Inizialmente, senza separare questa logica, abbiamo scritto il codice in un fork. Abbiamo visto che avevamo un modello funzionante e questo poteva decollare. Poi abbiamo pensato che la nostra comunit\u00e0 principale sono i postgresisti, che utilizzano WAL-G. Perci\u00f2 era necessario separare queste parti. Cio\u00e8, quando modifichiamo il codice per Postgres non rompiamo MySQL, e quando modifichiamo MySQL non rompiamo Postgres.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/deef7615eaeb0b8bd790fb253cc42312.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La prima idea su come separarlo \u00e8 stata quella di utilizzare lo stesso approccio usato nelle estensioni di PostgreSQL. E, in sostanza, per fare un backup di MySQL dovevi installare qualche libreria dinamica. <\/p>\n<p><\/p>\n<p>Ma qui si vede subito l'asimmetria di questo approccio. Quando esegui il backup di Postgres, installi un normale strumento di backup per Postgres e tutto va bene. E per MySQL risulta che installi uno strumento di backup per Postgres e poi installi anche una libreria dinamica per MySQL. Sembra un po' strano. Anche noi abbiamo pensato questo e abbiamo deciso che non era la soluzione di cui avevamo bisogno. <\/p>\n<p><\/p>\n<p><strong>Diverse build per Postgres, MySQL, MongoDB, Redis<\/strong><\/p>\n<p><\/p>\n<p>Ma questo ci ha permesso, a nostro avviso, di arrivare alla soluzione giusta: separare diverse build per diversi database. Questo consentiva di isolare la logica relativa ai backup delle varie basi di dati, che si sarebbero collegate a un'API comune fornita da WAL-G.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6c810d5f065de06fc200bdd028707318.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Questa \u00e8 la parte che abbiamo scritto noi stessi, prima di dare compiti agli studenti. Cio\u00e8, questa \u00e8 proprio la parte in cui potevano fare qualcosa di sbagliato, quindi abbiamo deciso che era meglio fare noi qualcosa di corretto e andava tutto benissimo. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/3a864a85bfb820ef64cbacc029a9198c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dopo di ci\u00f2 abbiamo assegnato i compiti. Sono stati subito presi. Agli studenti era richiesto di supportare tre database. <\/p>\n<p><\/p>\n<p>Questo \u00e8 MySQL, che stiamo backupando con WAL-G in questo modo da oltre un anno. <\/p>\n<p><\/p>\n<p>E ora MongoDB si sta avvicinando alla produzione, dove lo stanno limando con attenzione. In sostanza, abbiamo scritto il framework per tutto ci\u00f2. Poi gli studenti hanno scritto alcune cose funzionanti. E dopo le ottimizziamo fino a raggiungere uno stato che possiamo accettare in produzione.<\/p>\n<p><\/p>\n<p>Questi compiti non sembravano richiedere agli studenti di scrivere strumenti di backup completi per ciascuno di questi database. Non avevamo questo problema. Il nostro problema era che volevamo il recovery point-in-time e volevamo eseguire il backup nel cloud. E abbiamo chiesto agli studenti di scrivere del codice che risolvesse questo. Gli studenti hanno utilizzato strumenti di backup gi\u00e0 esistenti, che in qualche modo eseguono i backup, e poi hanno combinato il tutto con WAL-G, che inviava tutto nel cloud. E hanno anche aggiunto il recovery point-in-time.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7494aef259c7599e8bf0b70d77e1bb09.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cosa altro hanno portato gli studenti? Hanno portato in WAL-G il supporto per la crittografia Libsodium.<\/p>\n<p><\/p>\n<p>Abbiamo anche introdotto politiche di retention per i backup. Ora i backup possono essere contrassegnati come permanenti. E risulta pi\u00f9 comodo per il vostro servizio automatizzare il processo di loro conservazione. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6e932ab13dbc3119f7f1da1122443b10.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Quali sono stati i risultati di questo esperimento?<\/p>\n<p><\/p>\n<p>Inizialmente si erano registrate pi\u00f9 di 100 persone al corso. All'inizio non ho detto che l'universit\u00e0 di Ekaterinburg \u00e8 l'Universit\u00e0 Federale degli Urali. L\u00ec abbiamo fatto tutti gli annunci. Si sono registrate 100 persone. In realt\u00e0, solo circa 30 hanno iniziato veramente a lavorare. <\/p>\n<p><\/p>\n<p>Ancora meno persone hanno completato il corso, perch\u00e9 era necessario scrivere test per i codici gi\u00e0 esistenti. Inoltre, dovevano risolvere un bug o implementare una funzionalit\u00e0. Parte degli studenti ha comunque completato il corso.<\/p>\n<p><\/p>\n<p>Attualmente, gli studenti hanno risolto circa 14 problemi e realizzato 10 funzionalit\u00e0 di varie dimensioni per questo corso. E, come mi sembra, \u00e8 una sostituzione completa di uno o due sviluppatori. <\/p>\n<p><\/p>\n<p>In aggiunta, abbiamo consegnato diplomi e lavori di corso. E 12 hanno ricevuto i diplomi. 6 di loro si sono gi\u00e0 laureati con un \"5\". Gli altri non hanno ancora sostenuto la difesa, ma credo che andr\u00e0 bene anche per loro. <\/p>\n<p><\/p>\n<p>Piani futuri<\/p>\n<p><\/p>\n<p>Quali sono i nostri piani per il futuro?<\/p>\n<p><\/p>\n<p>Almeno, le richieste di funzionalit\u00e0 che abbiamo gi\u00e0 sentito dagli utenti e vogliamo realizzare. Queste sono:<\/p>\n<p><\/p>\n<ul>\n<li>Monitoraggio della correttezza del tracciamento della timeline nell'archivio dei backup del cluster HA. Con WAL-G \u00e8 possibile farlo. E penso che troveremo studenti che si occuperanno di questo. <\/li>\n<li>Abbiamo gi\u00e0 una persona responsabile per il trasferimento dei backup e del WAL tra i cloud. <\/li>\n<li>E recentemente abbiamo pubblicato l'idea che possiamo velocizzare ulteriormente WAL-G grazie all'estrazione dei backup incrementali senza riscrivere le pagine e ottimizzando gli archivi che inviamo. <\/li>\n<\/ul>\n<p><\/p>\n<p>Puoi condividerli qui<\/p>\n<p><\/p>\n<p>A cosa serviva questa relazione? Al fatto che ora, oltre a noi 4 che sosteniamo questo progetto, abbiamo anche molte mani aggiuntive. Soprattutto se contattati in privato. E se stai facendo il backup dei tuoi dati e lo stai facendo con WAL-G o desideri passare a WAL-G, possiamo tenere facilmente in considerazione le tue richieste.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7b0dc1633121ea6493610b08f68a14d2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Questo \u00e8 un codice qr e un link. Puoi usarli per andare e scrivere tutte le tue richieste. Per esempio, se non risolviamo un bug o c'\u00e8 una funzionalit\u00e0 che desideri molto, ma per qualche motivo non \u00e8 ancora presente in nessun backup, compreso il nostro. Assicurati di farcelo sapere.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nuove opportunit\u00e0 e espansione della comunit\u00e0. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/56f1c4eef8522d2d6628ea98b1278846.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Domande<\/p>\n<p><\/p>\n<p><em>Ciao! Grazie per la presentazione! Ho una domanda su WAL-G, ma non riguardo a Postgres. WAL-G esegue il backup di MySQL e attiva il backup extra. Se consideri le installazioni moderne su CentOS e se esegui 'yum install MySQL', viene installato MariaDB. Dalla versione 10.3, il backup extra non \u00e8 supportato, mentre il backup di MariaDB \u00e8 supportato. Come state messi con questo?<\/em><\/p>\n<p><\/p>\n<p>Al momento non abbiamo provato a eseguire il backup di MariaDB. Abbiamo ricevuto richieste per il supporto di FoundationDB, ma in generale, se arriva una richiesta, possiamo trovare persone che lo faranno. Non ci vuole molto e non \u00e8 cos\u00ec complicato, come mi sembra.<\/p>\n<p><\/p>\n<p><em>Buongiorno! Grazie per la presentazione! Ho una domanda su potenziali nuove funzionalit\u00e0. Siete pronti a far funzionare WAL-G con i nastri, cos\u00ec da poter eseguire backup su nastro?<\/em><\/p>\n<p><\/p>\n<p>Si riferisce a un backup su archiviazione a nastro, giusto?<\/p>\n<p><\/p>\n<p><em>S\u00ec.<\/em><\/p>\n<p><\/p>\n<p>C'\u00e8 Andrey Borodin, che pu\u00f2 rispondere meglio di me a questa domanda. <\/p>\n<p><\/p>\n<p>(Andrey) S\u00ec, grazie per la domanda! Abbiamo ricevuto una richiesta per trasferire il backup su nastro da un'archiviazione cloud. E per questo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/pull\/596\">stiamo lavorando<\/a><\/noindex> su un trasferimento tra i cloud. Perch\u00e9 il trasferimento tra i cloud \u00e8 una sorta di versione generica del trasferimento su nastro. Inoltre, abbiamo un'architettura estensibile per quanto riguarda gli Storage. A proposito, molti Storage sono stati scritti da studenti. E se scrivete uno Storage per i nastri, sar\u00e0 sicuramente supportato. Siamo pronti a considerare la pull request. \u00c8 necessario scrivere un file e leggerlo. Se queste cose vengono fatte in Go, in genere richiedono 50 righe di codice. E allora il nastro sar\u00e0 supportato in WAL-G. <\/p>\n<p><\/p>\n<p><em>Grazie per la presentazione! Un processo di sviluppo interessante. Il backup \u00e8 una parte seria della funzionalit\u00e0, che deve essere ben coperta dai test. Quando implementavate funzionalit\u00e0 per nuovi database, i test sono stati scritti anche dagli studenti, o li avete scritti voi e poi li avete dati in implementazione agli studenti?<\/em><\/p>\n<p><\/p>\n<p>I test sono stati scritti anche dagli studenti. Ma gli studenti scrivevano di pi\u00f9 per funzionalit\u00e0 come i nuovi database. Scrivevano test di integrazione. E scrivevano test unitari. Se i test di integrazione passano, nel senso che attualmente - \u00e8 uno scenario che eseguite manualmente o che viene eseguito da cron, ad esempio. Cio\u00e8, \u00e8 uno scenario molto chiaro. <\/p>\n<p><\/p>\n<p><em>Gli studenti non hanno molta esperienza. Quanto tempo ci vuole per le revisioni?<\/em><\/p>\n<p><\/p>\n<p>S\u00ec, le revisioni richiedono abbastanza tempo. Cio\u00e8, di solito, quando arrivano diversi committers e dicono che ho fatto questo, ho fatto quello, \u00e8 necessario riflettere e dedicare un mezzo giorno a capire ci\u00f2 che hanno scritto. Perch\u00e9 il codice deve essere letto attentamente. Non hanno mai sostenuto un colloquio. Non li conosciamo molto bene, quindi questo richiede tempo considerevole.<\/p>\n<p><\/p>\n<p><em>Grazie per la presentazione! In precedenza, Andrey Borodin ha dichiarato che archive_command in WAL-G dovrebbe essere chiamato direttamente. Ma nel caso di un cluster patron, abbiamo bisogno di una logica aggiuntiva per determinare il nodo da cui inviare i segnali. Come risolvete voi questo problema?<\/em><\/p>\n<p><\/p>\n<p>Qual \u00e8 il problema che avete qui? Supponiamo che abbiate una replica sincronizzata da cui prendete il backup? O cosa?<\/p>\n<p><\/p>\n<p>(Andrey) Il fatto \u00e8 che WAL-G prevede l'uso senza script shell. Se manca qualcosa, aggiungiamo la logica che deve essere all'interno di WAL-G. Per quanto riguarda da dove dovrebbe avvenire l'archiviazione, riteniamo che l'archiviazione debba avvenire dall'attuale master nel cluster. L'archiviazione da una replica \u00e8 una cattiva idea. Ci sono vari scenari con problemi. In particolare, ci sono problemi con l'archiviazione delle timeline e di altre informazioni aggiuntive. Grazie per la domanda!<\/p>\n<p><\/p>\n<p>(Chiarimento: Ci siamo liberati dagli script shell) <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/issues\/549\">in questo issue<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p><em>Buonasera! Grazie per la presentazione! Sono rimasto colpito dalla funzione catchup di cui avete parlato. Ho avuto situazioni in cui una replica arrancava e non riusciva a recuperare. E in WAL-G non ho trovato una descrizione di questa funzione nella documentazione.<\/em><\/p>\n<p><\/p>\n<p>Catchup \u00e8 apparso letteralmente nei primi giorni di gennaio 2020. Potrebbe valere la pena lavorare meglio sulla documentazione. La stiamo redigendo noi stessi e non \u00e8 che la stiamo facendo in modo superlativo. E potrebbe essere giusto iniziare a richiedere agli studenti di scriverla.<\/p>\n<p><\/p>\n<p><em>\u00c8 gi\u00e0 in rilascio?<\/em><\/p>\n<p><\/p>\n<p>La pull request \u00e8 gi\u00e0 stata unita, cio\u00e8 l'ho controllata. L'ho provato su un cluster di test. Finora non abbiamo avuto una situazione in cui potessimo testarlo in un caso reale.<\/p>\n<p><\/p>\n<p><em>Quando possiamo aspettarci?<\/em><\/p>\n<p><\/p>\n<p>Non lo so. Aspettate un mese, lo testeremo di sicuro.<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/498428\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 2020 \u0433\u043e\u0434\u0430 \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0420\u044b\u043b\u043e\u0432\u0430 &quot;WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430&quot; \u0423 \u043c\u0435\u0438\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 open-source \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e \u043c\u0435\u0440\u0435 \u0438\u0445 \u0440\u043e\u0441\u0442\u0430. \u041a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0444\u0438\u0447, \u0447\u0438\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 issues&#8217;\u043e\u0432 \u0438 \u0443\u0441\u043f\u0435\u0432\u0430\u0442\u044c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 pull request&#8217;\u043e\u0432? \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 WAL-G(backup-tool for PostgreSQL) \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u043c\u044b \u0440\u0435\u0448\u0430\u043b\u0438 \u044d\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":78888,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-78887","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 2020 \u0433\u043e\u0434\u0430 \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0420\u044b\u043b\u043e\u0432\u0430 &quot;WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430&quot; \u0423 \u043c\u0435\u0438\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 open-source \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e.\" \/>\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\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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\udd47WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u0413\u0435\u043e\u0440\u0433\u0438\u0439 \u0420\u044b\u043b\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 2020 \u0433\u043e\u0434\u0430 \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0420\u044b\u043b\u043e\u0432\u0430 &quot;WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430&quot; \u0423 \u043c\u0435\u0438\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 open-source \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov\" \/>\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-22T17:42:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-22T17:42:51+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\udd47WAL-G: nuove opportunit\u00e0 e ampliamento della comunit\u00e0. Georgiy Rylov | ProHoster","description":"Vi consiglio di dare un'occhiata alla trascrizione della presentazione di inizio 2020 di Georgy Rylov \"WAL-G: nuove opportunit\u00e0 e ampliamento della comunit\u00e0\". I maintainers open-source affrontano molte problematiche.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","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\udd47WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u0413\u0435\u043e\u0440\u0433\u0438\u0439 \u0420\u044b\u043b\u043e\u0432 | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 2020 \u0433\u043e\u0434\u0430 \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0420\u044b\u043b\u043e\u0432\u0430 &quot;WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430&quot; \u0423 \u043c\u0435\u0438\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 open-source \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","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-22T17:42:51+00:00","article:modified_time":"2020-04-22T17:42:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"78887","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:49:45","updated":"2022-09-29 18:48:15","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/78887","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=78887"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/78887\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/78888"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=78887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=78887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=78887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}