{"id":33504,"date":"2019-10-31T21:52:58","date_gmt":"2019-10-31T18:52:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom\/"},"modified":"2019-10-31T21:52:58","modified_gmt":"2019-10-31T18:52:58","slug":"rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom","title":{"rendered":"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/2f9db2f057c4bcb3f2e57a484dd30c8c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Criando a primeira cadeia DevOps em cinco passos para iniciantes.<\/em><\/p>\n<p><\/p>\n<p>DevOps se tornou a panaceia para processos de desenvolvimento excessivamente lentos, fragmentados e problem\u00e1ticos. Mas \u00e9 necess\u00e1rio ter conhecimentos m\u00ednimos em DevOps. Aqui, conceitos como cadeia DevOps e como cri\u00e1-la em cinco passos ser\u00e3o abordados. Este n\u00e3o \u00e9 um guia completo, mas apenas um 'esqueleto' que pode ser expandido. Vamos come\u00e7ar com a hist\u00f3ria.<\/p>\n<p><\/p>\n<h3 id=\"moe-znakomstvo-s-devops\">Meu encontro com DevOps<\/h3>\n<p><\/p>\n<p>Uma vez, trabalhei com nuvens na Citi Group e desenvolvi um aplicativo IaaS para gerenciar a infraestrutura de nuvem da Citi, mas sempre estive interessado em como otimizar a cadeia de desenvolvimento e melhorar a cultura entre os desenvolvedores. Greg Lavender, nosso diretor t\u00e9cnico de arquitetura e infraestrutura em nuvem, me recomendou um livro <noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/dp\/B078Y98RG8\/\">Projeto 'F\u00eanix'<\/a><\/noindex>. Ele explica maravilhosamente os princ\u00edpios do DevOps, e l\u00ea-se como um romance.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>A tabela do verso mostra com que frequ\u00eancia as empresas lan\u00e7am novas vers\u00f5es:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/bf\/1e\/2_\/bf1e2_l0g8wnb5nojb1n5ruwlsi.png\"><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/a723283e54f7614b6b92eab78509985d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Como Amazon, Google e Netflix conseguem lan\u00e7ar tanto? \u00c9 simples: eles entenderam como criar uma cadeia DevOps praticamente perfeita.<\/p>\n<p><\/p>\n<p>Na Citi, tudo era completamente diferente at\u00e9 que migramos para DevOps. Naquela \u00e9poca, minha equipe tinha diferentes ambientes, mas a entrega no servidor de desenvolvimento era feita manualmente. Todos os desenvolvedores tinham acesso apenas a um servidor de desenvolvimento baseado no IBM WebSphere Application Server Community Edition. Quando tent\u00e1vamos realizar entregas simultaneamente, o servidor 'ca\u00eda', e t\u00ednhamos que 'negociar dolorosamente' a cada vez. Al\u00e9m disso, t\u00ednhamos uma cobertura de c\u00f3digo de testes insuficiente, um processo manual de entrega trabalhoso e nenhuma possibilidade de rastrear a entrega de c\u00f3digo com base em alguma tarefa ou demanda do cliente.<\/p>\n<p><\/p>\n<p>Foi claro que precis\u00e1vamos agir rapidamente, e encontrei um colega que pensava como eu. Decidimos juntos criar a primeira cadeia DevOps \u2014 ele configurou a m\u00e1quina virtual e o servidor de aplicativos Tomcat, enquanto eu trabalhei no Jenkins, na integra\u00e7\u00e3o com o Atlassian Jira e BitBucket, al\u00e9m da cobertura de c\u00f3digo de testes. O projeto foi um sucesso: automatizamos completamente a cadeia de desenvolvimento, alcan\u00e7amos quase 100% de uptime no servidor de desenvolvimento, conseguimos rastrear e melhorar a cobertura de c\u00f3digo de testes, e o branch do Git poderia ser vinculado \u00e0 entrega e \u00e0 tarefa no Jira. E quase todas as ferramentas que usamos para construir a cadeia DevOps eram de c\u00f3digo aberto.<\/p>\n<p><\/p>\n<p>Na verdade, a cadeia foi simplificada, pois n\u00e3o utilizamos configura\u00e7\u00f5es avan\u00e7adas com Jenkins ou Ansible. Mas conseguimos. Talvez isso seja um reflexo do princ\u00edpio <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Pareto_principle\">Pareto<\/a><\/noindex> (tamb\u00e9m conhecido como a regra 80\/20).<\/p>\n<p><\/p>\n<h3 id=\"kratkoe-opisanie-cepochki-devops-i-cicd\">Descri\u00e7\u00e3o breve da cadeia DevOps e CI\/CD<\/h3>\n<p><\/p>\n<p>Existem v\u00e1rias defini\u00e7\u00f5es para DevOps. Assim como Agile, DevOps abrange diferentes disciplinas. Contudo, a maioria concordaria com a seguinte defini\u00e7\u00e3o: DevOps \u00e9 um m\u00e9todo, ou ciclo de vida, de desenvolvimento de software, cujo princ\u00edpio principal \u00e9 criar uma cultura onde desenvolvedores e outros funcion\u00e1rios est\u00e3o \u201cna mesma sintonia\u201d, o trabalho manual \u00e9 automatizado, cada um se dedica ao que faz melhor, a frequ\u00eancia das entregas aumenta, a produtividade do trabalho cresce e a flexibilidade melhora.<\/p>\n<p><\/p>\n<p>E embora apenas as ferramentas n\u00e3o sejam suficientes para criar um ambiente DevOps, elas s\u00e3o indispens\u00e1veis. A mais importante delas \u00e9 a integra\u00e7\u00e3o cont\u00ednua e a entrega cont\u00ednua (CI\/CD). Na cadeia, cada ambiente tem diferentes etapas (por exemplo, DEV (desenvolvimento), INT (integra\u00e7\u00e3o), TST (testes), QA (controle de qualidade), UAT (testes de aceita\u00e7\u00e3o do usu\u00e1rio), STG (prepara\u00e7\u00e3o), PROD (produ\u00e7\u00e3o)), as tarefas manuais s\u00e3o automatizadas, os desenvolvedores podem produzir c\u00f3digo de qualidade, entreg\u00e1-lo e podem facilmente se reestruturar.<\/p>\n<p><\/p>\n<p>Esta nota descreve como criar uma cadeia DevOps em cinco etapas, conforme mostrado na imagem abaixo, usando ferramentas de c\u00f3digo aberto.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/da\/zq\/qo\/dazqqoyxn3vv-o6p9crpsm9m_eu.jpeg\"><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/da2a6d8ed039f0b8e1ea8e1ba562696d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Vamos ao que interessa.<\/p>\n<p><\/p>\n<h3 id=\"shag-1-platforma-cicd\">Passo 1: Plataforma CI\/CD<\/h3>\n<p><\/p>\n<p>Primeiramente, voc\u00ea precisa de uma ferramenta CI\/CD. Jenkins \u00e9 uma ferramenta de CI\/CD de c\u00f3digo aberto escrita em Java, licenciada sob MIT, que iniciou a populariza\u00e7\u00e3o do movimento DevOps e que se tornou de fato o padr\u00e3o para CICD.<\/p>\n<p><\/p>\n<p>E o que \u00e9 Jenkins? Imagine ter um controle remoto m\u00e1gico para diversos servi\u00e7os e ferramentas. A ferramenta CI\/CD, como o Jenkins, \u00e9 in\u00fatil sozinha, mas com as diferentes ferramentas e servi\u00e7os, ela se torna onipotente.<\/p>\n<p><\/p>\n<p>Al\u00e9m do Jenkins, h\u00e1 muitas outras ferramentas abertas, sinta-se \u00e0 vontade para escolher qualquer uma. <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/fb\/ov\/dd\/fbovdd2kb_e8jkj1atm1ycuw3so.png\"><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/2bbe6af719b90da0eb0d367aae66d779.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Veja como \u00e9 o processo DevOps com uma ferramenta CI\/CD<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/es\/-3\/dj\/es-3djmmligdmtcuvicigopzt8e.jpeg\"><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/2410013c9e6030596a59f3ed7ae3a7e7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Voc\u00ea tem uma ferramenta CI\/CD no localhost, mas ainda n\u00e3o tem muito que fazer. Vamos para o pr\u00f3ximo passo.<\/p>\n<p><\/p>\n<h3 id=\"shag-2-upravlenie-versiyami\">Passo 2: controle de vers\u00f5es<\/h3>\n<p><\/p>\n<p>A melhor (e provavelmente a maneira mais simples) de verificar a m\u00e1gica da ferramenta CI\/CD \u00e9 integr\u00e1-la com uma ferramenta de controle de vers\u00e3o (source control management, SCM). Por que precisamos de controle de vers\u00e3o? Suponha que voc\u00ea esteja desenvolvendo um aplicativo. Voc\u00ea o escreve em Java, Python, C++, Go, Ruby, JavaScript ou em qualquer outra linguagem, de que h\u00e1 muitas op\u00e7\u00f5es. O que voc\u00ea escreve \u00e9 chamado de c\u00f3digo-fonte. No in\u00edcio, especialmente se voc\u00ea estiver trabalhando sozinho, pode armazenar tudo em um diret\u00f3rio local. Mas \u00e0 medida que o projeto cresce e mais pessoas se juntam, voc\u00ea precisa de uma maneira de compartilhar as altera\u00e7\u00f5es no c\u00f3digo, evitando conflitos ao mesclar mudan\u00e7as. E tamb\u00e9m precisa de um jeito de restaurar vers\u00f5es anteriores sem usar backups e sem recorrer ao m\u00e9todo de copiar e colar arquivos de c\u00f3digo.<\/p>\n<p><\/p>\n<p>E aqui, sem SCM, n\u00e3o d\u00e1 para ir muito longe. O SCM armazena o c\u00f3digo em reposit\u00f3rios, gerencia suas vers\u00f5es e coordena-o entre os desenvolvedores.<\/p>\n<p><\/p>\n<p>Existem muitas ferramentas de SCM, mas o padr\u00e3o de fato se tornou, com justi\u00e7a, o Git. Eu recomendo usar esse, mas h\u00e1 outras op\u00e7\u00f5es dispon\u00edveis.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/37555a476c27f7066e5648b9e9e4d90b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Veja como fica o pipeline DevOps ap\u00f3s a adi\u00e7\u00e3o do SCM.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/am\/4o\/39\/am4o39ooera5tweytt3uyh80wlu.jpeg\"><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/040819b00dc608a9131856dd6a7d4a19.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>A ferramenta CI\/CD pode automatizar o upload e download do c\u00f3digo-fonte e a colabora\u00e7\u00e3o em equipe. N\u00e3o \u00e9 mal? Mas como fazer disso um aplicativo funcional, amado por bilh\u00f5es de usu\u00e1rios?<\/p>\n<p><\/p>\n<h3 id=\"shag-3-instrument-avtomatizacii-sborki\">Passo 3: ferramenta de automa\u00e7\u00e3o de build<\/h3>\n<p><\/p>\n<p>Tudo est\u00e1 indo conforme o planejado. Voc\u00ea pode fazer upload do c\u00f3digo e registrar as altera\u00e7\u00f5es no sistema de controle de vers\u00e3o, al\u00e9m de convidar amigos para trabalhar com voc\u00ea. Mas, por enquanto, voc\u00ea n\u00e3o tem um aplicativo. Para que isso se torne um aplicativo web, ele precisa ser compilado e colocado em um pacote de distribui\u00e7\u00e3o ou executado como um arquivo execut\u00e1vel. (Linguagens de programa\u00e7\u00e3o interpretadas, como JavaScript ou PHP, n\u00e3o precisam ser compiladas.)<\/p>\n<p><\/p>\n<p>Utilize uma ferramenta de automa\u00e7\u00e3o de build. Qualquer que seja a ferramenta escolhida, ela ir\u00e1 compilar o c\u00f3digo no formato necess\u00e1rio e automatizar a limpeza, compila\u00e7\u00e3o, teste e entrega. Existem diferentes ferramentas de build dependendo da linguagem, mas as seguintes op\u00e7\u00f5es de c\u00f3digo aberto s\u00e3o frequentemente utilizadas.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/cc6e958a82ac0676429da6c48e66910f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00d3timo! Agora, vamos inserir os arquivos de configura\u00e7\u00e3o da ferramenta de automa\u00e7\u00e3o de build no sistema de controle de vers\u00e3o para que a ferramenta CI\/CD os colete.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/gl\/t1\/ii\/glt1ii73wdg2roq5fus-fzd0ury.jpeg\"><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/bba539d128425e7e3ddacdc6028d3604.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Parece tudo certo. Mas para onde vamos agora com tudo isso?<\/p>\n<p><\/p>\n<h3 id=\"shag-4-server-veb-prilozheniy\">Passo 4: servidor de aplica\u00e7\u00f5es web<\/h3>\n<p><\/p>\n<p>Ent\u00e3o, voc\u00ea tem um arquivo empacotado que pode ser execut\u00e1vel ou distribu\u00eddo. Para que o aplicativo realmente traga benef\u00edcios, ele deve ter algum servi\u00e7o ou interface, mas voc\u00ea precisa de um lugar para hosped\u00e1-los.<\/p>\n<p><\/p>\n<p>Um aplicativo da web pode ser hospedado em um servidor de aplicativos. O servidor de aplicativos fornece um ambiente onde voc\u00ea pode executar a l\u00f3gica de programa\u00e7\u00e3o do pacote, renderizar a interface e abrir servi\u00e7os da web atrav\u00e9s de socket. Voc\u00ea precisa de um servidor HTTP e de alguns outros ambientes (como uma m\u00e1quina virtual, por exemplo) para instalar o servidor de aplicativos. Por enquanto, vamos imaginar que voc\u00ea est\u00e1 lidando com tudo isso no processo (embora eu fale sobre cont\u00eaineres abaixo).<\/p>\n<p><\/p>\n<p>Existem v\u00e1rios servidores de aplicativos de c\u00f3digo aberto.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/v7\/-q\/tq\/v7-qtqzlpp5nvxlqz1oshw4mw1i.png\"><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/7802afe041a9d56c20ddbe2885b5cf37.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>J\u00e1 temos quase uma cadeia de DevOps funcionando. \u00d3timo trabalho!<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/lf\/wm\/rx\/lfwmrx3grlcbwb5s_olj33npn7o.jpeg\"><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/3d1e524b63fecebf4973cc34a40c160d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>No princ\u00edpio, voc\u00ea pode parar aqui, e depois voc\u00ea se vira, mas vale a pena falar sobre a qualidade do c\u00f3digo.<\/p>\n<p><\/p>\n<h3 id=\"shag-5-testovoe-pokrytie\">Passo 5: Cobertura de Testes<\/h3>\n<p><\/p>\n<p>Testar consome muito tempo e esfor\u00e7o, mas \u00e9 melhor encontrar os erros imediatamente e melhorar o c\u00f3digo para agradar os usu\u00e1rios finais. Para isso, existem muitas ferramentas abertas que n\u00e3o apenas testam o c\u00f3digo, mas tamb\u00e9m sugerem como melhor\u00e1-lo. A maioria das ferramentas de CI\/CD pode se integrar a essas ferramentas e automatizar o processo.<\/p>\n<p><\/p>\n<p>Os testes s\u00e3o divididos em duas partes: frameworks de testes para escrever e executar testes, e ferramentas com dicas para melhorar a qualidade do c\u00f3digo.<\/p>\n<p><\/p>\n<h3 id=\"freymvorki-testirovaniya\">Frameworks de Teste<\/h3>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/cu\/4l\/pn\/cu4lpnpdqa7yd9f5zwsxrrlbylg.png\"><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/c17426a30a4f140be87489d2c8b0d0b9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Ferramentas com Dicas de Qualidade<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ab\/g_\/oh\/abg_ohfxhtbprzhcicxos3jx4yg.png\"><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/bc65784b8bf5ccaaeef96a0c6ee4422e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>A maioria dessas ferramentas e frameworks \u00e9 escrita para Java, Python e JavaScript, porque C++ e C# s\u00e3o propriet\u00e1rios (embora o GCC tenha c\u00f3digo-fonte aberto).<\/p>\n<p><\/p>\n<p>As ferramentas de cobertura de testes que aplicamos agora devem fazer o pipeline de DevOps parecer como na imagem no in\u00edcio do guia.<\/p>\n<p><\/p>\n<h2 id=\"dopolnitelnye-shagi\">Passos Adicionais<\/h2>\n<p><\/p>\n<h3 id=\"konteynery\">Cont\u00eaineres<\/h3>\n<p><\/p>\n<p>Como j\u00e1 mencionei, o servidor de aplicativos pode ser hospedado em uma m\u00e1quina virtual ou servidor, mas cont\u00eaineres s\u00e3o mais populares.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/resources\/what-are-linux-containers\">O que s\u00e3o Cont\u00eaineres<\/a><\/noindex>? \u0412\u043a\u0440\u0430\u0442\u0446\u0435, \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0435\u0441\u0442\u0430, \u0447\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0431\u0435\u0437 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c, \u043d\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432\u043c\u0435\u0449\u0430\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0437\u0430\u0442\u0440\u0430\u0442.<\/p>\n<p><\/p>\n<p>Para cont\u00eaineres, geralmente se usa Docker e Kubernetes, embora existam outras op\u00e7\u00f5es.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/6n\/wc\/rc\/6nwcrcuhk9swwjxdddudr1cqpzc.png\"><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/8749b7044102ff7f23f2c970d6939246.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Leia artigos sobre Docker e Kubernetes em <noindex><a rel=\"nofollow\" href=\"http:\/\/opensource.com\/\">Opensource.com<\/a><\/noindex>:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/resources\/what-docker\">O que \u00e9 Docker?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/business\/15\/1\/introduction-docker\">Introdu\u00e7\u00e3o ao Docker<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/resources\/what-is-kubernetes\">O que \u00e9 Kubernetes?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/17\/11\/kubernetes-lightning-talk\">Kubernetes do Zero<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"instrumenty-avtomatizacii-promezhutochnogo-po\">Ferramentas de Automa\u00e7\u00e3o de Middleware<\/h3>\n<p><\/p>\n<p>Nossa cadeia DevOps \u00e9 voltada para a constru\u00e7\u00e3o e entrega colaborativa de aplica\u00e7\u00f5es, mas com ferramentas DevOps \u00e9 poss\u00edvel fazer outras coisas interessantes. Por exemplo, usar ferramentas de \"infraestrutura como c\u00f3digo\" (IaC), que tamb\u00e9m s\u00e3o conhecidas como ferramentas de automa\u00e7\u00e3o de middleware. Estas ferramentas ajudam a automatizar a instala\u00e7\u00e3o, o gerenciamento e outras tarefas para o middleware. Por exemplo, uma ferramenta de automa\u00e7\u00e3o pode pegar aplica\u00e7\u00f5es (servidor de aplica\u00e7\u00f5es da web, banco de dados, ferramentas de monitoramento) com as configura\u00e7\u00f5es corretas e implant\u00e1-las no servidor de aplica\u00e7\u00f5es.<\/p>\n<p><\/p>\n<p>Aqui est\u00e3o algumas op\u00e7\u00f5es de ferramentas de automa\u00e7\u00e3o de middleware de c\u00f3digo aberto:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto\" src=\"\/wp-content\/uploads\/2019\/05\/23bb3259f336a3f0ebf11ab4aa5471ea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Detalhes nos artigos em <noindex><a rel=\"nofollow\" href=\"http:\/\/opensource.com\/\">Opensource.com<\/a><\/noindex>:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/19\/2\/quickstart-guide-ansible\">Guia para come\u00e7ar com Ansible<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/19\/1\/automating-deployment-strategies-ansible\">Estrat\u00e9gias de automa\u00e7\u00e3o de deploy com Ansible<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/18\/12\/configuration-management-tools\">5 melhores ferramentas de gerenciamento de configura\u00e7\u00e3o<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"i-chto-teper\">E agora?<\/h3>\n<p><\/p>\n<p>Isto \u00e9 apenas a ponta do iceberg. A cadeia DevOps pode fazer muito mais. Comece com uma ferramenta CI\/CD e descubra o que mais pode ser automatizado para facilitar seu trabalho. N\u00e3o se esque\u00e7a das <noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/alternatives\/slack\">ferramentas de comunica\u00e7\u00e3o abertas<\/a><\/noindex> para uma colabora\u00e7\u00e3o eficaz.<\/p>\n<p><\/p>\n<p>Aqui est\u00e3o mais alguns bons artigos sobre DevOps para iniciantes:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/resources\/devops\">O que \u00e9 DevOps<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/19\/2\/master-devops-engineer\">5 habilidades de um desenvolvedor DevOps<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/18\/11\/how-non-engineer-got-devops\">DevOps para todos<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/19\/1\/getting-started-predictive-analytics-devops\">Introdu\u00e7\u00e3o \u00e0 an\u00e1lise preditiva em DevOps<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>E tamb\u00e9m \u00e9 poss\u00edvel integrar DevOps com ferramentas abertas para Agile:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/18\/10\/what-agile\">O que \u00e9 Agile?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/19\/2\/steps-agile-developer\">4 passos para dominar o Agile<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/451508\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 DevOps \u0437\u0430 \u043f\u044f\u0442\u044c \u0448\u0430\u0433\u043e\u0432 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432. DevOps \u0441\u0442\u0430\u043b \u043f\u0430\u043d\u0430\u0446\u0435\u0435\u0439 \u0434\u043b\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445, \u0440\u0430\u0437\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041d\u043e \u043d\u0443\u0436\u043d\u044b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0437\u043d\u0430\u043d\u0438\u044f \u0432 DevOps. \u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f, \u043a\u0430\u043a \u0446\u0435\u043f\u043e\u0447\u043a\u0430 DevOps \u0438 \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0435 \u0437\u0430 \u043f\u044f\u0442\u044c \u0448\u0430\u0433\u043e\u0432. \u042d\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u201c\u0440\u044b\u0431\u0430\u201d, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25204,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33504","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=\"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\/rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom\" \/>\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\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0447\u0430\u0439\u043d\u0438\u043a\u043e\u0432: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0446\u0435\u043f\u043e\u0447\u0435\u043a DevOps \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom\" \/>\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-31T18:52:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:52:58+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\udd47Guia para iniciantes: criando cadeias DevOps com ferramentas de c\u00f3digo aberto | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom","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\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0447\u0430\u0439\u043d\u0438\u043a\u043e\u0432: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0446\u0435\u043f\u043e\u0447\u0435\u043a DevOps \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c | ProHoster","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom","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-31T18:52:58+00:00","article:modified_time":"2019-10-31T18:52:58+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33504","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-21 15:33:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:39:23","updated":"2026-01-21 15:33: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\/33504","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=33504"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/33504\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/25204"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=33504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=33504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=33504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}