{"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 il monolito","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Come smettere di preoccuparsi e iniziare a vivere senza il monolito\" 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 le nostre vittorie passate, le battaglie o semplicemente le nostre esperienze sul lavoro mentre siamo seduti attorno a un fuoco.<\/p>\n<p>Oggi \u00e8 proprio un giorno cos\u00ec. E anche se ora non sei attorno a un fuoco, abbiamo comunque una storia per te. La storia di come abbiamo iniziato a lavorare con il database Tarantool.<\/p>\n<p>Una volta, molto tempo fa, nella nostra azienda c'erano un paio di \"monoliti\" e un unico \"soffitto\" per tutti, a cui questi monoliti si avvicinavano lentamente ma inesorabilmente, limitando il volo della nostra azienda, la nostra crescita. E c'era una comprensione chiara: un giorno ci saremmo scontrati contro questo soffitto.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nOra ci governa l'ideologia della separazione di tutto, dall'hardware alla logica aziendale. Di conseguenza, abbiamo, ad esempio, due data center praticamente indipendenti a livello di rete. Ma allora tutto era molto diverso.<\/p>\n<p>Oggi ci sono molti strumenti e mezzi per apportare modifiche, come CI\/CD, K8S, ecc. All'epoca dei \"monoliti\" non avevamo bisogno di cos\u00ec tanti termini stranieri. Era sufficiente semplicemente modificare il \"database di archivio\".<\/p>\n<p>Ma il tempo \u00e8 andato avanti, e il numero di richieste \u00e8 aumentato insieme ad esso, facendo schizzare le RPS a volte oltre le nostre capacit\u00e0. Con l'ingresso nel mercato degli stati post-sovietici, il carico sul processore del database del primo monolito non scendeva sotto il 90%, mentre le RPS si mantenevano attorno a 2400. E non erano semplici piccole selezioni, ma richieste massive con un sacco di controlli e JOIN, che potevano attraversare quasi met\u00e0 dei dati a causa di un alto IO.<\/p>\n<p>Quando sono iniziate ad apparire le vere vendite per il \"Black Friday\" - e Wildberries \u00e8 stata una delle prime in Russia a promuoverle - la situazione \u00e8 diventata decisamente preoccupante. Infatti, il carico in questi giorni aumentava di tre volte.<br \/>\nOh, quei \"tempi monolitici\"! Sono certo che anche tu hai vissuto esperienze simili e ancora non riesci a capire come possa essere successo.<\/p>\n<p>Cosa puoi fare? La moda \u00e8 propria anche delle tecnologie. Circa 5 anni fa, abbiamo dovuto ripensare una di queste mode in forma di un sito esistente su .NET e MS SQL Server, che custodiva gelosamente tutta la logica del sito stesso. La custodiva cos\u00ec bene che scindere un tale monolito \u00e8 risultata un'attivit\u00e0 lunga e per niente semplice.<br \/>\nUna piccola digressione. <\/p>\n<p>A eventi di vario genere, dico: \u00abse non hai tagliato il monolite, non sei cresciuto!\u00bb Mi interessa la tua opinione al riguardo, per favore scrivila nei commenti.<\/p>\n<h3>E scoppi\u00f2 il tuono<\/h3>\n<p>\nTorniamo al nostro \u00abfocolare\u00bb. Per distribuire il carico della funzionalit\u00e0 \u00abmonolitica\u00bb, abbiamo deciso di suddividere il sistema in microservizi basati su tecnologie open source. Perch\u00e9, perlomeno, la loro scalabilit\u00e0 \u00e8 pi\u00f9 economica. E avevamo il 100% di certezza che avrebbe funzionato, visto che nel frattempo eravamo riusciti ad entrare nei mercati dei paesi vicini e il numero di registrazioni, cos\u00ec come il numero degli ordini, iniziava a crescere ancora di pi\u00f9.<\/p>\n<p>Analizzando i primi candidati per la migrazione dal monolito ai microservizi, abbiamo capito che nell'80% dei casi il salvataggio avviene per il 99% dalle sistemi back office, mentre la lettura proviene dal front-end. Questo riguardava soprattutto un paio di sottosistemi importanti per noi: i dati degli utenti e il sistema di calcolo del prezzo finale dei prodotti sulla base delle informazioni relative agli sconti e ai coupon dei clienti.<\/p>\n<p>Come parentesi, fa strano pensare che, oltre ai sottosistemi sopra menzionati, dal nostro monolito sono stati estratti anche i cataloghi dei prodotti, il carrello degli utenti, il sistema di ricerca dei prodotti, il sistema di filtraggio dei cataloghi e vari sistemi di raccomandazione. Per ciascuno di essi esistono classi separate di sistemi specializzati, ma un tempo vivevano tutti insieme in un \u201cpiccolo rifugio\u201d. <\/p>\n<p>Abbiamo pianificato di estrarre i dati sui nostri clienti in un sistema shardato. Tuttavia, l'estrazione della funzionalit\u00e0 per il calcolo del prezzo finale dei prodotti richiedeva una buona scalabilit\u00e0 in lettura, poich\u00e9 questa creava il maggiore carico in termini di RPS ed era la pi\u00f9 complessa da eseguire per il database (molti dati sono coinvolti nel processo di calcolo). <\/p>\n<p>Di conseguenza, abbiamo sviluppato uno schema che si adattava bene con Tarantool.<\/p>\n<p>In quel periodo, per il funzionamento dei microservizi, sono stati scelti schemi di lavoro con pi\u00f9 data center su macchine virtuali e fisiche. Come mostrato nelle immagini, sono state utilizzate opzioni di replicazione 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 il monolito\" 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, si tratta di 24 shard, ognuno con 2 istanze (una per ogni data center), tutte in modalit\u00e0 master-master.<\/p>\n<p>Sopra il database si trovano applicazioni che accedono alle repliche del database. Le applicazioni lavorano con Tarantool attraverso 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 per lettura e scrittura. In sostanza, implementa un modello di replica set, a cui \u00e8 stata aggiunta la logica di selezione delle repliche, esecuzione di retry, circuit breaker e limitazione della velocit\u00e0.<\/p>\n<p>Inoltre, \u00e8 possibile configurare la politica di selezione delle repliche in riferimento agli shard. Ad esempio, utilizzando il round-robin.<\/p>\n<p><img decoding=\"async\" alt=\"Come smettere di preoccuparsi e iniziare a vivere senza il monolito\" src=\"\/wp-content\/uploads\/2020\/08\/6dc36fa54e3d01bd51f879fccdfd8e0b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Architettura. Opzione 2. Servizio di calcolo del costo finale del prodotto<\/i><\/p>\n<p>Qualche mese fa, la maggior parte delle richieste per il calcolo del costo finale dei prodotti \u00e8 stata trasferita a un nuovo servizio, che fondamentalmente funziona senza database, ma fino a un certo punto, il 100% era gestito dal servizio con Tarantool sotto il cofano.<\/p>\n<p>Il database del servizio \u00e8 composto da 4 master, nei quali il sincronizzatore raccoglie i dati, e ciascuno di questi master distribuisce i dati alle repliche in sola lettura tramite replica. Ogni master ha circa 15 di queste repliche.<\/p>\n<p>In entrambe le architetture, in caso di indisponibilit\u00e0 di un datacenter, l'applicazione pu\u00f2 ricevere dati dal secondo.<\/p>\n<p>Vale la pena notare che in Tarantool la replica \u00e8 piuttosto flessibile e pu\u00f2 essere configurata a runtime. In altri sistemi ci sono stati problemi, ad esempio per modificare i parametri max_wal_senders e max_replication_slots in PostgreSQL \u00e8 necessario riavviare il master, il che in alcuni casi pu\u00f2 portare a disconnessioni 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 modo atipico? Dipende da cosa consideriamo normale. Molti creano un cluster con Mongo e lo distribuiscono su tre datacenter geo-distribuiti.<\/p>\n<p>All'epoca avevamo gi\u00e0 due progetti su Redis. Il primo era una cache, e il secondo costituiva uno storage persistente per dati non troppo critici. Con quest'ultimo ci sono stati parecchi problemi, in parte per nostra responsabilit\u00e0. A volte grossi volumi di dati si accumulavano nella chiave, e di tanto in tanto il sito diventava lento. Questo sistema \u00e8 stato utilizzato in modalit\u00e0 master-slave. Ci sono stati molti casi in cui qualcosa \u00e8 accaduto con il master e la replica si \u00e8 interrotta. <\/p>\n<p>Cio\u00e8, Redis \u00e8 ottimo per compiti stateless, ma non per quelli stateful. Fondamentalmente, ha permesso di risolvere la maggior parte dei problemi, ma solo se si trattava di soluzioni key-value con un paio di indici. Tuttavia, all'epoca, la persistenza e la replica in Redis erano piuttosto deludenti. Inoltre, ci furono lamentele sulle prestazioni.<\/p>\n<p>Abbiamo considerato MySQL e PostgreSQL. Ma il primo in qualche modo non ha trovato spazio da noi, mentre il secondo \u00e8 un prodotto piuttosto complesso in s\u00e9, e costruire su di esso semplici servizi sarebbe stato poco pratico.<br \/>\nAbbiamo provato RIAK, Cassandra, persino database grafici. Tutte queste sono soluzioni piuttosto di nicchia, che non si prestavano a essere strumenti universali per la creazione di servizi.<\/p>\n<p>Alla fine abbiamo optato per Tarantool.<\/p>\n<p>Ci siamo rivolti a lui quando era in versione 1.6. Ci ha colpito la sinergia tra key-value e le funzionalit\u00e0 di un database relazionale. Ci sono indici secondari, transazioni e spazi, che sono come tabelle, ma non semplici, permettendo di memorizzare un numero variabile di colonne. Tuttavia, la killer feature di Tarantool \u00e8 stata la combinazione di indici secondari con key-value e transazionalit\u00e0.<\/p>\n<p>Ha anche giocato un ruolo importante la reattivit\u00e0 della comunit\u00e0 di lingua russa, pronta ad aiutare in chat. Abbiamo sfruttato attivamente questa opportunit\u00e0 e vivevamo in chat. E non va dimenticato il ragionevole livello di persistenza senza evidenti imperfezioni e difetti. Guardando la nostra storia con Tarantool, abbiamo avuto molti problemi e fallimenti con la replica, ma non abbiamo mai perso dati per colpa 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 c'era un connettore per Tarantool. Abbiamo subito iniziato a fare qualcosa in Go. Anche con Lua le cose andavano piuttosto bene. Il principale problema a quel punto era il debug: in .NET era tutto magnifico, ma immersione nel mondo di Lua embedded, quando non avevi altra opzione se non i log, era piuttosto arduo. Inoltre, per qualche motivo, la replica si interrompeva periodicamente, e abbiamo dovuto approfondire il funzionamento del motore Tarantool. In questo ci ha aiutati la chat, meno la documentazione, a volte guardavamo anche il codice. A quel tempo la documentazione era piuttosto scarsa.<\/p>\n<p>Cos\u00ec, nell'arco di alcuni mesi, siamo riusciti a fare esperienza e ottenere risultati soddisfacenti nel lavoro con Tarantool. Abbiamo formalizzato in git dei modelli di sviluppo, che hanno aiutato nella creazione di nuovi microservizi. Ad esempio, quando si presentava l'esigenza di realizzare un nuovo microservizio, il developer consultava il codice sorgente della soluzione di riferimento nel repository, e la creazione del nuovo richiedeva non pi\u00f9 di una settimana. <\/p>\n<p>Allora erano tempi speciali. In un certo senso, potevi avvicinarti all'amministratore al tavolo vicino e chiedere: \"Dammela virtual machine\". Dopo circa trenta minuti, la macchina era gi\u00e0 a tua disposizione. Ti connettevi da solo, installavi tutto e ti attivavano il traffico su di essa.<\/p>\n<p>Oggi non funziona pi\u00f9 cos\u00ec: \u00e8 necessario implementare il monitoraggio del servizio, la registrazione, coprire la funzionalit\u00e0 con test, ordinare una virtual machine o la fornitura in Kubernetes, e cos\u00ec via. In generale, sar\u00e0 meglio cos\u00ec, anche se pi\u00f9 lungo e complicato.<\/p>\n<h3>Dividi e conquista. Come stanno le cose con Lua?<\/h3>\n<p>\nC'era un serio dilemma: alcune squadre faticavano a implementare modifiche nel servizio con molta logica su Lua. Spesso questo si accompagnava a malfunzionamenti del servizio. <\/p>\n<p>Cio\u00e8, gli sviluppatori preparano una certa modifica. Tarantool inizia a eseguire la migrazione, mentre la replica opera ancora con il codice vecchio; arriva per replicazione qualche DDL, qualcos'altro, e il codice semplicemente si rompe, perch\u00e9 ci\u00f2 non \u00e8 stato tenuto in considerazione. Di conseguenza, la procedura di aggiornamento per gli amministratori era scritta su un foglio A4: fermare la replicazione, aggiornare questo, riavviare la replicazione, spegnere qui, aggiornare l\u00e0. Un incubo! <\/p>\n<p>Alla fine, ora cerchiamo di non fare nulla su 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 questo punto di vista il sistema \u00e8 complicato.<\/p>\n<p>Non seguiamo sempre ciecamente questo schema. Oggi non abbiamo nero e bianco: tutto su Lua, oppure tutto su Go. Stiamo gi\u00e0 comprendendo come combinare le cose, per evitare problemi con la migrazione.<\/p>\n<p>Dove si trova adesso Tarantool?<br \/>\nTarantool viene utilizzato nel servizio di calcolo del costo finale dei prodotti tenendo conto dei coupon sconto, noto anche come \u00abPromotaizer\u00bb. Come gi\u00e0 detto in precedenza, attualmente sta venendo messo da parte: un nuovo servizio di catalogo con prezzi pre-calcolati lo sta sostituendo, ma sei mesi fa tutti i calcoli venivano effettuati tramite il \u00abPromotaizer\u00bb. In passato met\u00e0 della logica era scritta in Lua. Due anni fa il servizio \u00e8 stato trasformato in un magazzino, e la logica \u00e8 stata riscritta in Go, perch\u00e9 la meccanica degli sconti \u00e8 cambiata un po' e il servizio aveva bisogno di una maggiore potenza. <\/p>\n<p>Uno dei servizi pi\u00f9 critici \u00e8 il profilo utente. Quindi, tutti gli utenti di Wildberries sono conservati in Tarantool, e sono circa 50 milioni. Un sistema shardizzato per ID utente, distribuito su diversi centri di distribuzione con integrazioni su servizi Go. <br \/>\nNel RPS, in passato, il leader era il \u00abPromotaizer\u00bb, che raggiungeva fino a 6.000 richieste. A un certo punto avevamo 50-60 istanze. Ora, il leader nel RPS sono i profili utenti, con circa 12.000 richieste. In questo servizio viene applicato uno sharding personalizzato suddiviso per intervalli di ID utente. Servizio gestisce pi\u00f9 di 20 macchine, ma sono troppe; prevediamo di ridurre le risorse allocate, poich\u00e9 sarebbe sufficiente la potenza di 4-5 macchine.<\/p>\n<p>Il servizio di sessione \u00e8 il nostro primo servizio su vshard e Cartridge. La configurazione di vshard e l'aggiornamento di Cartridge hanno richiesto un certo impegno da parte nostra, ma alla fine tutto ha funzionato.<\/p>\n<p>Il servizio per la visualizzazione di diversi banner sul sito e nell'app mobile \u00e8 stato uno dei primi ad essere lanciato direttamente su Tarantool. Questo servizio \u00e8 notevole perch\u00e9 ha circa 6-7 anni, \u00e8 ancora in funzione e non \u00e8 mai stato riavviato. \u00c8 stata utilizzata la replicazione master-master. Non si \u00e8 mai rotto nulla.<\/p>\n<p>C'\u00e8 un esempio di utilizzo di Tarantool per la funzionalit\u00e0 di cataloghi rapidi nel sistema di magazzino, per verificare rapidamente le informazioni in alcuni casi. Abbiamo provato a utilizzare Redis per questo, ma i dati in memoria occupavano pi\u00f9 spazio rispetto a Tarantool.<\/p>\n<p>I servizi di lista di attesa, abbonamenti clienti, storie trendy e prodotti salvati funzionano anch'essi con Tarantool. L'ultimo servizio occupa in memoria circa 120 GB. \u00c8 il servizio pi\u00f9 voluminoso tra quelli menzionati. <\/p>\n<h3>Conclusione<\/h3>\n<p>\nGrazie agli indici secondari combinati con key-value e alla transazionalit\u00e0, Tarantool \u00e8 perfetto per architetture basate su microservizi. Tuttavia, abbiamo incontrato difficolt\u00e0 quando implementavamo cambiamenti nei servizi con una logica complessa in Lua: i servizi smettevano spesso di funzionare. Non siamo riusciti a risolvere questo problema e col tempo siamo giunti a diverse combinazioni di Lua e Go: sappiamo dove \u00e8 meglio utilizzare un linguaggio e dove l'altro.<\/p>\n<p><b>Cosa leggere ancora sull'argomento<\/b><\/p>\n<ul>\n<li>Stiamo creando da zero un'applicazione 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>Scelta affidabile del 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>Discussa Tarantool nella chat della community <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.1.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.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\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}]}}