{"id":1189,"date":"2024-07-26T22:30:00","date_gmt":"2024-07-27T01:30:00","guid":{"rendered":"https:\/\/kangaroo.host\/blog\/o-que-e-devops\/"},"modified":"2024-11-01T23:08:40","modified_gmt":"2024-11-02T02:08:40","slug":"o-que-e-devops","status":"publish","type":"post","link":"https:\/\/kangaroo.host\/blog\/o-que-e-devops\/","title":{"rendered":"O que \u00e9 DevOps?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ol\u00e1 de novo, Kangaroozinho! O DevOps \u00e9 um conceito n\u00e3o muito recente, mas ainda assim pouco popular por quem n\u00e3o \u00e9 t\u00e3o participante das bolhas de desenvolvimento. Esse conceito \u00e9 muito importante e muito presente na rotina de todos os projetos, mesmo que, em alguma medida, seja despercebido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hoje, voc\u00ea vai entender um pouco mais sobre o que \u00e9 essa metodologia (tamb\u00e9m muito chamada como uma cultura) e como ela pode j\u00e1 estar presente em seu projeto, mesmo de forma discreta, e como ela pode se tornar algo ainda mais fundamental para tornar seus softwares mais confi\u00e1veis.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sum\u00e1rio<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>O que \u00e9?<\/li>\n\n\n\n<li>O que faz?<\/li>\n\n\n\n<li>Principais tecnologias<\/li>\n\n\n\n<li>Conclus\u00e3o<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">O que \u00e9 DevOps?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/kangaroo.host\/blog\/wp-content\/uploads\/2024\/07\/O-que-e-DevOps.jpg\" alt=\"O que \u00e9 DevOps\" class=\"wp-image-8931\"\/><figcaption class=\"wp-element-caption\">Fonte: Reposit\u00f3rio de imagens<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">O DevOps \u00e9 um acr\u00f4nimo, vindo de Development (desenvolvimento) + Operations (opera\u00e7\u00f5es), ou seja, uma intersec\u00e7\u00e3o entre as equipes de desenvolvimento e de infraestrutura\/sistemas. Para entendermos um pouco melhor, \u00e9 necess\u00e1rio relembrar o que cada uma dessas equipes faz em um projeto, e ent\u00e3o poderemos entender porqu\u00ea o DevOps surge como uma solu\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uma equipe de desenvolvimento \u00e9 focada na manuten\u00e7\u00e3o e inova\u00e7\u00e3o de um software, implementando ajustes e novas funcionalidades ao projeto, fazendo com que ele sempre evolua, implementando novas vers\u00f5es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em contrapartida, as equipes de opera\u00e7\u00f5es\/infraestrutura focam na estabilidade do projeto, garantindo que o que est\u00e1 no ar mantenha seu funcionamento da forma mais est\u00e1vel quanto poss\u00edvel, e cada nova atualiza\u00e7\u00e3o pode apresentar um risco em potencial, com a possibilidade da chegada de bugs ou brechas de seguran\u00e7a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Agora que entendemos melhor a responsabilidade de cada equipe, podemos ver que existe um conflito no que cada uma quer. Enquanto uma visa inova\u00e7\u00e3o, para a outra essa inova\u00e7\u00e3o pode acabar trazendo eventuais problemas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por isso, o DevOps se mostra uma proposta para resolver esse conflito, criando uma ponte de conversa\u00e7\u00e3o e aproxima\u00e7\u00e3o entre essas duas equipes t\u00e3o dinstintas, garantindo que tanto o desenvolvimento do projeto seja feito em condi\u00e7\u00f5es ideais para que o deploy seja feito com seguran\u00e7a e preservando a estabilidade para seguir para o ambiente de produ\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O que o DevOps faz?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/kangaroo.host\/blog\/wp-content\/uploads\/2024\/07\/O-que-faz-o-DevOps-CI-DC-IAC.png\" alt=\"O que faz o DevOps CI DC IAC\" class=\"wp-image-8932\"\/><figcaption class=\"wp-element-caption\">Imagem gerada por IA<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Como mencionamos acima, a equipe de DevOps tem a responsabilidade de assegurar a qualidade de estabilidade do que \u00e9 implementado em produ\u00e7\u00e3o (deploy), mantendo um padr\u00e3o seguro para isso. Dessa forma, essas equipes est\u00e3o normalmente respons\u00e1veis por criar diversos tipos de automa\u00e7\u00e3o que gerenciem as implementa\u00e7\u00f5es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para as quest\u00f5es de desenvolvimento, \u00e9 encorajado o uso de ambientes controlados que sejam o mais parecidos o poss\u00edvel com os ambientes de produ\u00e7\u00e3o, muitas vezes adotando sistemas de containers que usem os mesmos sistemas, bibliotecas e arquiteturas que o ambiente final onde ser\u00e1 feito o deploy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O processo de desenvolvimento nos leva ao termo muito empregado de Continuous Integration (integra\u00e7\u00e3o cont\u00ednua), ao adotar a pr\u00e1tica de reposit\u00f3rios onde uma equipe pode trabalhar junta no projeto, com o c\u00f3digo produzindo por cada membro sendo integrado a esse reposit\u00f3rio compartilhado entre o time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esse mesmo reposit\u00f3rio normalmente \u00e9 monitorado com criados pipelines de integra\u00e7\u00e3o, com a\u00e7\u00f5es que realizam diversos testes automatizados para validar se o software est\u00e1 suficientemente est\u00e1vel para ser implementado, conferindo se os recursos essenciais est\u00e3o respondendo como o esperado e, caso haja algum erro no projeto, ele pode ser identificado de forma muito mais r\u00e1pida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sendo o par do CI, temos o CD (continuous delivery), que visa a entrega cont\u00ednua desse software, ou seja, que esse software seja implementado automaticamente conforme novas vers\u00f5es s\u00e3o disponibilidazas atrav\u00e9s do CI. Isso \u00e9 feito por meio de mais testes feitos pelos pipelines de entrega, que ajudam a garantir que o deploy das novas vers\u00f5es ser\u00e3o seguros e est\u00e3o funcionais para irem de fato para o ambiente de produ\u00e7\u00e3o, gerando uma nova camada de filtragem para evitar erros que possam comprometer o projeto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Com todos os testes bem sucedidos, finalmente o software pode efetivamente ser implementado, onde ent\u00e3o \u00e9 constantemente monitorado e em caso de erros \u00e9 poss\u00edvel tanto acionar as equipes de desenvolvimento quanto retornar o software a uma vers\u00e3o anterior de forma mais f\u00e1cil.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vale destaque ainda ao IaC (Infraestructure as a Code), do ingl\u00eas para infraestrutura como c\u00f3digo, onde as equipes DevOps criam tamb\u00e9m automa\u00e7\u00f5es para a cria\u00e7\u00e3o dos ambientes de homologa\u00e7\u00e3o\/produ\u00e7\u00e3o atrav\u00e9s de scripts, que s\u00e3o capazes de via API conectar aos DataCenters para criar o servidor e definir toda a sua capacidade de processamento, assim como instalar e configurar os recursos que ele precisar\u00e1 para abrigar o software desenvolvido. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso, claro, \u00e9 \u00fatil tanto para aspectos de qualidade de desenvolvimento quanto para a escalabilidade, permitindo adicionais mais servidores de forma totalmente din\u00e2mica e autom\u00e1tica conforme a necessidade de crescimento, garantindo tamb\u00e9m que o software seja entregue nele sempre que estiver pronto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Principais ferramentas e tecnologias<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Como pudemos ver, boa parte do trabalho da equipe DevOps \u00e9 criar automa\u00e7\u00f5es que visam a melhoria da qualidade do c\u00f3digo e de sua implementa\u00e7\u00e3o, atrav\u00e9s do CI\/CD, IaC e monitoramento dos recursos que j\u00e1 est\u00e3o no ar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Durante as etapas de desenvolvimento, costuma-se adotar algumas ferramentas de versionamento de c\u00f3digo, principalmente aquelas baseadas em Git, como o <a href=\"https:\/\/github.com\/\" target=\"_blank\" rel=\"noopener\">GitHub<\/a> e o <a href=\"https:\/\/gitlab.com\/\" target=\"_blank\" rel=\"noopener\">GitLab<\/a>, permitindo que diversos devs colaborem em um mesmo reposit\u00f3rio de forma muito mais eficiente. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Essas ferramentas tamb\u00e9m costumam permitir a cria\u00e7\u00e3o dos pipelines que mencionamos, para automa\u00e7\u00e3o dos testes e implanta\u00e7\u00e3o, mas tamb\u00e9m sendo usado o <a href=\"https:\/\/www.jenkins.io\/\" target=\"_blank\" rel=\"noopener\">Jenkins<\/a> em alguns casos, a depender das necessidades e prefer\u00eancias do projeto e equipe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para a cria\u00e7\u00e3o de ambientes container que mencionamos acima, um recurso bastante comum de se utilizar \u00e9 o <a href=\"https:\/\/www.docker.com\/\" target=\"_blank\" rel=\"noopener\">Docker<\/a>, que permite automa\u00e7\u00e3o na cria\u00e7\u00e3o dos containers, permitindo maior replica\u00e7\u00e3o das condi\u00e7\u00f5es de ambiente entre desenvolvimento, homologa\u00e7\u00e3o e produ\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">J\u00e1 para a cria\u00e7\u00e3o dos servidores e prepara\u00e7\u00e3o dos ambientes, temos normalmente o <a href=\"https:\/\/www.terraform.io\/\" target=\"_blank\" rel=\"noopener\">Terraform<\/a> como respons\u00e1vel pela cria\u00e7\u00e3o e configura\u00e7\u00f5es iniciais do servidor, com o <a href=\"https:\/\/www.ansible.com\/\" target=\"_blank\" rel=\"noopener\">Ansible<\/a> completando o trabalho ao rodar o restante da configura\u00e7\u00e3o, como a instala\u00e7\u00e3o de depend\u00eancias e padroniza\u00e7\u00e3o de configura\u00e7\u00f5es para espelhar o ambiente correto que a aplica\u00e7\u00e3o precisa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Com toda essa jornada de m\u00e9todos, t\u00e9cnicas, procedimentos e automa\u00e7\u00f5es, as equipes de DevOps conseguem tornar n\u00e3o somente mais pr\u00f3ximas as equipes de desenvolvimento e opera\u00e7\u00f5es, como tamb\u00e9m melhorar significativamente a qualidade do software entregue no fim do processo e reduzir muito as ocorr\u00eancias de bugs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vale refor\u00e7ar que a preocupa\u00e7\u00e3o do DevOps n\u00e3o \u00e9 apenas o deploy, mas tamb\u00e9m o acompanhamento posterior para acompanhar e garantir o funcionamento e qualidade da aplica\u00e7\u00e3o em produ\u00e7\u00e3o, tornando a pr\u00e1tica um trabalho sempre constante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea gostou do nosso artigo, n\u00e3o deixe de continuar acompanhando <a href=\"\/blog\">nosso blog<\/a> para encontrar mais conte\u00fado como esse, e nos vemos na pr\u00f3xima o\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 de novo, Kangaroozinho! O DevOps \u00e9 um conceito n\u00e3o muito recente, mas ainda assim pouco popular por quem n\u00e3o \u00e9 t\u00e3o participante das bolhas de desenvolvimento. Esse conceito \u00e9 muito importante e muito presente na rotina de todos os projetos, mesmo que, em alguma medida, seja despercebido. Hoje, voc\u00ea vai entender um pouco mais [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1191,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[267,151,327,328,329,330,331],"class_list":["post-1189","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimento","tag-deploy","tag-desenvolvimento","tag-dev","tag-docker","tag-git","tag-ops","tag-projeto"],"_links":{"self":[{"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/posts\/1189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/comments?post=1189"}],"version-history":[{"count":0,"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/posts\/1189\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/media\/1191"}],"wp:attachment":[{"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/media?parent=1189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/categories?post=1189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/tags?post=1189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}