{"id":37586,"date":"2019-10-31T22:18:27","date_gmt":"2019-10-31T19:18:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/infrastructure-as-code-pervoe-znakomstvo\/"},"modified":"2019-10-31T22:18:27","modified_gmt":"2019-10-31T19:18:27","slug":"infrastructure-as-code-pervoe-znakomstvo","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","title":{"rendered":"Infraestrutura como c\u00f3digo: um primeiro contato","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Na nossa empresa, estamos em processo de integra\u00e7\u00e3o da equipe SRE. Eu entrei nessa hist\u00f3ria do ponto de vista do desenvolvimento. Durante o processo, surgiram pensamentos e insights que gostaria de compartilhar com outros desenvolvedores. Neste artigo de reflex\u00e3o, falo sobre o que est\u00e1 acontecendo, como est\u00e1 acontecendo e como todos podem lidar com isso no futuro. <\/p>\n<p><img decoding=\"async\" alt=\"Infraestrutura como c\u00f3digo: um primeiro contato\" src=\"\/wp-content\/uploads\/2019\/08\/d154a2fbbd0dd846c763db178f02702e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Continua\u00e7\u00e3o da s\u00e9rie de artigos inspirados em palestras do nosso evento interno <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/462033\/\">DevForum<\/a><\/noindex><\/b>: <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/463469\/\">1. O Gato de Schr\u00f6dinger sem caixa: o problema do consenso em sistemas distribu\u00eddos.<\/a><\/noindex><br \/>\n2. Infraestrutura como c\u00f3digo. (Voc\u00ea est\u00e1 aqui)<br \/>\n3. Gera\u00e7\u00e3o de contratos Typescript a partir de modelos C#. (Em andamento...)<br \/>\n4. Introdu\u00e7\u00e3o ao algoritmo de consenso Raft. (Em andamento...)<br \/>\n\u2026<\/p><\/blockquote>\n<p>\nDecidimos formar uma equipe SRE, incorporando as ideias do <noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">google sre<\/a><\/noindex>. Reunimos programadores de nossos pr\u00f3prios desenvolvedores e os enviamos para treinamento por alguns meses. <\/p>\n<p>A equipe tinha as seguintes tarefas de aprendizado:<\/p>\n<ul>\n<li>Descrever nossa infraestrutura, que \u00e9 em grande parte na Microsoft Azure, em forma de c\u00f3digo (Terraform e tudo relacionado). <\/li>\n<li>Ensinar os desenvolvedores a trabalhar com infraestrutura. <\/li>\n<li>Preparar os desenvolvedores para os plant\u00f5es.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Introduzimos o conceito de Infraestrutura como c\u00f3digo<\/h2>\n<p>\nNo modelo tradicional (administra\u00e7\u00e3o cl\u00e1ssica), o conhecimento sobre a infraestrutura est\u00e1 em dois lugares:<\/p>\n<ol>\n<li>Ou na forma de conhecimento na mente dos especialistas.<img decoding=\"async\" alt=\"Infraestrutura como c\u00f3digo: um primeiro contato\" src=\"\/wp-content\/uploads\/2019\/08\/2400dea0a90c24b05c275b709bbd2057.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Ou essas informa\u00e7\u00f5es est\u00e3o em algumas m\u00e1quinas, parte das quais os especialistas conhecem. Mas n\u00e3o \u00e9 certo que uma pessoa de fora (caso toda a nossa equipe morra de repente) consiga entender o que e como funciona. Uma m\u00e1quina pode conter muitas informa\u00e7\u00f5es: acessos, cron jobs, discos montados (veja <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mount_(computing)\">disk mounting<\/a><\/noindex>) e uma lista intermin\u00e1vel do que pode estar acontecendo. \u00c9 dif\u00edcil entender o que de fato est\u00e1 ocorrendo.<img decoding=\"async\" alt=\"Infraestrutura como c\u00f3digo: um primeiro contato\" src=\"\/wp-content\/uploads\/2019\/08\/37bafea85a641c48683c35975f67f24d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ol>\n<p>\nEm ambos os casos, ca\u00edmos em uma armadilha, tornando-nos dependentes:<\/p>\n<ul>\n<li>ou de uma pessoa que \u00e9 mortal, sujeita a doen\u00e7as, paix\u00f5es, mudan\u00e7as de humor e simplesmente demiss\u00f5es;<\/li>\n<li>ou de uma m\u00e1quina f\u00edsica que tamb\u00e9m pode falhar, ser roubada, surpreender e causar inconvenientes. <\/li>\n<\/ul>\n<p>\n\u00c9 evidente que a solu\u00e7\u00e3o ideal \u00e9 que tudo deva ser convertido em c\u00f3digo leg\u00edvel por humanos, mantido e bem escrito. <\/p>\n<p>Assim, a infraestrutura como c\u00f3digo (Infrastructure as Code \u2013 IaC) \u00e9 a descri\u00e7\u00e3o de toda a infraestrutura existente na forma de c\u00f3digo, bem como as ferramentas associadas para trabalhar com ela e implementar a infraestrutura real a partir do mesmo.<\/p>\n<p><b class=\"spoiler_title\">Por que traduzir tudo para c\u00f3digo<\/b>As pessoas n\u00e3o s\u00e3o m\u00e1quinas. Elas n\u00e3o conseguem lembrar de tudo. A rea\u00e7\u00e3o de um ser humano e de uma m\u00e1quina \u00e9 diferente. Tudo que \u00e9 automatizado potencialmente funciona mais r\u00e1pido do que tudo que um ser humano faz. O mais importante \u00e9 ter uma \u00fanica fonte de verdade (single source of truth). <\/p>\n<p><b class=\"spoiler_title\">De onde v\u00eam os novos engenheiros de SRE<\/b>Ent\u00e3o, decidimos contratar novos engenheiros de SRE, mas de onde vamos tir\u00e1-los? O livro com as respostas corretas (<noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">Google SRE Book<\/a><\/noindex>) nos diz: dos desenvolvedores. Afinal, eles trabalham com c\u00f3digo e voc\u00ea alcan\u00e7a um estado ideal.<\/p>\n<p>Procuramos muito e por longo tempo no mercado de trabalho fora da nossa empresa. Mas temos que admitir que n\u00e3o encontramos nenhum que atendesse \u00e0s nossas exig\u00eancias. Tivemos que revistar entre os nossos. <\/p>\n<h2>Problemas da Infrastructure as Code<\/h2>\n<p>\nAgora vamos olhar exemplos de como a infraestrutura pode estar embutida no c\u00f3digo. O c\u00f3digo \u00e9 bem escrito, de qualidade, com coment\u00e1rios e recuos. <\/p>\n<p>Exemplo de c\u00f3digo do Terraform.<\/p>\n<p><img decoding=\"async\" alt=\"Infraestrutura como c\u00f3digo: um primeiro contato\" src=\"\/wp-content\/uploads\/2019\/08\/1a0bbca47e88fb12e97c0f270efba177.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExemplo de c\u00f3digo do Ansible.<\/p>\n<p><img decoding=\"async\" alt=\"Infraestrutura como c\u00f3digo: um primeiro contato\" src=\"\/wp-content\/uploads\/2019\/08\/358fad8f5944bca1b97b2d6e37b2ee5e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSenhores, mas se tudo fosse t\u00e3o simples! Estamos no mundo real, e ele sempre est\u00e1 pronto para surpreend\u00ea-lo, apresentando surpresas e problemas. N\u00e3o falta isso aqui tamb\u00e9m.<\/p>\n<p><b>1. O primeiro problema \u00e9 que, na maioria dos casos, IaC \u00e9 algum tipo de DSL.<\/b><\/p>\n<p>E DSL, por sua vez, \u00e9 uma descri\u00e7\u00e3o de estrutura. Mais precisamente, o que voc\u00ea deve ter: Json, Yaml, modifica\u00e7\u00f5es de algumas grandes empresas que criaram seu pr\u00f3prio DSL (o Terraform usa HCL). <\/p>\n<p>O problema \u00e9 que pode n\u00e3o haver coisas t\u00e3o familiares para n\u00f3s como:<\/p>\n<ul>\n<li>vari\u00e1veis;<\/li>\n<li>condi\u00e7\u00f5es;<\/li>\n<li>em algum lugar pode n\u00e3o haver coment\u00e1rios, por exemplo, no Json, que por padr\u00e3o n\u00e3o os permite;<\/li>\n<li>fun\u00e7\u00f5es;<\/li>\n<li>e ainda nem estou falando de coisas de alto n\u00edvel, como classes, heran\u00e7a e tudo mais.<\/li>\n<\/ul>\n<p>\n <b>2. O segundo problema desse c\u00f3digo \u00e9 que, na maioria das vezes, \u00e9 um ambiente heterog\u00eaneo.<\/b>Normalmente voc\u00ea se senta e trabalha com C#, ou seja, com uma \u00fanica linguagem, uma \u00fanica pilha, um \u00fanico ecossistema. Mas aqui voc\u00ea tem uma enorme variedade de tecnologias. <\/p>\n<p>\u00c9 uma situa\u00e7\u00e3o bem real em que um Bash com Python executa um processo que recebe um JSON. Voc\u00ea o analisa, e depois, algum gerador gera mais 30 arquivos. Todas essas vari\u00e1veis de entrada v\u00eam do Azure Key Vault, puxadas por um plugin para o drone.io, escrito em Go, e essas vari\u00e1veis passam por um YAML gerado a partir do template jsonnet. \u00c9 bastante dif\u00edcil ter um c\u00f3digo rigorosamente bem descrito quando voc\u00ea tem um ambiente t\u00e3o diverso. <\/p>\n<p>Desenvolvimento tradicional em uma tarefa \u00fanica \u00e9 feito com uma \u00fanica linguagem. Aqui, por outro lado, trabalhamos com um grande n\u00famero de linguagens. <\/p>\n<p><b>3. O terceiro problema \u00e9 a ferramenta.<\/b>Estamos acostumados a editores incr\u00edveis (Ms Visual Studio, Jetbrains Rider) que fazem tudo por n\u00f3s. E mesmo que cometamos um erro, eles nos avisam que estamos errados. Parece normal e natural. <\/p>\n<p>Mas h\u00e1 por perto o VSCode, que tem alguns plugins que s\u00e3o instalados, mantidos ou n\u00e3o mantidos. Novas vers\u00f5es foram lan\u00e7adas, mas n\u00e3o foram suportadas. A simples transi\u00e7\u00e3o para a implementa\u00e7\u00e3o de uma fun\u00e7\u00e3o (mesmo que j\u00e1 exista) se torna um problema complexo e n\u00e3o trivial. Apenas renomear uma vari\u00e1vel \u00e9 um substituto no projeto que consiste em dezenas de arquivos. Voc\u00ea ter\u00e1 sorte se ele substituir corretamente o que \u00e9 necess\u00e1rio. H\u00e1, claro, algumas op\u00e7\u00f5es de destaque de sintaxe, autocompletar e formata\u00e7\u00e3o (embora eu n\u00e3o tenha conseguido fazer funcionar no Terraform no Windows). <\/p>\n<p>No momento da escrita deste artigo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mauve\/vscode-terraform\">plugin vscode-terraform<\/a><\/noindex> ainda n\u00e3o foi lan\u00e7ado para suportar a vers\u00e3o 0.12, embora ela tenha sido liberada h\u00e1 3 meses.<\/p>\n<h2>\u00c9 hora de esquecer...<\/h2>\n<p><\/p>\n<ol>\n<li>Depura\u00e7\u00e3o.<\/li>\n<li>Ferramenta de refatora\u00e7\u00e3o.<\/li>\n<li>Autocompletar.<\/li>\n<li>Detec\u00e7\u00e3o de erros durante a compila\u00e7\u00e3o.<\/li>\n<\/ol>\n<p>\n\u00c9 engra\u00e7ado, mas isso aumenta o tempo de desenvolvimento e o n\u00famero de erros que inevitavelmente ocorrem. <\/p>\n<p>O pior \u00e9 que somos obrigados a pensar n\u00e3o em como projetar, organizar arquivos em pastas, decompor, tornar o c\u00f3digo manuten\u00edvel e leg\u00edvel, mas em como escrever corretamente esse comando, porque o escrevi de maneira errada. <\/p>\n<p>Como iniciante, voc\u00ea tenta entender o Terraform, e a IDE n\u00e3o ajuda nem um pouco. Quando h\u00e1 documenta\u00e7\u00e3o, voc\u00ea acessa e verifica. Mas se voc\u00ea estivesse aprendendo uma nova linguagem de programa\u00e7\u00e3o, a IDE indicaria que existe esse tipo e que n\u00e3o existe aquele. Pelo menos, no n\u00edvel de int ou string. Isso costuma ser \u00fatil. <\/p>\n<h2>E quanto aos testes?<\/h2>\n<p>\nVoc\u00ea deve estar se perguntando: \"E os testes, senhores programadores?\" Os caras s\u00e9rios testam tudo em produ\u00e7\u00e3o, e isso \u00e9 rigoroso. Aqui est\u00e1 um exemplo de teste unit\u00e1rio para um m\u00f3dulo Terraform do site. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/azure\/terraform\/terratest-in-terraform-modules\">Microsoft<\/a><\/noindex>. <\/p>\n<p><img decoding=\"async\" alt=\"Infraestrutura como c\u00f3digo: um primeiro contato\" src=\"\/wp-content\/uploads\/2019\/08\/b9391409941e14f7e3cf6f8d964a2668.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEles t\u00eam uma boa documenta\u00e7\u00e3o. A Microsoft sempre me agradou pelo seu enfoque em documenta\u00e7\u00e3o e aprendizado. Mas n\u00e3o precisa ser o tio Bob para entender que o c\u00f3digo aqui n\u00e3o \u00e9 perfeito. Observe a valida\u00e7\u00e3o deslocada para a direita. <\/p>\n<p>O problema do teste unit\u00e1rio \u00e9 que podemos verificar a corre\u00e7\u00e3o do JSON de sa\u00edda. Eu coloquei 5 par\u00e2metros e recebi um JSON com 2000 linhas. Posso analisar o que est\u00e1 acontecendo aqui, validar o resultado do teste... <\/p>\n<p>\u00c9 dif\u00edcil analisar JSON em Go. E precisamos escrever em Go, porque o Terraform em Go \u00e9 uma boa pr\u00e1tica testar na linguagem em que voc\u00ea est\u00e1 escrevendo. A organiza\u00e7\u00e3o do c\u00f3digo em si \u00e9 muito fraca. No entanto, esta \u00e9 a melhor biblioteca para testes. <\/p>\n<p>A pr\u00f3pria Microsoft escreve seus m\u00f3dulos testando-os dessa forma. Claro, isso \u00e9 Open Source. Tudo sobre o que estou falando, voc\u00ea pode vir e consertar. Posso me sentar e consertar tudo em uma semana, open-sour\u00e7ar plugins do VS Code, do Terraform, criar um plugin para o Rider. Talvez escrever alguns analisadores, adicionar linters, contribuir para a biblioteca de testes. Posso fazer tudo isso. Mas n\u00e3o \u00e9 nisso que devo me concentrar. <\/p>\n<h2>Melhores pr\u00e1ticas de Infrastructure as Code.<\/h2>\n<p>\nVamos em frente. Se em IaC n\u00e3o h\u00e1 testes, \u00e9 ruim em IDE e ferramentas, pelo menos deve haver as melhores pr\u00e1ticas. Simplesmente fui ao Google Analytics e comparei duas pesquisas: melhores pr\u00e1ticas do Terraform e melhores pr\u00e1ticas do C#. <\/p>\n<p><img decoding=\"async\" alt=\"Infraestrutura como c\u00f3digo: um primeiro contato\" src=\"\/wp-content\/uploads\/2019\/08\/3d0e8cd626596deea99324285321a0ab.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO que vemos? Estat\u00edsticas implac\u00e1veis n\u00e3o s\u00e3o a nosso favor. Em termos de quantidade de material \u2013 \u00e9 o mesmo. No desenvolvimento em C#, estamos simplesmente mergulhados em material, temos pr\u00e1ticas extremamente boas, livros escritos por especialistas, bem como livros escritos por outros especialistas que criticam esses livros. Um mar de documenta\u00e7\u00e3o oficial, artigos, cursos de aprendizado, e agora tamb\u00e9m um desenvolvimento open source.<\/p>\n<p>Quanto \u00e0 pesquisa sobre IaC: aqui voc\u00ea est\u00e1 tentando juntar informa\u00e7\u00f5es de palestras de highload ou HashiConf, da documenta\u00e7\u00e3o oficial e in\u00fameras issues no GitHub. Como voc\u00ea realmente distribui esses m\u00f3dulos, o que fazer com eles? Parece um problema real... H\u00e1 uma comunidade, senhores, onde a cada pergunta voc\u00ea recebe 10 coment\u00e1rios no GitHub. Mas isso n\u00e3o \u00e9 certeza. <\/p>\n<p>Infelizmente, os especialistas est\u00e3o apenas come\u00e7ando a surgir neste momento. Ainda s\u00e3o muito poucos. E a pr\u00f3pria comunidade est\u00e1 em um est\u00e1gio incipiente. <\/p>\n<h2>Para onde tudo isso est\u00e1 indo e o que fazer<\/h2>\n<p>\nPodemos simplesmente desistir e voltar para C#, no mundo do Rider. Mas n\u00e3o. Por que voc\u00ea realmente come\u00e7aria a fazer isso, se n\u00e3o fosse para encontrar uma solu\u00e7\u00e3o? A seguir, apresento minhas conclus\u00f5es subjetivas. Voc\u00ea pode discordar de mim nos coment\u00e1rios, seria interessante. <\/p>\n<p>Pessoalmente, eu aposto em algumas coisas:<\/p>\n<ol>\n<li>O desenvolvimento nesta \u00e1rea est\u00e1 acontecendo muito rapidamente. Apresento um gr\u00e1fico de buscas sobre DevOps.\n<p><img decoding=\"async\" alt=\"Infraestrutura como c\u00f3digo: um primeiro contato\" src=\"\/wp-content\/uploads\/2019\/08\/068276f040f17c84a4c7eb9e11703c5c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPode ser um tema populista, mas o fato de que o setor est\u00e1 crescendo traz alguma esperan\u00e7a. <\/p>\n<p>Se algo est\u00e1 crescendo t\u00e3o rapidamente, certamente aparecer\u00e3o pessoas inteligentes que dir\u00e3o o que fazer e o que n\u00e3o fazer. O aumento da popularidade leva a que, talvez, algu\u00e9m tenha tempo para finalmente acabar de escrever o plugin para jsonnet no vscode, que permitir\u00e1 navegar at\u00e9 a implementa\u00e7\u00e3o da fun\u00e7\u00e3o, ao inv\u00e9s de procur\u00e1-la atrav\u00e9s de ctrl+shift+f. Quando tudo se desenvolve, h\u00e1 mais materiais dispon\u00edveis. O mesmo lan\u00e7amento do livro do Google sobre SRE \u00e9 um \u00f3timo exemplo disso.<\/li>\n<li>Existem metodologias e pr\u00e1ticas desenvolvidas em desenvolvimento convencional que podemos aplicar com sucesso aqui. Sim, existem nuances com testes e ambientes heterog\u00eaneos, ferramentas insuficientes, mas uma enorme quantidade de pr\u00e1ticas foi acumulada que podem ser \u00fateis e ajudar.\n<p>Um exemplo banal: o trabalho colaborativo atrav\u00e9s de pair programming. Isso ajuda muito a entender. Quando voc\u00ea tem um colega ao seu lado, que tamb\u00e9m est\u00e1 tentando entender algo, juntos voc\u00eas compreender\u00e3o melhor.<\/p>\n<p> Compreender como \u00e9 feito o refatoramento ajuda, mesmo em tal situa\u00e7\u00e3o, a realiz\u00e1-lo. Ou seja, voc\u00ea pode n\u00e3o alterar tudo de uma vez, mas modificar a nomenclatura, depois mudar o posicionamento, e talvez destacar uma parte, ah, e aqui faltam coment\u00e1rios. <\/li>\n<\/ol>\n<p><\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>\nApesar de minhas reflex\u00f5es poderem parecer pessimistas, olho para o futuro com esperan\u00e7a e sinceramente espero que n\u00f3s (e voc\u00eas) consigamos.<\/p>\n<blockquote><p>Em seguida, a segunda parte do artigo est\u00e1 sendo preparada. Nela, contarei como tentamos aplicar pr\u00e1ticas de desenvolvimento \u00e1gil para melhorar nosso processo de aprendizado e trabalho com a infraestrutura.<\/p><\/blockquote>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430 SRE-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0437\u0430\u0448\u0451\u043b \u0432\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435-\u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0438 \u044f \u0433\u043e\u0432\u043e\u0440\u044e \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0438 \u043a\u0430\u043a \u0432\u0441\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u0441 \u044d\u0442\u0438\u043c \u0436\u0438\u0442\u044c. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043f\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28211,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37586","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=\"\u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430 SRE-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0437\u0430\u0448\u0451\u043b \u0432\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\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\/infrastructure-as-code-pervoe-znakomstvo\" \/>\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\udd47Infrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430 SRE-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0437\u0430\u0448\u0451\u043b \u0432\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo\" \/>\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:18:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:27+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\udd47Infrastructure as code: primeiro encontro | ProHoster","description":"Estamos passando pelo processo de integra\u00e7\u00e3o da equipe SRE na nossa empresa. Entrei nessa hist\u00f3ria do lado do desenvolvimento. Durante o processo, tive algumas reflex\u00f5es e insights que gostaria de compartilhar com outros desenvolvedores.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","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\udd47Infrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e | ProHoster","og:description":"\u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430 SRE-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0437\u0430\u0448\u0451\u043b \u0432\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","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:18:27+00:00","article:modified_time":"2019-10-31T19:18:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37586","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-23 18:29:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:24:24","updated":"2026-01-23 18:29:19","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\/37586","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=37586"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/37586\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/28211"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=37586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=37586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=37586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}