{"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\/pt\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","title":{"rendered":"Como parar de se preocupar e come\u00e7ar a viver sem um mon\u00f3lito","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Como parar de se preocupar e come\u00e7ar a viver sem um mon\u00f3lito\" src=\"\/wp-content\/uploads\/2020\/08\/eb6ab7fd08eeebd8cdad89b0e4e6588e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTodos n\u00f3s amamos hist\u00f3rias. Gostamos de nos reunir ao redor da fogueira para contar nossas vit\u00f3rias passadas, lutas ou simplesmente sobre nossas experi\u00eancias de trabalho.<\/p>\n<p>Hoje \u00e9 um dia exatamente assim. E mesmo que voc\u00ea n\u00e3o esteja ao redor de uma fogueira, temos uma hist\u00f3ria para voc\u00ea. Uma hist\u00f3ria sobre como come\u00e7amos a trabalhar com o armazenamento no Tarantool.<\/p>\n<p>Era uma vez, em nossa empresa, havia alguns 'mon\u00f3litos' e um 'teto' que todos compartilhavam, para o qual esses mon\u00f3litos se aproximavam lentamente, mas de forma constante, limitando o voo de nossa empresa, nosso desenvolvimento. E havia uma clara compreens\u00e3o: um dia, n\u00f3s ir\u00edamos bater nesse teto.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAgora, a ideologia de separa\u00e7\u00e3o de tudo e todos reina, desde a infraestrutura at\u00e9 a l\u00f3gica de neg\u00f3cios. Como resultado, por exemplo, temos dois DCs, praticamente independentes a n\u00edvel de rede. Mas, naquela \u00e9poca, tudo era bem diferente.<\/p>\n<p>Hoje em dia, existem muitas ferramentas e meios para fazer mudan\u00e7as, como CI\/CD, K8S, etc. Na era 'monol\u00edtica', n\u00e3o precis\u00e1vamos de tantas palavras estrangeiras. Bastava ajustar o 'armazenamento' no banco de dados.<\/p>\n<p>Mas o tempo avan\u00e7ou, e a quantidade de solicita\u00e7\u00f5es cresceu junto com ele, disparando RPS \u00e0s vezes acima das nossas possibilidades. Quando entramos no mercado da CEI, a carga no processador do DB do primeiro mon\u00f3lito n\u00e3o ca\u00eda abaixo de 90%, e o RPS se mantinha em torno de 2400. E n\u00e3o eram apenas pequenas sele\u00e7\u00f5es, mas grandes solicita\u00e7\u00f5es com muitas verifica\u00e7\u00f5es e JOINs, que percorreram quase metade dos dados em meio a um alto IO.<\/p>\n<p>Quando vendas completas come\u00e7aram a aparecer na 'Black Friday' \u2014 e a Wildberries foi uma das primeiras a realiz\u00e1-las na R\u00fassia \u2014 a situa\u00e7\u00e3o se tornou bastante triste. Pois, a carga nesses dias aumenta tr\u00eas vezes.<br \/>\nAh, esses 'tempos monol\u00edticos'! Tenho certeza de que voc\u00ea tamb\u00e9m j\u00e1 passou por isso e ainda n\u00e3o consegue entender como isso poderia acontecer com voc\u00ea.<\/p>\n<p>O que se pode fazer - a moda tamb\u00e9m se aplica \u00e0s tecnologias. H\u00e1 cerca de 5 anos, tivemos que repensar uma dessas modas, que era um site em .NET e servidor MS SQL, que guardava com carinho toda a l\u00f3gica do site. Guardava de tal forma que desmembrar esse mon\u00f3lito se tornou um prazer longo e bastante complicado.<br \/>\nUma pequena digress\u00e3o. <\/p>\n<p>Em v\u00e1rios eventos, costumo dizer: \"se voc\u00ea n\u00e3o desmantelou o monolito, ent\u00e3o voc\u00ea n\u00e3o cresceu!\" Estou interessado na sua opini\u00e3o sobre isso, por favor, escreva-a nos coment\u00e1rios.<\/p>\n<h3>E ent\u00e3o ouviu-se o trov\u00e3o<\/h3>\n<p>\nVoltando ao nosso \"fogo de ch\u00e3o\". Para distribuir a carga da funcionalidade monol\u00edtica, decidimos dividir o sistema em microsservi\u00e7os baseados em tecnologias de c\u00f3digo aberto. Porque, no m\u00ednimo, a escalabilidade deles \u00e9 mais barata. E sab\u00edamos, com 100% de certeza, que precisar\u00edamos escalar (e muito). Afinal, j\u00e1 naquele momento, conseguimos acessar os mercados dos pa\u00edses vizinhos, e tanto o n\u00famero de registros quanto o n\u00famero de pedidos come\u00e7ou a crescer ainda mais.<\/p>\n<p>Ao analisar os primeiros candidatos para a migra\u00e7\u00e3o do monolito para microsservi\u00e7os, percebemos que em 80% os dados eram inseridos neles em 99% a partir de sistemas de back office, enquanto a leitura vinha da linha de frente. Isso se aplicava principalmente a alguns subsistemas importantes para n\u00f3s \u2014 dados dos usu\u00e1rios e o sistema de c\u00e1lculo do custo final dos produtos com base em informa\u00e7\u00f5es sobre descontos e cupons adicionais dos clientes.<\/p>\n<p>\u00c0 guisa de uma observa\u00e7\u00e3o. Agora \u00e9 assustador imaginar, mas al\u00e9m dos subsistemas mencionados, tamb\u00e9m foram extra\u00eddos do nosso monolito cat\u00e1logos de produtos, carrinho de usu\u00e1rios, sistema de busca de produtos, sistema de filtragem de cat\u00e1logos de produtos e diversos sistemas recomendativos. Para operar cada um deles, existem classes separadas de sistemas especializados, mas antes todos eles coexistiam em uma \u00fanica \"casa\". <\/p>\n<p>Planejamos transferir os dados de nossos clientes para um sistema de sharding. A funcionalidade de c\u00e1lculo do custo final dos produtos exigia boa escalabilidade em leitura, uma vez que gerava a maior carga de RPS e era a mais complicada de implementar para o banco de dados (muitos dados est\u00e3o envolvidos no processo de c\u00e1lculos). <\/p>\n<p>Como resultado, desenvolvemos um esquema que se combina bem com Tarantool.<\/p>\n<p>Na \u00e9poca, para o funcionamento dos microsservi\u00e7os, foram escolhidos esquemas de opera\u00e7\u00e3o com v\u00e1rios Data Centers em m\u00e1quinas virtuais e f\u00edsicas. Como mostrado nas ilustra\u00e7\u00f5es, foram aplicadas op\u00e7\u00f5es de replica\u00e7\u00e3o do Tarantool tanto no modo master-master quanto master-slave. <\/p>\n<p><img decoding=\"async\" alt=\"Como parar de se preocupar e come\u00e7ar a viver sem um mon\u00f3lito\" src=\"\/wp-content\/uploads\/2020\/08\/b7bf3d6646ec9f6a8f8af3a539adede1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Arquitetura. Op\u00e7\u00e3o 1. Servi\u00e7o de usu\u00e1rios<\/i><\/p>\n<p>Atualmente, existem 24 shards, cada um com 2 inst\u00e2ncias (uma em cada Data Center), todas no modo master-master.<\/p>\n<p>Acima do banco de dados est\u00e3o os aplicativos que interagem com as r\u00e9plicas do banco de dados. Os aplicativos trabalham com Tarantool atrav\u00e9s da nossa biblioteca personalizada, que implementa a interface do driver Go para Tarantool. Ela v\u00ea todas as r\u00e9plicas e pode funcionar com o mestre para leitura e grava\u00e7\u00e3o. Na ess\u00eancia, ela implementa o modelo de conjunto de r\u00e9plicas, ao qual foram adicionadas a l\u00f3gica de sele\u00e7\u00e3o de r\u00e9plicas, tentativas de repeti\u00e7\u00e3o, circuito de interrup\u00e7\u00e3o e limite de taxa.<\/p>\n<p>Al\u00e9m disso, h\u00e1 a possibilidade de configurar a pol\u00edtica de sele\u00e7\u00e3o de r\u00e9plicas em rela\u00e7\u00e3o \u00e0 shard. Por exemplo, usando round-robin.<\/p>\n<p><img decoding=\"async\" alt=\"Como parar de se preocupar e come\u00e7ar a viver sem um mon\u00f3lito\" src=\"\/wp-content\/uploads\/2020\/08\/6dc36fa54e3d01bd51f879fccdfd8e0b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Arquitetura. Op\u00e7\u00e3o 2. Servi\u00e7o de c\u00e1lculo do custo final do produto.<\/i><\/p>\n<p>H\u00e1 v\u00e1rios meses, a maior parte das solicita\u00e7\u00f5es para o c\u00e1lculo do custo final dos produtos foi transferida para um novo servi\u00e7o, que, em princ\u00edpio, funciona sem bancos de dados, mas h\u00e1 algum tempo atr\u00e1s 100% do processamento era realizado pelo servi\u00e7o com Tarantool em funcionamento.<\/p>\n<p>O banco de dados do servi\u00e7o consiste em 4 mestres, dos quais o sincronizador coleta dados, e cada um desses mestres distribui dados para r\u00e9plicas somente de leitura atrav\u00e9s da replica\u00e7\u00e3o. Cada mestre tem cerca de 15 dessas r\u00e9plicas.<\/p>\n<p>Em ambas as esquemas, na aus\u00eancia de um DC, o aplicativo pode obter dados do segundo.<\/p>\n<p>Vale ressaltar que em Tarantool a replica\u00e7\u00e3o \u00e9 bastante flex\u00edvel e pode ser configurada em tempo real. Em outros sistemas, j\u00e1 ocorreram dificuldades. Por exemplo, ao modificar os par\u00e2metros max_wal_senders e max_replication_slots no PostgreSQL, \u00e9 necess\u00e1rio reiniciar o mestre, o que em v\u00e1rios casos pode causar interrup\u00e7\u00e3o nas conex\u00f5es entre o aplicativo e o SGBD.<\/p>\n<h3>Busque e voc\u00ea encontrar\u00e1!<\/h3>\n<p>\nPor que n\u00e3o fizemos \"como as pessoas normais\" e escolhemos uma abordagem at\u00edpica? Depende do que se considera normal. Muitos fazem um cluster com Mongo e o distribuem por tr\u00eas DCs geograficamente distribu\u00eddos.<\/p>\n<p>Naquela \u00e9poca, j\u00e1 est\u00e1vamos com dois projetos em Redis. O primeiro - cache, e o segundo era um armazenamento persistente para dados que n\u00e3o eram muito cr\u00edticos. Com este \u00faltimo, tivemos algumas dificuldades, em parte por nossa culpa. \u00c0s vezes, volumes consider\u00e1veis de dados estavam armazenados na chave, e de vez em quando o site enfrentava problemas. Utiliz\u00e1vamos esse sistema em uma configura\u00e7\u00e3o master-slave. E houve muitos casos em que algo acontecia com o mestre e a replica\u00e7\u00e3o falhava. <\/p>\n<p>Ou seja, o Redis \u00e9 bom para tarefas stateless, e n\u00e3o para stateful. Na verdade, ele permitia resolver a maioria dos problemas, mas apenas se fossem solu\u00e7\u00f5es de chave-valor com alguns \u00edndices. Por\u00e9m, o Redis tinha um desempenho bastante insatisfat\u00f3rio em termos de persist\u00eancia e replica\u00e7\u00e3o. Al\u00e9m disso, havia reclama\u00e7\u00f5es sobre a performance.<\/p>\n<p>Consideramos o MySQL e o PostgreSQL. Mas o primeiro n\u00e3o se firmou conosco, e o segundo por si s\u00f3 \u00e9 um produto bastante complexo, tornando invi\u00e1vel construir servi\u00e7os simples sobre ele.<br \/>\nTestamos RIAK, Cassandra, at\u00e9 mesmo um banco de dados gr\u00e1fico. Todas essas s\u00e3o solu\u00e7\u00f5es bastante nichadas, que n\u00e3o se encaixavam como uma ferramenta universal para a cria\u00e7\u00e3o de servi\u00e7os.<\/p>\n<p>No final, decidimos pelo Tarantool.<\/p>\n<p>Entramos em contato quando ele estava na vers\u00e3o 1.6. O que nos atraiu foi o simp\u00f3sio entre key-value e a funcionalidade de um banco de dados relacional. Possui \u00edndices secund\u00e1rios, transa\u00e7\u00f5es e spaces, que s\u00e3o como tabelas, por\u00e9m n\u00e3o simples, permitindo armazenar diversas colunas. Mas a killer feature do Tarantool eram os \u00edndices secund\u00e1rios combinados com key-value e transacionalidade.<\/p>\n<p>A comunidade de l\u00edngua russa, sempre pronta para ajudar no chat, tamb\u00e9m desempenhou um papel importante. Usamos isso ativamente e est\u00e1vamos sempre no chat. Al\u00e9m disso, a persist\u00eancia era decente, sem erros ou falhas evidentes. Se olharmos nossa hist\u00f3ria com o Tarantool, tivemos muitas dores e falhas com a replica\u00e7\u00e3o, mas nunca perdemos dados por causa dele!<\/p>\n<h3>A implementa\u00e7\u00e3o come\u00e7ou de forma dif\u00edcil.<\/h3>\n<p>\nNaquela \u00e9poca, nosso principal stack de desenvolvimento era .NET, para o qual n\u00e3o havia conector para o Tarantool. Come\u00e7amos imediatamente a desenvolver em Go. Com Lua tamb\u00e9m foi razoavelmente bem. O principal problema naquele momento era a depura\u00e7\u00e3o: no .NET tudo era excelente, mas mergulhar no mundo do Lua embutido, onde voc\u00ea n\u00e3o tem outro debug al\u00e9m dos logs, era complicado. Al\u00e9m disso, a replica\u00e7\u00e3o, por algum motivo, periodicamente falhava, e precis\u00e1vamos entender a estrutura do motor Tarantool. O chat ajudava nisso, a documenta\u00e7\u00e3o em menor grau, e \u00e0s vezes consult\u00e1vamos o c\u00f3digo. Naquele momento, a documenta\u00e7\u00e3o era bem fraca.<\/p>\n<p>Assim, ao longo de v\u00e1rios meses, conseguimos aprender e obter resultados satisfat\u00f3rios no trabalho com Tarantool. Organizamos em git as pr\u00e1ticas padr\u00e3o que ajudavam na cria\u00e7\u00e3o de novos microsservi\u00e7os. Por exemplo, quando surgia a tarefa de criar um novo microsservi\u00e7o, o desenvolvedor consultava o c\u00f3digo-fonte da solu\u00e7\u00e3o padr\u00e3o no reposit\u00f3rio, e a cria\u00e7\u00e3o de algo novo n\u00e3o levava mais do que uma semana. <\/p>\n<p>Foi um tempo especial. Naquele per\u00edodo, era comum chegar at\u00e9 o administrador na mesa ao lado e pedir: \"Me d\u00ea uma virtual\". Em cerca de trinta minutos, a m\u00e1quina j\u00e1 estava com voc\u00ea. Voc\u00ea mesmo se conectava, instalava tudo, e eles direcionavam o tr\u00e1fego para ela.<\/p>\n<p>Hoje em dia isso j\u00e1 n\u00e3o \u00e9 mais poss\u00edvel: \u00e9 preciso implementar monitoramento no servi\u00e7o, registrar logs, cobrir a funcionalidade com testes, solicitar uma virtual ou providenciar algo no Kubernetes, etc. No geral, isso ser\u00e1 melhor, embora mais demorado e trabalhoso.<\/p>\n<h3>Dividir para conquistar. Como est\u00e1 a situa\u00e7\u00e3o com Lua?<\/h3>\n<p>\nHouve um dilema s\u00e9rio: algumas equipes n\u00e3o conseguiam aplicar mudan\u00e7as de forma confi\u00e1vel em um servi\u00e7o com uma quantidade significativa de l\u00f3gica em Lua. Muitas vezes, isso resultava em falhas no servi\u00e7o. <\/p>\n<p>Ou seja, os desenvolvedores preparam alguma mudan\u00e7a. O Tarantool come\u00e7a a realizar a migra\u00e7\u00e3o, enquanto a r\u00e9plica ainda utiliza o c\u00f3digo antigo; algum DDL chega atrav\u00e9s da replica\u00e7\u00e3o, algo mais, e o c\u00f3digo simplesmente quebra porque isso n\u00e3o foi considerado. Como resultado, o procedimento de atualiza\u00e7\u00e3o para os administradores estava detalhado em uma folha A4: parar a replica\u00e7\u00e3o, atualizar isso, reiniciar a replica\u00e7\u00e3o, desligar aqui, atualizar ali. Um pesadelo! <\/p>\n<p>No final das contas, agora, frequentemente tentamos n\u00e3o fazer nada em Lua. Simplesmente usamos iproto (um protocolo bin\u00e1rio para interagir com o servidor), e tudo. Pode ser que faltem conhecimentos aos desenvolvedores, mas, sob essa perspectiva, o sistema \u00e9 complexo.<\/p>\n<p>N\u00e3o seguimos cegamente esse roteiro. Hoje n\u00e3o temos preto ou branco: ou tudo em Lua, ou tudo em Go. J\u00e1 entendemos como podemos combinar para evitar problemas com a migra\u00e7\u00e3o mais tarde.<\/p>\n<p>Onde o Tarantool est\u00e1 presente atualmente?<br \/>\nO Tarantool \u00e9 utilizado no servi\u00e7o de c\u00e1lculo do custo final dos produtos com desconto, conhecido como \"Promotaizer\". Como j\u00e1 mencionado anteriormente, ele est\u00e1 sendo substitu\u00eddo por um novo servi\u00e7o de cat\u00e1logo com pre\u00e7os pr\u00e9-calculados, mas h\u00e1 seis meses todos os c\u00e1lculos eram feitos no \"Promotaizer\". Antes, metade de sua l\u00f3gica foi escrita em Lua. H\u00e1 dois anos, o servi\u00e7o se tornou um reposit\u00f3rio, e a l\u00f3gica foi reescrita em Go, porque a mec\u00e2nica do funcionamento dos descontos mudou um pouco e o servi\u00e7o estava com falta de desempenho. <\/p>\n<p>Um dos servi\u00e7os mais cr\u00edticos \u00e9 o perfil de usu\u00e1rio. Ou seja, todos os usu\u00e1rios da Wildberries s\u00e3o armazenados no Tarantool, que conta com cerca de 50 milh\u00f5es de usu\u00e1rios. Sistema shardizado por ID de usu\u00e1rio, distribu\u00eddo por diversos DCs com integra\u00e7\u00e3o em servi\u00e7os Go. <br \/>\nNo RPS, o \"Promotaizer\" j\u00e1 foi l\u00edder, atingindo at\u00e9 6 mil solicita\u00e7\u00f5es. Em determinado momento, tivemos entre 50 e 60 inst\u00e2ncias. Atualmente, o l\u00edder em RPS s\u00e3o os perfis de usu\u00e1rios, com cerca de 12 mil. Este servi\u00e7o utiliza sharding personalizado com divis\u00e3o por intervalos de IDs de usu\u00e1rios. O servi\u00e7o atende mais de 20 m\u00e1quinas, mas isso \u00e9 excessivo; planejamos reduzir os recursos alocados, pois 4 a 5 m\u00e1quinas s\u00e3o suficientes.<\/p>\n<p>O servi\u00e7o de sess\u00f5es \u00e9 nosso primeiro servi\u00e7o no vshard e no Cartridge. A configura\u00e7\u00e3o do vshard e a atualiza\u00e7\u00e3o do Cartridge demandaram um certo esfor\u00e7o, mas, no final, tudo funcionou.<\/p>\n<p>O servi\u00e7o para exibir diferentes banners no site e no aplicativo m\u00f3vel foi um dos primeiros lan\u00e7ados no Tarantool. Este servi\u00e7o \u00e9 not\u00e1vel porque tem cerca de 6 a 7 anos, ainda est\u00e1 em opera\u00e7\u00e3o e nunca foi reiniciado. Foi aplicada replica\u00e7\u00e3o master-master. Nunca houve falhas.<\/p>\n<p>H\u00e1 um exemplo do uso do Tarantool para a funcionalidade de cat\u00e1logos r\u00e1pidos em sistemas de estoque, para verificar rapidamente as informa\u00e7\u00f5es em alguns casos. Tentamos usar o Redis para isso, mas os dados em mem\u00f3ria ocupavam mais espa\u00e7o do que no Tarantool.<\/p>\n<p>Os servi\u00e7os de lista de espera, assinaturas de clientes, tend\u00eancias atuais de stories e produtos adiados tamb\u00e9m operam com o Tarantool. O \u00faltimo servi\u00e7o ocupa cerca de 120 GB na mem\u00f3ria. \u00c9 o servi\u00e7o mais volumoso dentre os mencionados. <\/p>\n<h3>Conclus\u00e3o<\/h3>\n<p>\nGra\u00e7as aos \u00edndices secund\u00e1rios, em combina\u00e7\u00e3o com key-value e a transacionalidade, Tarantool \u00e9 uma \u00f3tima op\u00e7\u00e3o para arquiteturas baseadas em microsservi\u00e7os. No entanto, encontramos dificuldades ao implementar mudan\u00e7as em servi\u00e7os com muita l\u00f3gica em Lua \u2014 os servi\u00e7os frequentemente paravam de funcionar. N\u00e3o conseguimos superar isso e, com o tempo, chegamos a diferentes combina\u00e7\u00f5es de Lua e Go: sabemos onde utilizar uma linguagem e onde utilizar a outra.<\/p>\n<p><b>O que mais ler sobre o assunto<\/b><\/p>\n<ul>\n<li>Criamos do zero um aplicativo de alto desempenho no 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>Escolha confi\u00e1vel do l\u00edder em 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>Canal do Telegram Tarantool com not\u00edcias sobre o produto <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/tarantool_news\">t.me\/tarantool_news<\/a><\/noindex><\/li>\n<li>Discutir sobre Tarantool no chat da comunidade <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.3 - 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\/pt\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Como parar de se preocupar e come\u00e7ar a viver sem monolito | ProHoster","description":"Todos n\u00f3s gostamos de hist\u00f3rias.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/92806","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=92806"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/92806\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/92807"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=92806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=92806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=92806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}