{"id":92806,"date":"2020-08-31T07:42:03","date_gmt":"2020-08-31T05:42:03","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita"},"modified":"2020-08-31T07:42:03","modified_gmt":"2020-08-31T05:42:03","slug":"kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","title":{"rendered":"Come smettere di preoccuparsi e iniziare a vivere senza monoliti","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Come smettere di preoccuparsi e iniziare a vivere senza monoliti\" src=\"\/wp-content\/uploads\/2020\/08\/eb6ab7fd08eeebd8cdad89b0e4e6588e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTutti noi amiamo le storie. Ci piace raccontare i nostri successi, battaglie o semplicemente esperienze passate attorno al fuoco.<\/p>\n<p>Oggi \u00e8 esattamente quel tipo di giorno. E anche se ora non sei attorno al fuoco, abbiamo una storia per te. Una storia su come abbiamo iniziato a lavorare con il database su Tarantool.<\/p>\n<p>Tanto tempo fa, nella nostra azienda, c'erano un paio di \"monoliti\" e un \"soffitto\" condiviso, verso cui questi monoliti si avvicinavano lentamente ma inesorabilmente, limitando la crescita e lo sviluppo della nostra azienda. E c'era una chiara consapevolezza: un giorno saremmo stati costretti a batterci contro questo soffitto.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nOra abbiamo un'ideologia che promuove la separazione di tutto, dall'hardware alla logica aziendale. Di conseguenza, abbiamo, ad esempio, due datacenter praticamente indipendenti a livello di rete. Ma allora tutto era molto diverso.<\/p>\n<p>Oggi abbiamo a disposizione una miriade di strumenti e risorse come CI\/CD, K8S, e cos\u00ec via, per apportare modifiche. All'epoca dei \"monoliti\", non avevamo bisogno di tutti questi termini strani. Era sufficiente correggere semplicemente il \"database\".<\/p>\n<p>Ma il tempo \u00e8 andato avanti, e il numero delle richieste \u00e8 aumentato con esso, arrivando a superare le nostre capacit\u00e0. Entrando nei mercati dell'area CIS, il carico sulla CPU del primo monolito non scendeva mai sotto il 90%, mentre il RPS si mantenva attorno a 2400. E non si trattava solo di piccole selezioni, ma di grandi richieste con un sacco di controlli e JOIN che potevano coinvolgere quasi met\u00e0 dei dati a causa di un grande IO.<\/p>\n<p>Quando sono iniziate le vere vendite del \"Black Friday\" \u2014 e Wildberries \u00e8 stata una delle prime in Russia a farlo \u2014 la situazione \u00e8 diventata davvero critica. Infatti, il carico in quei giorni triplica.<br \/>\nOh, i tempi dei \"monoliti\"! Sono certo che anche tu hai vissuto esperienze simili e non riesci ancora a capire come sia potuto succedere.<\/p>\n<p>Che ci vuoi fare, anche la moda riguarda le tecnologie. Solo cinque anni fa, ci \u00e8 stato necessario ripensare una di queste mode, il sito esistente su .NET e il server MS SQL, che custodiva gelosamente tutta la logica del sito stesso. Custodiva cos\u00ec bene che dividere un tale monolito \u00e8 diventato un processo lungo e decisamente complicato.<br \/>\nUna breve digressione. <\/p>\n<p>Durante vari eventi dico: \"Se non hai diviso un monolito, significa che non sei cresciuto!\" Mi piacerebbe conoscere la tua opinione in merito, scrivila nei commenti.<\/p>\n<h3>E il tuono si fece sentire<\/h3>\n<p>\nTornando al nostro \"fuoco\". Per distribuire il carico della funzionalit\u00e0 \"monolitica\", abbiamo deciso di suddividere il sistema in microservizi basati su tecnologie open source. Perch\u00e9, almeno, il loro scalabilit\u00e0 \u00e8 pi\u00f9 economica. E avevamo ben chiaro che sarebbe stato necessario scalare (e non poco) al 100%. Gi\u00e0 a quel tempo avevamo iniziato a entrare nei mercati dei paesi vicini e il numero di registrazioni e ordini iniziava a crescere ancora di pi\u00f9.<\/p>\n<p>Analizzando i primi candidati ad uscire dal monolito verso i microservizi, abbiamo compreso che nell'80% dei casi le scritture avvengono per il 99% tramite sistemi di back office, mentre le letture provengono dalla fascia anteriore. Questo riguardava principalmente un paio di sottosistemi importanti per noi: i dati degli utenti e il sistema di calcolo del costo finale dei prodotti in base alle informazioni su sconti e coupon.<\/p>\n<p>A margine. Oggi \u00e8 spaventoso da immaginare, ma oltre ai sottosistemi menzionati, dal nostro monolito sono stati estratti anche cataloghi di prodotti, carrelli, sistemi di ricerca, filtri per cataloghi e vari sistemi di raccomandazione. Ogni sistema ha le proprie classi specializzate, ma un tempo vivevano tutti insieme in un unico \"spazio\". <\/p>\n<p>Abbiamo pianificato di estrarre subito i dati sui nostri clienti in un sistema shardato. L'estrazione della funzionalit\u00e0 di calcolo del costo finale dei prodotti richiedeva una buona scalabilit\u00e0 nella lettura, poich\u00e9 comportava il maggior carico in RPS ed era molto complessa per il database (in quanto coinvolti molti dati nel processo di calcolo). <\/p>\n<p>Di conseguenza, abbiamo sviluppato uno schema che si adatta bene a Tarantool.<\/p>\n<p>A quel tempo, per i microservizi sono stati scelti schemi di lavoro con pi\u00f9 datacenter su macchine virtuali e hardware. Come mostrato nelle immagini, sono state utilizzate configurazioni di replica di Tarantool sia in modalit\u00e0 master-master che master-slave. <\/p>\n<p><img decoding=\"async\" alt=\"Come smettere di preoccuparsi e iniziare a vivere senza monoliti\" src=\"\/wp-content\/uploads\/2020\/08\/b7bf3d6646ec9f6a8f8af3a539adede1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Architettura. Opzione 1. Servizio utenti<\/i><\/p>\n<p>Attualmente ci sono 24 shard, ognuno con 2 istanze (una per ogni datacenter), tutte in modalit\u00e0 master-master.<\/p>\n<p>Sopra il database ci sono applicazioni che accedono alle repliche del database. Le applicazioni comunicano con Tarantool tramite la nostra libreria personalizzata, che implementa l'interfaccia del driver Go per Tarantool. Essa vede tutte le repliche e pu\u00f2 lavorare con il master sia in lettura che in scrittura. Fondamentalmente, implementa un modello di replica set, con logica per la selezione delle repliche, retry, circuit breaker e rate limiting.<\/p>\n<p>Inoltre, \u00e8 possibile configurare la politica di selezione della replica per ogni shard. Ad esempio, tramite round-robin.<\/p>\n<p><img decoding=\"async\" alt=\"Come smettere di preoccuparsi e iniziare a vivere senza monoliti\" src=\"\/wp-content\/uploads\/2020\/08\/6dc36fa54e3d01bd51f879fccdfd8e0b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Architettura. Opzione 2. Servizio per il calcolo del costo finale del prodotto.<\/i><\/p>\n<p>Alcuni mesi fa, la maggior parte delle richieste per il calcolo del costo finale dei prodotti sono state trasferite a un nuovo servizio che, in sostanza, funziona senza database, ma fino a quel momento il 100% era gestito da un servizio con Tarantool sotto il cofano.<\/p>\n<p>Il database del servizio \u00e8 composto da 4 master, che sincronizzano i dati, e ognuno di questi master distribuisce i dati alle repliche in sola lettura tramite replicazione. Ogni master ha circa 15 di queste repliche.<\/p>\n<p>In entrambe le schemi, in caso di inaccessibilit\u00e0 di un data center, l'applicazione pu\u00f2 ottenere dati dall'altro.<\/p>\n<p>Va notato che in Tarantool la replicazione \u00e8 piuttosto flessibile e configurabile in runtime. In altri sistemi ci sono stati problemi. Ad esempio, in PostgreSQL la modifica dei parametri max_wal_senders e max_replication_slots richiede il riavvio del master, il che in alcuni casi pu\u00f2 causare interruzioni delle connessioni tra l'applicazione e il DBMS.<\/p>\n<h3>Cerca e troverai!<\/h3>\n<p>\nPerch\u00e9 non abbiamo fatto \"come le persone normali\" e abbiamo scelto un approccio atipico? Dipende da cosa si considera normale. Molti realizzano cluster con Mongo e li distribuiscono su tre data center geo-distribuiti.<\/p>\n<p>All'epoca, avevamo gi\u00e0 due progetti su Redis. Il primo era una cache, mentre il secondo rappresentava uno storage persistente per dati non troppo critici. Con quest'ultimo ci sono stati molti problemi, in parte a causa nostra. A volte grandi volumi di dati erano memorizzati in una chiave e di tanto in tanto il sito ne risentiva. Questa sistema veniva utilizzato in modalit\u00e0 master-slave. Ci sono stati molti casi in cui qualcosa accadeva al master e la replicazione si interrompeva. <\/p>\n<p>Quindi Redis \u00e8 buono per compiti stateless, non per stateful. In linea di massima, consentiva di risolvere la maggior parte dei problemi, ma solo se si trattava di soluzioni key-value con un paio di indici. Tuttavia, la persistenza e la replicazione di Redis a quel tempo erano piuttosto deludenti. Inoltre, ci sono stati reclami riguardo le prestazioni.<\/p>\n<p>Abbiamo considerato MySQL e PostgreSQL. Ma il primo non ha trovato spazio da noi, mentre il secondo \u00e8 di per s\u00e9 un prodotto piuttosto complesso e costruire servizi semplici su di esso sarebbe stato poco pratico.<br \/>\nAbbiamo provato RIAK, Cassandra, persino un database grafico. Tutte queste sono soluzioni di nicchia che non si adattavano al ruolo di strumento universale per la creazione di servizi.<\/p>\n<p>Alla fine ci siamo fermati su Tarantool.<\/p>\n<p>Ci siamo rivolti a esso quando era alla versione 1.6. Siamo rimasti colpiti dalla sinergia tra key-value e funzionalit\u00e0 di un database relazionale. Ci sono indici secondari, transazioni e spazi, che sono come tabelle, ma non semplici, poich\u00e9 possono contenere un numero variabile di colonne. Ma la killer feature di Tarantool erano gli indici secondari combinati con key-value e transazionalit\u00e0.<\/p>\n<p>Allo stesso modo, ha giocato un ruolo importante la comunit\u00e0 di lingua russa, pronta ad aiutare in chat. Ne abbiamo approfittato attivamente e vivevamo praticamente in chat. Inoltre, \u00e8 fondamentale menzionare la buona persistenza senza evidenti problemi e bug. Se guardiamo alla nostra storia con Tarantool, ci sono stati molti dolori e fallimenti con la replicazione, ma non abbiamo mai perso dati a causa sua!<\/p>\n<h3>L'implementazione \u00e8 iniziata in modo difficile.<\/h3>\n<p>\nA quel tempo, il nostro stack di sviluppo principale era .NET, per il quale non esisteva un connettore per Tarantool. Abbiamo subito iniziato a lavorare su Go. Anche con Lua andava piuttosto bene. Il problema principale era il debug: in .NET la situazione era ottimale, ma immergersi nel mondo di embedded Lua, con solo i log disponibili e senza alcun debug, era complicato. Inoltre, per qualche motivo la replicazione si rompeva periodicamente, e abbiamo dovuto approfondire il funzionamento del motore di Tarantool. In questo ci ha aiutato la chat, in misura minore la documentazione, a volte abbiamo guardato il codice. A quel tempo, la documentazione non era delle migliori.<\/p>\n<p>Cos\u00ec, nel corso di alcuni mesi, siamo riusciti a fare esperienza e ottenere risultati soddisfacenti nel lavoro con Tarantool. Abbiamo formalizzato in git le soluzioni standard che aiutavano nella creazione di nuovi microservizi. Ad esempio, quando sorgeva la necessit\u00e0 di realizzare un nuovo microservizio, lo sviluppatore guardava il codice sorgente della soluzione di riferimento nel repository, e la creazione di un nuovo microservizio richiedeva non pi\u00f9 di una settimana. <\/p>\n<p>Erano tempi particolari. All'epoca potevi avvicinarti all'amministratore al tavolo accanto e chiedere: \u00abDammi una virtual machine\u00bb. Dopo circa trenta minuti, la macchina era gi\u00e0 a tua disposizione. Ti connettevi da solo, installavi tutto, e veniva instradato il traffico verso di essa.<\/p>\n<p>Oggi non funziona pi\u00f9 cos\u00ec: bisogna attivare il monitoraggio del servizio, registrare le attivit\u00e0, coprire la funzionalit\u00e0 con test, ordinare una virtual machine o installarla in Kubernetes, ecc. In generale, sar\u00e0 meglio, anche se pi\u00f9 lungo e complicato.<\/p>\n<h3>Dividi e conquista. Com'\u00e8 la situazione con Lua?<\/h3>\n<p>\nC'era un serio dilemma: alcune squadre non riuscivano a gestire l'implementazione di modifiche nei servizi con una grande quantit\u00e0 di logica in Lua. Spesso questo comportava l'inefficienza del servizio. <\/p>\n<p>In altre parole, gli sviluppatori preparano una modifica. Tarantool inizia a eseguire la migrazione, mentre la replica \u00e8 ancora con il vecchio codice; viene ricevuto tramite replica qualche DDL o altro, e il codice si rompe semplicemente, perch\u00e9 non \u00e8 stato previsto. Di conseguenza, la procedura di aggiornamento per gli amministratori era scritta su un foglio A4: fermare la replica, aggiornare questo, riattivare la replica, disattivare qui, aggiornare l\u00ec. Un vero incubo! <\/p>\n<p>Di conseguenza, ora cerchiamo di non utilizzare Lua. Semplicemente tramite iproto (protocollo binario per l'interazione con il server), e basta. Forse \u00e8 una mancanza di conoscenze da parte degli sviluppatori, ma da questa prospettiva il sistema \u00e8 complesso.<\/p>\n<p>Non seguiamo sempre ciecamente questo scenario. Oggi per noi non esiste pi\u00f9 un bianco o nero: o tutto in Lua, o tutto in Go. Comprendiamo gi\u00e0 come combinare le due cose per evitare problemi di migrazione in futuro.<\/p>\n<p>Dove \u00e8 attualmente presente Tarantool?<br \/>\nTarantool \u00e8 utilizzato nel servizio di calcolo del prezzo finale dei prodotti tenendo conto dei coupon sconto, noto come \u00abPromotizer\u00bb. Come detto in precedenza, adesso sta uscendo di scena: sar\u00e0 sostituito da un nuovo servizio di catalogo con prezzi pre-calcolati, ma fino a sei mesi fa, tutti i calcoli venivano effettuati in \u00abPromotizer\u00bb. Prima, met\u00e0 della sua logica era scritta in Lua. Due anni fa, il servizio \u00e8 stato trasformato in un repository, e la logica \u00e8 stata riscritta in Go, poich\u00e9 la meccanica degli sconti \u00e8 cambiata e il servizio necessitava di maggiore prestazioni. <\/p>\n<p>Uno dei servizi pi\u00f9 critici \u00e8 il profilo utente. Cio\u00e8, tutti gli utenti di Wildberries vengono memorizzati in Tarantool, circa 50 milioni. Un sistema shardizzato per ID utente, distribuito su diversi data center con l'ausilio di servizi Go. <br \/>\nIn passato, il leader per RPS era \u00abPromotizer\u00bb, raggiungeva fino a 6.000 richieste. A un certo punto avevamo 50-60 istanze. Ora, per\u00f2, il leader per RPS \u00e8 il profilo utente, che raggiunge circa 12.000. In questo servizio viene applicato uno sharding personalizzato suddiviso per range di ID utente. Il servizio gestisce pi\u00f9 di 20 macchine, ma sono troppe; prevediamo di ridurre le risorse dedicate, poich\u00e9 bastano le capacit\u00e0 di 4-5 macchine.<\/p>\n<p>Il servizio delle sessioni \u00e8 il nostro primo servizio su vshard e Cartridge. L'impostazione di vshard e l'aggiornamento di Cartridge hanno richiesto un certo impegno, ma alla fine tutto ha funzionato.<\/p>\n<p>Il servizio per visualizzare diversi banner sul sito e nell'app mobile \u00e8 stato uno dei primi a essere rilasciato direttamente su Tarantool. Questo servizio \u00e8 notevole perch\u00e9 ha circa 6-7 anni, \u00e8 ancora operativo e non \u00e8 mai stato riavviato. Sono stati utilizzati la replica master-master. Non \u00e8 mai successo nulla di rotto.<\/p>\n<p>C'\u00e8 un esempio di utilizzo di Tarantool per funzionalit\u00e0 di prontuari rapidi in un sistema di magazzino, per verificare rapidamente informazioni in alcuni casi. Abbiamo provato a usare Redis per questo, ma i dati in memoria occupavano pi\u00f9 spazio rispetto a Tarantool.<\/p>\n<p>I servizi della lista d'attesa, delle iscrizioni ai clienti, delle attuali storie di moda e dei prodotti in sospeso funzionano anche con Tarantool. L'ultimo servizio occupa in memoria circa 120 GB. \u00c8 il servizio con il maggior volume tra quelli elencati. <\/p>\n<h3>Conclusione<\/h3>\n<p>\nGrazie agli indici secondari combinati con key-value e transazionalit\u00e0, Tarantool \u00e8 ottimo per architetture basate su microservizi. Tuttavia, abbiamo incontrato difficolt\u00e0 quando implementavamo modifiche nei servizi con una grande quantit\u00e0 di logica in Lua: i servizi smettevano spesso di funzionare. Non siamo riusciti a superare questo problema, e col tempo siamo arrivati a varie combinazioni di Lua e Go: sappiamo dove utilizzare un linguaggio e dove l'altro.<\/p>\n<p><b>Ulteriori letture sull'argomento<\/b><\/p>\n<ul>\n<li>Creiamo da zero un applicativo ad alta richiesta su Tarantool <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/510440\/\">habr.com\/ru\/company\/mailru\/blog\/510440<\/a><\/noindex><\/li>\n<li>Una scelta affidabile per un leader in Tarantool Cartridge <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/513912\/\">habr.com\/ru\/company\/mailru\/blog\/513912<\/a><\/noindex><\/li>\n<li>Canale Telegram di Tarantool con notizie sul prodotto <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/tarantool_news\">t.me\/tarantool_news<\/a><\/noindex><\/li>\n<li>Discuti Tarantool nel chat di comunit\u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/tarantoolru\">t.me\/tarantoolru<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/516932\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435 \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u041d\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0441\u0438\u0434\u044f \u0443 \u043a\u043e\u0441\u0442\u0440\u0430, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0431\u044b\u043b\u044b\u0445 \u043f\u043e\u0431\u0435\u0434\u0430\u0445, \u0441\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e \u0441\u0432\u043e\u0435\u043c \u043e\u043f\u044b\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u043e\u0439 \u0434\u0435\u043d\u044c. \u0418 \u043f\u0443\u0441\u0442\u044c \u0432\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u0443 \u043a\u043e\u0441\u0442\u0440\u0430, \u043d\u043e \u0437\u0430\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0441. \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u043d\u0430 Tarantool. \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0434\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92807,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92806","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.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435 \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\" \/>\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\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.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\udd47\u041a\u0430\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0436\u0438\u0442\u044c \u0431\u0435\u0437 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435 \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita\" \/>\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-08-31T05:42:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-31T05:42:03+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\udd47Come smettere di preoccuparsi e iniziare a vivere senza monolite | ProHoster","description":"Tutti noi amiamo le storie.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","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\u041a\u0430\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0436\u0438\u0442\u044c \u0431\u0435\u0437 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430 | ProHoster","og:description":"\u0412\u0441\u0435 \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","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-08-31T05:42:03+00:00","article:modified_time":"2020-08-31T05:42:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92806","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 12:01:23","updated":"2022-10-01 20:28:38","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\/92806","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=92806"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/92806\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/92807"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=92806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=92806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=92806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}