{"id":38981,"date":"2019-10-31T22:27:10","date_gmt":"2019-10-31T19:27:10","guid":{"rendered":"https:\/\/prohoster.info\/blog\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\/"},"modified":"2019-10-31T22:27:10","modified_gmt":"2019-10-31T19:27:10","slug":"servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","title":{"rendered":"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>O diretor de opera\u00e7\u00f5es do portal Banki.ru, Andrey Nikolsky, falou na confer\u00eancia do ano passado <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">DevOpsDays Moscovo<\/a><\/noindex> sobre servi\u00e7os \u00f3rf\u00e3os: como identificar um \u00f3rf\u00e3o na infraestrutura, quais s\u00e3o os problemas dos servi\u00e7os \u00f3rf\u00e3os, o que fazer com eles, e como proceder se nada funcionar.<\/p>\n<p>Abaixo, voc\u00ea encontrar\u00e1 a vers\u00e3o em texto da apresenta\u00e7\u00e3o. <\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"j9I4oeEXBO8\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/j9I4oeEXBO8\/hqdefault.jpg\" alt=\"Por que no hosting comum a administra\u00e7\u00e3o do PrestaShop \u00e9 lenta, e no seu n\u00e3o \u00e9?\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nOl\u00e1, colegas! Meu nome \u00e9 Andrey, sou respons\u00e1vel pela opera\u00e7\u00e3o na empresa Banki.ru.<\/p>\n<p>Temos grandes servi\u00e7os, s\u00e3o servi\u00e7os monol\u00edticos, h\u00e1 servi\u00e7os no entendimento mais cl\u00e1ssico e tamb\u00e9m servi\u00e7os muito pequenos. Em minha terminologia de trabalho, costumo dizer que, se um servi\u00e7o \u00e9 simples e pequeno, \u00e9 um microservi\u00e7o; se n\u00e3o \u00e9 muito simples e nem pequeno, \u00e9 apenas um servi\u00e7o. <\/p>\n<h3><b>Vantagens dos servi\u00e7os<\/b><\/h3>\n<p>\nVou passar rapidamente pelas vantagens dos servi\u00e7os. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/4c34a3af9125c5869eb7c1650bc3855a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrimeiro \u2014 escalabilidade. Voc\u00ea pode rapidamente fazer algo em um servi\u00e7o e levar para produ\u00e7\u00e3o. Se voc\u00ea recebe tr\u00e1fego, clona o servi\u00e7o. Se mais tr\u00e1fego chega, clona novamente e vive com isso. Isso \u00e9 um bom b\u00f4nus e, na verdade, quando come\u00e7amos, era considerado o mais importante, a raz\u00e3o pela qual estamos fazendo tudo isso.<\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/c536f380ece14e0c873f765b587fb3c3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEm segundo lugar, desenvolvimento isolado, onde voc\u00ea tem v\u00e1rias equipes de desenvolvimento, diferentes desenvolvedores em cada equipe, e cada equipe trabalha em seu pr\u00f3prio servi\u00e7o.<\/p>\n<p>Com as equipes, surgem nuances. Os desenvolvedores s\u00e3o diferentes. E existem, por exemplo, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=VPDJXngp2bM\">pessoas-neve<\/a><\/noindex>. Eu vi isso pela primeira vez com Maxim Dorofeev. \u00c0s vezes, pessoas-neve est\u00e3o em algumas equipes, mas em outras n\u00e3o. Isso torna os diferentes servi\u00e7os utilizados na empresa um pouco desiguais. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/f1e18ab059bd2b975d4c6ff1b6434626.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOlhe para a imagem: este \u00e9 um bom desenvolvedor, ele tem grandes m\u00e3os e pode fazer muita coisa. O principal problema \u00e9 de onde v\u00eam essas m\u00e3os. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/88fdc7266e97be8732f252908329a8f2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOs servi\u00e7os permitem o uso de diferentes linguagens de programa\u00e7\u00e3o, mais adequadas para v\u00e1rias tarefas. Algum servi\u00e7o em Go, algum em Erlang, algum em Ruby, algo em PHP, algo em Python. Em geral, \u00e9 poss\u00edvel se expandir bastante. Aqui tamb\u00e9m h\u00e1 nuances.<\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/98a4b1037066d67e4f16bab934cebac6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA arquitetura orientada a servi\u00e7os \u00e9, acima de tudo, sobre devops. Ou seja, se voc\u00ea n\u00e3o tem automa\u00e7\u00e3o, n\u00e3o tem processo de deployment, se voc\u00ea configura manualmente, suas configura\u00e7\u00f5es podem mudar de inst\u00e2ncia de servi\u00e7o para inst\u00e2ncia, e voc\u00ea precisa entrar l\u00e1 para fazer algo, ent\u00e3o voc\u00ea est\u00e1 no inferno. <\/p>\n<p>Por exemplo, se voc\u00ea tem 20 servi\u00e7os e precisa fazer o deploy manualmente, voc\u00ea tem 20 consoles e ao mesmo tempo pressiona \u2018enter\u2019, como um ninja. Isso n\u00e3o \u00e9 muito bom. <\/p>\n<p>Se voc\u00ea tem um servi\u00e7o ap\u00f3s os testes (se houver testes, claro), e precisa ainda de um ajuste fino para que funcione em produ\u00e7\u00e3o, eu tamb\u00e9m tenho m\u00e1s not\u00edcias para voc\u00ea. <\/p>\n<p>Se voc\u00ea depende de servi\u00e7os espec\u00edficos da Amazon e est\u00e1 trabalhando na R\u00fassia, h\u00e1 dois meses voc\u00ea tamb\u00e9m estava dizendo \u2018Tudo est\u00e1 pegando fogo, estou bem, tudo \u00f3timo\u2019.<\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/474f5f1c3f0ced131df5ee8f30f0aa15.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUsamos o Ansible para automatizar o deployment, Puppet para converg\u00eancia, Bamboo para automatiza\u00e7\u00e3o do deploy e Confluence para descrever tudo isso de alguma forma.<\/p>\n<p>N\u00e3o vou me aprofundar nisso, pois a apresenta\u00e7\u00e3o \u00e9 mais sobre pr\u00e1ticas de intera\u00e7\u00e3o do que sobre implementa\u00e7\u00e3o t\u00e9cnica. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/ab837bed67ee319d72da705bc632e3f3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJ\u00e1 tivemos, por exemplo, problemas onde o Puppet no servidor funciona com Ruby 2, enquanto alguma aplica\u00e7\u00e3o foi escrita para Ruby 1.8, e eles n\u00e3o funcionam juntos. Acontece um erro qualquer. E quando voc\u00ea precisa manter v\u00e1rias vers\u00f5es do Ruby em uma mesma m\u00e1quina, geralmente come\u00e7am os problemas. <\/p>\n<p>Por exemplo, para cada desenvolvedor, fornecemos um ambiente que tem praticamente tudo que temos, todos os servi\u00e7os que podem ser desenvolvidos, para que ele tenha um ambiente isolado onde pode quebrar e construir como quiser. <\/p>\n<p>\u00c0s vezes, \u00e9 necess\u00e1rio um pacote especialmente compilado com suporte para algo espec\u00edfico. Isso \u00e9 bastante rigoroso. Ouvi uma apresenta\u00e7\u00e3o onde a imagem do Docker pesa 45 GB. No Linux, claro, \u00e9 um pouco mais simples, tudo \u00e9 menor, mas ainda assim, n\u00e3o h\u00e1 espa\u00e7o suficiente. <\/p>\n<p>Al\u00e9m disso, h\u00e1 depend\u00eancias conflitantes, quando uma parte do projeto depende de uma vers\u00e3o de biblioteca, e outra parte do projeto depende de outra vers\u00e3o, e as bibliotecas n\u00e3o podem ser instaladas juntas de forma alguma. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/acc4c38c547cd6d0580cf3524532393a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTemos sites e servi\u00e7os em PHP 5.6, estamos envergonhados por isso, mas o que fazer? \u00c9 uma de nossas plataformas. Existem sites e servi\u00e7os em PHP 7, estes s\u00e3o mais numerosos, n\u00e3o nos envergonhamos deles. E cada desenvolvedor tem seu pr\u00f3prio banco de dados, onde ele se diverte programando. <\/p>\n<p>Se voc\u00ea est\u00e1 programando na empresa em uma \u00fanica linguagem, ter tr\u00eas m\u00e1quinas virtuais por desenvolvedor parece normal. Se voc\u00ea tem diferentes linguagens de programa\u00e7\u00e3o, a situa\u00e7\u00e3o piora.<\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/9f5da38456024679ba6a41768466cb82.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVoc\u00ea tem sites e servi\u00e7os aqui, e aqui, depois mais uma plataforma para Go, uma plataforma para Ruby, e algum Redis ao lado. No final, tudo isso se transforma em um grande campo de suporte, onde algo pode quebrar a qualquer momento.<\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/20bde06e0aaceea028fabea09540d2a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPor isso, substitu\u00edmos os recursos da linguagem de programa\u00e7\u00e3o pelo uso de diferentes frameworks, uma vez que os frameworks em PHP s\u00e3o bastante variados, possuem diferentes capacidades, comunidades distintas e suportes diversos. Assim, \u00e9 poss\u00edvel criar servi\u00e7os j\u00e1 com algo pronto para eles. <\/p>\n<h3><b>Cada servi\u00e7o tem sua pr\u00f3pria equipe<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/ff32f7449c831e6dcb2bd9c41fb9c8e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNossa principal vantagem, que se cristalizou ao longo dos anos, \u00e9 que cada servi\u00e7o possui sua pr\u00f3pria equipe. Isso \u00e9 conveniente para grandes projetos, pois economiza tempo com documenta\u00e7\u00e3o e os gerentes conhecem bem seus projetos. <\/p>\n<p>As tarefas de suporte podem ser facilmente delegadas. Por exemplo, se um servi\u00e7o de seguros falhar, a equipe que cuida do seguro imediatamente se junta para consert\u00e1-lo. <\/p>\n<p>Novos recursos s\u00e3o desenvolvidos rapidamente, porque quando voc\u00ea tem um servi\u00e7o at\u00f4mico, \u00e9 poss\u00edvel implementar algo novo de forma \u00e1gil. <\/p>\n<p>E quando voc\u00ea quebra seu servi\u00e7o, o que inevitavelmente acontece, voc\u00ea n\u00e3o afeta outros servi\u00e7os, e os desenvolvedores de outras equipes n\u00e3o v\u00eam at\u00e9 voc\u00ea com paus e dizem: 'Ei, n\u00e3o fa\u00e7a isso'. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/30d99fa39654701437cdf90929d6a45e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo sempre, existem nuances. Temos equipes est\u00e1veis, e os gerentes est\u00e3o firmemente ligados \u00e0s equipes. Existem documentos claros, e os gerentes supervisionam tudo de perto. Cada gerente tem v\u00e1rias equipes sob sua responsabilidade, e h\u00e1 um ponto de compet\u00eancia espec\u00edfico. <\/p>\n<p>Se as equipes s\u00e3o flutuantes (o que tamb\u00e9m acontece \u00e0s vezes), existe um bom m\u00e9todo chamado 'mapa estelar'.<\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/cd18530d30973628f9351757a800dc37.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVoc\u00ea tem uma lista de servi\u00e7os e pessoas. A estrela indica que a pessoa \u00e9 uma especialista naquele servi\u00e7o, enquanto o livro indica que a pessoa est\u00e1 estudando o servi\u00e7o. A tarefa da pessoa \u00e9 trocar o livro pela estrela. E se n\u00e3o houver nada escrito ao lado do servi\u00e7o, come\u00e7am os problemas, sobre os quais falarei em seguida. <\/p>\n<h3><b>Como surgem servi\u00e7os \u00f3rf\u00e3os?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/8ae33d6e940700a5941409b7cedf3e9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO primeiro problema, a primeira maneira de ter um servi\u00e7o \u00f3rf\u00e3o em sua infraestrutura \u00e9 a demiss\u00e3o de pessoas. Algu\u00e9m j\u00e1 passou por isso, quando prazos chegam no neg\u00f3cio antes que as tarefas sejam avaliadas? \u00c0s vezes, os prazos s\u00e3o apertados e simplesmente n\u00e3o h\u00e1 tempo para a documenta\u00e7\u00e3o. \"Precisamos entregar o servi\u00e7o em produ\u00e7\u00e3o, depois escribemos mais.\" <\/p>\n<p>Se a equipe \u00e9 pequena, pode haver apenas um desenvolvedor escrevendo tudo, enquanto os outros apoiam. \"Eu escrevi a arquitetura principal, voc\u00ea pode criar as interfaces.\" Depois, em algum momento, o gerente pode sair. E nesse per\u00edodo, enquanto o gerente saiu e nenhum novo foi designado, os desenvolvedores decidem por conta pr\u00f3pria para onde o servi\u00e7o est\u00e1 indo, o que est\u00e1 acontecendo. E como sabemos (vamos voltar alguns slides), em algumas equipes h\u00e1 pessoas especiais, \u00e0s vezes um desses leads. Ent\u00e3o ele se demite, e obtemos um servi\u00e7o \u00f3rf\u00e3o. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/44741c897bfd9dc04e0a977c1cf08df3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEnquanto isso, as tarefas de suporte e de neg\u00f3cios n\u00e3o desaparecem, elas se acumulam no backlog. Se durante o desenvolvimento do servi\u00e7o houveram algum erro arquitet\u00f4nico, eles tamb\u00e9m se acumulam no backlog. O servi\u00e7o vai lentamente degradando. <\/p>\n<h3><b>Como identificar um \u00f3rf\u00e3o?<\/b> <\/h3>\n<p>\nEssa lista descreve bem a situa\u00e7\u00e3o. Quem se identificou com algo em sua infraestrutura?<\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/b852d070bb6864f48e3a6ae9921a12b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSobre as solu\u00e7\u00f5es documentadas: temos um servi\u00e7o e, no geral, ele funciona, possui um manual de duas p\u00e1ginas sobre como us\u00e1-lo, mas como ele funciona internamente, ningu\u00e9m sabe. <\/p>\n<p>Ou, por exemplo, temos um encurtador de links. No nosso caso, agora temos tr\u00eas encurtadores de links para diferentes fins em diferentes servi\u00e7os. Essas s\u00e3o consequ\u00eancias. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/350a041f21fcd75d9a948d2b9b77cda8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAgora vou ser o capit\u00e3o \u00f3bvio. O que deve ser feito? Primeiro, o servi\u00e7o deve ser passado para outro gerente, outra equipe. Se seu l\u00edder ainda n\u00e3o se demitiu, voc\u00ea deve incluir algu\u00e9m que entenda um pouco do servi\u00e7o na nova equipe quando perceber que ele est\u00e1 se tornando um \u00f3rf\u00e3o. <\/p>\n<p>A principal coisa: voc\u00ea deve ter procedimentos de transfer\u00eancia escritos claramente. No nosso caso, geralmente sou eu que supervisiono isso, porque preciso que tudo funcione. Para os gerentes, \u00e9 importante que seja entregue rapidamente, e o que acontecer depois j\u00e1 n\u00e3o \u00e9 t\u00e3o relevante para eles. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/87b9d86c2c795f5d71db1489cab200a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA pr\u00f3xima maneira de criar um servi\u00e7o sem dono \u00e9: 'Vamos terceirizar, assim ser\u00e1 mais r\u00e1pido, e depois passaremos para a equipe'. \u00c9 claro que todos t\u00eam algum planejamento na equipe, uma fila de espera. Muitas vezes, o cliente empresarial pensa que os terceirizados far\u00e3o exatamente como o departamento t\u00e9cnico da empresa. No entanto, seus motivadores s\u00e3o diferentes. Na terceiriza\u00e7\u00e3o, podemos encontrar solu\u00e7\u00f5es tecnol\u00f3gicas estranhas e algoritmos incomuns.<\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/b4208ccb134cbc694ea4993ec2751ec5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPor exemplo, tivemos um servi\u00e7o onde o Sphinx estava em lugares inesperados. Vou contar mais sobre o que tivemos que fazer mais adiante. <\/p>\n<p>Os terceirizados costumam ter frameworks pr\u00f3prios. \u00c9 simplesmente PHP puro com c\u00f3pia e colagem de projetos anteriores, onde voc\u00ea pode encontrar de tudo. H\u00e1 grandes gambiarras nos scripts de deploy, quando voc\u00ea precisa modificar algumas linhas em um arquivo usando scripts Bash complexos, e esses scripts de deploy s\u00e3o chamados por algum terceiro. No final, voc\u00ea altera o sistema de deploy, escolhe outra coisa e, de repente, seu servi\u00e7o para de funcionar. Porque precis\u00e1vamos colocar mais 8 links entre diferentes pastas. Ou ocorre que mil registros funcionam, mas cem mil j\u00e1 n\u00e3o funcionam. <\/p>\n<p>Continuarei no comando. A aceita\u00e7\u00e3o de um servi\u00e7o terceirizado \u00e9 um procedimento obrigat\u00f3rio. Algu\u00e9m j\u00e1 passou pela situa\u00e7\u00e3o em que um servi\u00e7o terceirizado chega, mas n\u00e3o \u00e9 aceito? Isso n\u00e3o \u00e9 t\u00e3o comum quanto um servi\u00e7o sem dono, mas ainda assim. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/92ef67a1bb714cdfb820efe432d0303b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO servi\u00e7o precisa ser verificado, \u00e9 necess\u00e1rio revisar o servi\u00e7o e mudar as senhas. Tivemos um caso em que nos foi apresentado um servi\u00e7o onde a administra\u00e7\u00e3o dizia \"if login == 'admin' &amp;&amp; password == 'admin'...\", escrito diretamente no c\u00f3digo. N\u00f3s ficamos aqui pensando, e isso est\u00e1 sendo feito por pessoas em 2018?<\/p>\n<p>Testar o volume de armazenamento tamb\u00e9m \u00e9 essencial. \u00c9 necess\u00e1rio observar o que acontecer\u00e1 com cem mil registros antes de voc\u00ea colocar esse servi\u00e7o em produ\u00e7\u00e3o. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/3fabdc20049892cee7636c30e595881d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e3o deve ser vergonhoso enviar um servi\u00e7o para rework. Quando voc\u00ea diz: 'N\u00e3o aceitaremos esse servi\u00e7o, temos 20 tarefas, fa\u00e7am-nas, ent\u00e3o aceitaremos', isso \u00e9 normal. A consci\u00eancia n\u00e3o deve pesar porque voc\u00ea colocar\u00e1 o gerente em uma situa\u00e7\u00e3o dif\u00edcil ou porque a empresa gastar\u00e1 dinheiro. Depois, a empresa gastar\u00e1 ainda mais.<\/p>\n<p>Tivemos um caso em que decidimos realizar um projeto piloto terceirizado.<\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/a5b25638e51c4eabe9d6a6971f08fa6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEle foi entregue a tempo, e esse foi o \u00fanico crit\u00e9rio de qualidade. Portanto, fizeram mais um projeto piloto, j\u00e1 nem totalmente piloto. Esses servi\u00e7os foram aceitos, de maneira administrativa disseram, aqui est\u00e1 o seu c\u00f3digo, aqui est\u00e1 a equipe, aqui est\u00e1 o seu gerente. Os servi\u00e7os realmente come\u00e7aram a gerar lucro. No entanto, na pr\u00e1tica, eles ainda permanecem \u00f3rf\u00e3os, ningu\u00e9m entende como funcionam, e os gerentes se afastam de suas tarefas. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/29ac8ab670df5d2c92dc7940d0a74e24.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nH\u00e1 tamb\u00e9m um conceito excelente \u2014 desenvolvimento clandestino. Quando algum departamento, normalmente o de marketing, quer testar uma hip\u00f3tese e encomenda o servi\u00e7o inteiro por outsourcing. Come\u00e7a a receber tr\u00e1fego, eles fecham documentos, assinam contratos com o prestador, entra em opera\u00e7\u00e3o e dizem: \u2018Pessoal, temos um servi\u00e7o aqui, j\u00e1 est\u00e1 recebendo tr\u00e1fego, ele nos traz dinheiro, vamos aceit\u00e1-lo\u2019. N\u00f3s ficamos: \u2018Opa, como assim?\u2019.<\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/1fa0187e5db9bed7af0c97ac8500567f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE mais uma maneira de obter um servi\u00e7o \u00f3rf\u00e3o: quando alguma equipe de repente fica sobrecarregada, a ger\u00eancia diz: \u2018Vamos passar o servi\u00e7o dessa equipe para outra equipe, que est\u00e1 com menos carga de trabalho\u2019. E depois passamos para uma terceira equipe e mudamos o gerente. E no final, temos novamente um \u00f3rf\u00e3o.<\/p>\n<h3><b>Qual \u00e9 o problema com os \u00f3rf\u00e3os?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/009170e7989a78e8bd9f5b7b364e358c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuem n\u00e3o sabe, este \u00e9 o navio de guerra Wasa, lan\u00e7ado na Su\u00e9cia, famoso por ter afundado cinco minutos ap\u00f3s ser botado na \u00e1gua. E o rei da Su\u00e9cia, ali\u00e1s, n\u00e3o puniu ningu\u00e9m por isso. Foi constru\u00eddo por duas gera\u00e7\u00f5es de engenheiros que n\u00e3o sabiam construir tais navios. Um efeito previs\u00edvel.<\/p>\n<p>O navio poderia ter afundado, ali\u00e1s, de forma muito pior, por exemplo, quando o rei j\u00e1 estivesse a bordo indo para algum lugar em uma tempestade. Mas assim, afundou logo, de acordo com o \u00e1gil isso \u00e9 bom \u2014 falhar cedo. <\/p>\n<p>Se falhamos cedo, geralmente n\u00e3o h\u00e1 problemas. Por exemplo, durante a aceita\u00e7\u00e3o, foi enviado para melhorias. Mas se falhamos j\u00e1 na produ\u00e7\u00e3o, quando o dinheiro foi investido, podem haver problemas. Consequ\u00eancias, como s\u00e3o chamadas nos neg\u00f3cios.<\/p>\n<p>Quais s\u00e3o os perigos dos servi\u00e7os \u00f3rf\u00e3os:<\/p>\n<ul>\n<li>O servi\u00e7o pode quebrar inesperadamente. <\/li>\n<li>O servi\u00e7o demora a ser consertado ou n\u00e3o \u00e9 consertado de forma alguma. <\/li>\n<li>Problemas de seguran\u00e7a. <\/li>\n<li>Problemas com melhorias e atualiza\u00e7\u00f5es. <\/li>\n<li>Se um servi\u00e7o importante quebra, a reputa\u00e7\u00e3o da empresa sofre. <\/li>\n<\/ul>\n<p><\/p>\n<h3><b>O que fazer com os servi\u00e7os \u00f3rf\u00e3os?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/094444a042ccf12bf4c9e166c3fffe47.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDevo repetir que \u00e9 isso que se deve fazer. Primeiro, deve haver documenta\u00e7\u00e3o. Sete anos no Banki.ru me ensinaram que os testers n\u00e3o devem acreditar no que os desenvolvedores dizem e que a opera\u00e7\u00e3o n\u00e3o deve confiar na palavra de ningu\u00e9m. \u00c9 preciso verificar. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/23d652f96e93eb52d9172b103121fe54.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEm segundo lugar, \u00e9 necess\u00e1rio escrever esquemas de intera\u00e7\u00e3o, porque pode acontecer que os servi\u00e7os, que n\u00e3o foram muito bem aceitos, cont\u00eam depend\u00eancias das quais ningu\u00e9m falou. Por exemplo, os desenvolvedores conectaram o servi\u00e7o \u00e0 sua chave de algum servi\u00e7o como Yandex.Maps ou Dadata. Seu limite gratuito acabou, tudo quebrou e voc\u00ea n\u00e3o sabe o que aconteceu. Todas essas armadilhas devem ser descritas: o servi\u00e7o utiliza Dadata, Sms, algo mais.<\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/b2770a07cf265ad8a3890b2cb2f62263.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEm terceiro lugar, o trabalho com a d\u00edvida t\u00e9cnica. Quando voc\u00ea faz alguns improvisos ou aceita um servi\u00e7o e diz que algo precisa ser feito, deve-se acompanhar para garantir que seja feito. Porque depois pode acontecer que um pequeno problema n\u00e3o seja t\u00e3o pequeno e voc\u00ea acabe caindo nele.<\/p>\n<p>Tivemos uma hist\u00f3ria sobre tarefas de arquitetura relacionada ao Sphinx. Em um dos servi\u00e7os, o Sphinx era usado para inserir listas. Apenas uma lista com pagina\u00e7\u00e3o, mas ao mesmo tempo ela era reindexada toda noite. Era composta por dois \u00edndices: um indexado \u00e0 noite e um pequeno \u00edndice que era acoplado a ele. Todo dia, com 50% de chance, ou funcionava ou n\u00e3o, ao fazer a atualiza\u00e7\u00e3o o \u00edndice quebrava e as not\u00edcias paravam de ser atualizadas na p\u00e1gina principal. No come\u00e7o, isso levava 5 minutos, enquanto o \u00edndice era reindexado, depois cresceu, e em algum momento come\u00e7ou a levar 40 minutos. Quando eliminamos isso, respiramos aliviados, porque ficou claro que, se continuasse assim, ter\u00edamos um \u00edndice sendo reindexado durante todo o hor\u00e1rio de trabalho. Isso seria um fracasso para nosso portal, oito horas sem not\u00edcias \u2014 tudo, o neg\u00f3cio parou.<\/p>\n<h3><b>Plano de trabalho com o servi\u00e7o \u00f3rf\u00e3o<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/f072ec872d59de058faf1994ac39f161.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa verdade, \u00e9 muito dif\u00edcil fazer isso, porque DevOps \u00e9 sobre comunica\u00e7\u00e3o. Quero ter boas rela\u00e7\u00f5es com meus colegas, mas quando voc\u00ea bate com regulamentos na cabe\u00e7a dos colegas e gerentes, eles podem ter sentimentos contradit\u00f3rios em rela\u00e7\u00e3o \u00e0s pessoas que fazem isso. <\/p>\n<p>Al\u00e9m de todos esses pontos, h\u00e1 uma coisa importante: para cada servi\u00e7o espec\u00edfico, para cada parte do processo de implanta\u00e7\u00e3o, devem haver pessoas espec\u00edficas respons\u00e1veis. Quando n\u00e3o h\u00e1 pessoas e voc\u00ea precisa envolver outras pessoas, estudar tudo isso, fica dif\u00edcil.<\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/28e7372012d5089d3ac1be3d7dc97e03.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe tudo isso n\u00e3o ajudou, e o seu servi\u00e7o \u00f3rf\u00e3o ainda \u00e9 um \u00f3rf\u00e3o, ningu\u00e9m quer assumir, a documenta\u00e7\u00e3o n\u00e3o \u00e9 escrita e a equipe convocada para esse servi\u00e7o se recusa a fazer algo, h\u00e1 uma maneira simples \u2014 refazer tudo. <\/p>\n<p>Ou seja, voc\u00ea pega os requisitos do servi\u00e7o novamente e escreve um novo servi\u00e7o, melhor, em uma plataforma superior, sem solu\u00e7\u00f5es tecnol\u00f3gicas estranhas. E migra para ele em produ\u00e7\u00e3o. <\/p>\n<p><img decoding=\"async\" alt=\"Servi\u00e7os \u00f3rf\u00e3os: o lado oculto da arquitetura (micro)servi\u00e7os\" src=\"\/wp-content\/uploads\/2019\/10\/63d0bf7d9ac1e5c5b00b67b519e228a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTivemos uma situa\u00e7\u00e3o em que pegamos um servi\u00e7o em Yii 1 e percebemos que n\u00e3o pod\u00edamos mais desenvolv\u00ea-lo, pois n\u00e3o t\u00ednhamos desenvolvedores que soubessem programar bem em Yii 1. Todos os desenvolvedores eram proficientes em Symfony 3. O que fazer? Reservamos tempo, formamos uma equipe, designamos um gerente, reescrevemos o projeto e transferimos o tr\u00e1fego suavemente. <\/p>\n<p>Depois disso, o antigo servi\u00e7o pode ser eliminado. Este \u00e9 meu procedimento favorito, quando precisamos limpar um servi\u00e7o do sistema de gerenciamento de configura\u00e7\u00f5es e depois verificar se todas as inst\u00e2ncias em produ\u00e7\u00e3o foram desativadas, para que n\u00e3o restem vest\u00edgios para os desenvolvedores. O reposit\u00f3rio no Git permanece.<\/p>\n<p>Era tudo o que eu queria compartilhar, estou pronto para discutir, \u00e9 um tema pol\u00eamico, muitos t\u00eam suas opini\u00f5es. <\/p>\n<p><b>Nos slides, falamos sobre unificar linguagens. Um exemplo foi o redimensionamento de imagens. Mas \u00e9 realmente necess\u00e1rio padronizar para uma \u00fanica linguagem? Porque o redimensionamento de imagens em PHP, realmente poderia ter sido feito em Golang.<\/b><\/p>\n<p>Na verdade, isso n\u00e3o \u00e9 obrigat\u00f3rio, assim como todas as pr\u00e1ticas. Pode ser que, em alguns casos, at\u00e9 seja indesej\u00e1vel. Mas \u00e9 preciso entender que se na sua empresa h\u00e1 50 pessoas no departamento t\u00e9cnico, das quais 45 s\u00e3o programadores PHP, mais 3 s\u00e3o devops que manjam de Python, Ansible, Puppet e coisas desse tipo, e apenas um deles desenvolve um servi\u00e7o em Go para redimensionar imagens, ent\u00e3o quando ele sai, a expertise vai junto. Al\u00e9m disso, voc\u00ea precisar\u00e1 procurar um desenvolvedor no mercado que conhe\u00e7a essa linguagem, especialmente se for algo raro. Ou seja, do ponto de vista organizacional, isso \u00e9 problem\u00e1tico. Do ponto de vista do devops, voc\u00ea n\u00e3o precisar\u00e1 apenas clonar um conjunto pronto de playbooks que voc\u00ea usa para implantar servi\u00e7os, mas ter\u00e1 que escrev\u00ea-los do zero. <\/p>\n<p>Atualmente, estamos desenvolvendo um servi\u00e7o em Node.js, e isso ser\u00e1 uma plataforma adjacente para cada desenvolvedor com uma linguagem separada. Mas pensamos e decidimos que vale a pena. Ou seja, a quest\u00e3o \u00e9 realmente sentar e refletir sobre isso.<\/p>\n<p><b>Como voc\u00ea monitora seus servi\u00e7os? Como coleta e rastreia logs?<\/b><\/p>\n<p>N\u00f3s coletamos logs no Elasticsearch e os armazenamos no Kibana, e dependendo se \u00e9 um ambiente de produ\u00e7\u00e3o ou de teste, utilizamos coletores diferentes. Em alguns lugares, usamos Lumberjack, em outros, n\u00e3o lembro mais. E tamb\u00e9m h\u00e1 certos lugares em servi\u00e7os espec\u00edficos onde colocamos Telegraf e enviamos os dados para outro lugar separado. <\/p>\n<p><b>Como conviver com Puppet e Ansible em um mesmo ambiente?<\/b><\/p>\n<p>Na verdade, temos atualmente dois ambientes, um com Puppet, outro com Ansible. Estamos trabalhando para hibridiz\u00e1-los. Ansible \u00e9 um bom ambiente para a configura\u00e7\u00e3o inicial, Puppet \u00e9 uma solu\u00e7\u00e3o ruim para configura\u00e7\u00e3o inicial, pois requer trabalho manual diretamente na plataforma, e Puppet garante a converg\u00eancia da configura\u00e7\u00e3o. Isso significa que a plataforma se auto-mant\u00e9m atualizada, enquanto para que uma m\u00e1quina gerenciada por Ansible permane\u00e7a atualizada, \u00e9 preciso sempre executar playbooks nela com alguma periodicidade. Essa \u00e9 a diferen\u00e7a. <\/p>\n<p><b>Como voc\u00ea mant\u00e9m a compatibilidade? Voc\u00ea tem configura\u00e7\u00f5es tanto no Ansible quanto no Puppet?<\/b><\/p>\n<p>Esta \u00e9 uma grande dor para n\u00f3s, estamos lidando com a compatibilidade de forma manual e pensando em como migrar tudo isso. O Puppeteer instala pacotes e mant\u00e9m algumas refer\u00eancias, enquanto o Ansible, por exemplo, implementa c\u00f3digo e ajusta as configura\u00e7\u00f5es frescas das aplica\u00e7\u00f5es.<\/p>\n<p><b>Na apresenta\u00e7\u00e3o, falamos sobre diferentes vers\u00f5es do Ruby. Qual \u00e9 a solu\u00e7\u00e3o?<\/b><\/p>\n<p>Enfrentamos isso em um determinado ponto e precisamos manter isso em mente o tempo todo. Simplesmente desativamos a parte que estava rodando a vers\u00e3o do Ruby que n\u00e3o era compat\u00edvel com as aplica\u00e7\u00f5es e a mantivemos separada. <\/p>\n<blockquote><p> Neste ano, a confer\u00eancia <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">DevOpsDays Moscovo<\/a><\/noindex> ocorrer\u00e1 em 7 de dezembro no 'Tecnop\u00f3lis'. At\u00e9 11 de novembro, estamos aceitando propostas para palestras. <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">Escreva para<\/a><\/noindex> n\u00f3s, se voc\u00ea quiser se apresentar.<\/p>\n<p>As inscri\u00e7\u00f5es para os participantes est\u00e3o abertas, junte-se a n\u00f3s! \n<\/p><\/blockquote>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/scienceman_events\/blog\/471146\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 DevOpsDays Moscow \u043f\u0440\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043a\u0430\u043a \u043e\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u0441\u0438\u0440\u043e\u0442\u0443 \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435, \u0447\u0435\u043c \u043f\u043b\u043e\u0445\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b, \u0447\u0442\u043e \u0441 \u043d\u0438\u043c\u0438 \u0434\u0435\u043b\u0430\u0442\u044c, \u0438 \u043a\u0430\u043a \u0431\u044b\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u043a\u043b\u0430\u0434\u0430. \u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043d\u0434\u0440\u0435\u0439, \u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0436\u0443 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0435\u0439 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Banki.ru. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38981","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=\"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\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\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\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\u0421\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (\u043c\u0438\u043a\u0440\u043e)\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\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=\"2019-10-31T19:27:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:27:10+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\udd47Servi\u00e7os \u00f3rf\u00e3os: o lado oposto da arquitetura de (micro)servi\u00e7os | ProHoster","description":"O diretor de opera\u00e7\u00f5es do portal Banki.ru, Andrey Nikolsky, falou na confer\u00eancia do ano passado","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","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\u0421\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (\u043c\u0438\u043a\u0440\u043e)\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b | ProHoster","og:description":"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","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":"2019-10-31T19:27:10+00:00","article:modified_time":"2019-10-31T19:27:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38981","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":"2026-01-24 00:15:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:59:27","updated":"2026-01-24 00:15:21","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\/38981","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=38981"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/38981\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/29246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=38981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=38981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=38981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}