{"id":1505,"date":"2025-04-18T15:54:01","date_gmt":"2025-04-18T15:54:01","guid":{"rendered":"https:\/\/mugnos-it.com\/?p=1505"},"modified":"2025-06-03T00:49:31","modified_gmt":"2025-06-03T00:49:31","slug":"evite-desastres-no-deploy-escolha-a-estrategia-certa","status":"publish","type":"post","link":"https:\/\/mugnos-it.com\/pt\/evite-desastres-no-deploy-escolha-a-estrategia-certa\/","title":{"rendered":"Evite desastres no deploy: Escolha a estrat\u00e9gia certa!"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"1505\" class=\"elementor elementor-1505\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-54ed4bd2 e-flex e-con-boxed e-con e-parent\" data-id=\"54ed4bd2\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-452e7856 elementor-widget elementor-widget-text-editor\" data-id=\"452e7856\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<p id=\"1ab14600-107e-80d1-8932-c0c9224bfa60\">\u00a0<\/p>\n\n<p id=\"1ab14600-107e-80aa-9193-d343e66d5e2c\">Se tem uma coisa que ningu\u00e9m quer \u00e9 um <strong>deployment<\/strong> que cause impacto negativo no neg\u00f3cio. Escolher a estrat\u00e9gia certa de deployment n\u00e3o \u00e9 apenas uma decis\u00e3o t\u00e9cnica, mas uma necessidade para garantir disponibilidade, estabilidade e experi\u00eancia do usu\u00e1rio.<\/p>\n\n<p id=\"1ab14600-107e-80ec-af8c-f11acbf48c6d\">Cada mudan\u00e7a no seu sistema pode trazer riscos. Um erro no deploy pode causar downtime, afetar usu\u00e1rios e, pior, gerar perdas financeiras. Para minimizar o &#8220;<em><strong>blast radius<\/strong><\/em>&#8221; \u2013 ou seja, o impacto negativo de um erro \u2013, \u00e9 essencial contar com uma estrat\u00e9gia de deploy bem planejada e que atenda a suas necessidades.<\/p>\n\n<p id=\"1ab14600-107e-8066-82e6-eeb483beeba0\">Al\u00e9m disso, \u00e9 claro que <strong>ter uma estrat\u00e9gia robusta de testes<\/strong> \u00e9 fundamental, pois sem testes a estrat\u00e9gia de deployment somente ir\u00e1 mudar o tempo que voc\u00ea implementa em um erro no seu ambiente (Ex. vai colocando uma carga de 10% para nova vers\u00e3o sem saber se ela esta funcionando como esperado, ai \u00e9 demais n\u00e9 ?! &#8211; sim, \u00e9 raro mas acontece muito \ud83d\udc40) .<\/p>\n\n<p id=\"1ab14600-107e-806f-a837-fca0a97c1910\"><br \/>Conforme novas vers\u00f5es v\u00e3o sendo liberadas, \u00e9 crucial monitorar as m\u00e9tricas de neg\u00f3cio (podendo ser m\u00e9tricas como os golden signals ou de neg\u00f3cio como taxa de abandono de checkout) dos componentes. Dessa forma, se algo der errado, o deploy pode ser pausado ou revertido rapidamente.<\/p>\n\n<p id=\"1ab14600-107e-805e-80e8-e01977381e82\">Bom, vamos explorar algumas estrat\u00e9gias de deployment e entender como elas funcionam:<\/p>\n\n<h3 id=\"1ab14600-107e-8010-8bb8-e8fb4e87ced6\" class=\"wp-block-heading\">\u27a1\ufe0f <strong>All at Once \/ Big Bang<\/strong><\/h3>\n\n<p id=\"1ab14600-107e-80f7-bde3-e947652013f2\">\ud83d\udee0 <strong>Como funciona?<\/strong><\/p>\n\n<ul id=\"1ab14600-107e-80af-a512-f7eb1a67b05b\" class=\"wp-block-list\">\n<li>A nova vers\u00e3o \u00e9 implantada para todos os usu\u00e1rios de uma vez.<\/li>\n\n<li>N\u00e3o h\u00e1 divis\u00e3o de tr\u00e1fego entre vers\u00f5es.<\/li>\n<\/ul>\n\n<p id=\"1ab14600-107e-8075-84ae-f7a56832a1b4\">\u2705 <strong>Vantagens:<\/strong><\/p>\n\n<ul id=\"1ab14600-107e-8041-8d29-cfb00daa5be3\" class=\"wp-block-list\">\n<li>Simples de implementar.<\/li>\n\n<li>R\u00e1pido, j\u00e1 que a nova vers\u00e3o \u00e9 liberada imediatamente.<\/li>\n<\/ul>\n\n<p id=\"1ab14600-107e-80f1-80ab-f378594dc202\">\u26a0 <strong>Desvantagens:<\/strong><\/p>\n\n<ul id=\"1ab14600-107e-807a-b30c-c0a0d91a0fbc\" class=\"wp-block-list\">\n<li>Se algo der errado, todos os usu\u00e1rios s\u00e3o afetados.<\/li>\n\n<li>Revers\u00e3o pode ser dif\u00edcil e demorada.<\/li>\n<\/ul>\n\n<p id=\"1ab14600-107e-806c-91c4-f4d46213882b\">\ud83d\udca1 <strong>Exemplo:<\/strong><br \/>Imagine que um e-commerce lan\u00e7a uma nova funcionalidade de checkout. Se houver um erro na implementa\u00e7\u00e3o, todos os usu\u00e1rios ser\u00e3o impactados ao mesmo tempo, podendo levar a quedas nas vendas.<br \/><br \/><\/p>\n\n<h3 id=\"1ab14600-107e-802d-a484-c7a79de31f55\" class=\"wp-block-heading\">\u27a1\ufe0f <strong>Blue\/Green Deployment<\/strong><\/h3>\n\n<p id=\"1ab14600-107e-8086-8c3e-d93aa519b671\">\ud83d\udee0 <strong>Como funciona?<\/strong><\/p>\n\n<ul id=\"1ab14600-107e-8064-a263-e9cecb48714f\" class=\"wp-block-list\">\n<li>Duas vers\u00f5es do sistema (Blue e Green) rodam simultaneamente.<\/li>\n\n<li>O tr\u00e1fego de produ\u00e7\u00e3o sempre aponta apenas para blue <strong>OU <\/strong>green<\/li>\n\n<li>A atualiza\u00e7\u00e3o \u00e9 sempre feita na cor sem carga, quando est\u00e1 pronta e testada, o tr\u00e1fego \u00e9 alterado para cor com a nova vers\u00e3o<\/li>\n<\/ul>\n\n<p id=\"1ab14600-107e-80e6-82dd-ced6e868c0db\">\u2705 <strong>Vantagens:<\/strong><\/p>\n\n<ul id=\"1ab14600-107e-8012-8adf-d3c863eff9d1\" class=\"wp-block-list\">\n<li>Possibilita rollback imediato, bastando redirecionar o tr\u00e1fego para a vers\u00e3o antiga.<\/li>\n\n<li>Reduz downtime.<\/li>\n<\/ul>\n\n<p id=\"1ab14600-107e-80e5-a337-d4144c2ffe6c\">\u26a0 <strong>Desvantagens:<\/strong><\/p>\n\n<ul id=\"1ab14600-107e-80d6-9324-f6b712afe359\" class=\"wp-block-list\">\n<li>Custo operacional maior (duas vers\u00f5es rodando ao mesmo tempo).<\/li>\n\n<li>Exige um bom balanceador de carga.<\/li>\n<\/ul>\n\n<p id=\"1ab14600-107e-8016-8917-db88b101d335\">\ud83d\udca1 <strong>Exemplo:<\/strong><br \/>Se um banco online quiser atualizar sua interface de login, ele pode manter a vers\u00e3o antiga ativa enquanto testa a nova para um grupo seleto de usu\u00e1rios. Se n\u00e3o houver problemas, toda a base de usu\u00e1rios \u00e9 migrada.<\/p>\n\n<h3 id=\"1ab14600-107e-8009-a5c1-d1ac75852118\" class=\"wp-block-heading\">\u27a1\ufe0f\u00a0<strong>Canary Deployment (Gradual Deployment)<\/strong><\/h3>\n\n<p id=\"1ab14600-107e-803c-9e69-e32259cb44e1\">\ud83d\udee0 <strong>Como funciona?<\/strong><\/p>\n\n<ul id=\"1ab14600-107e-801e-b021-f15d0c80aac5\" class=\"wp-block-list\">\n<li>A nova vers\u00e3o \u00e9 liberada gradualmente para uma pequena porcentagem dos usu\u00e1rios. (Ex. 5 ondas de 20%, ou 10 ondas de 10%)<\/li>\n\n<li>Se tudo estiver funcionando bem, o tr\u00e1fego vai sendo aumentado at\u00e9 que todos estejam na nova vers\u00e3o.<\/li>\n<\/ul>\n\n<p id=\"1ab14600-107e-80ed-b820-c8b6e00471db\">\u2705 <strong>Vantagens:<\/strong><\/p>\n\n<ul id=\"1ab14600-107e-806e-84c4-ef50071bb938\" class=\"wp-block-list\">\n<li>Permite testar a nova vers\u00e3o em produ\u00e7\u00e3o com menor <strong>blast radius<\/strong><\/li>\n\n<li>Impacto reduzido em caso de falhas.<\/li>\n<\/ul>\n\n<p id=\"1ab14600-107e-801d-8e19-f51b772d6871\">\u26a0 <strong>Desvantagens:<\/strong><\/p>\n\n<ul id=\"1ab14600-107e-80bb-b8d4-d379c63b5be8\" class=\"wp-block-list\">\n<li>Necessidade de observabilidade avan\u00e7ada para monitorar m\u00e9tricas da nova vers\u00e3o.<\/li>\n\n<li>Dependendo das funcionalidades da aplica\u00e7\u00e3o, pode gerar inconsist\u00eancia pois requisi\u00e7\u00f5es ser\u00e3o distribuidas para a vers\u00e3o N e N-1<\/li>\n\n<li>rollout geralmente leva mais tempo<\/li>\n<\/ul>\n\n<p id=\"1ab14600-107e-808e-baba-d55023cc2722\">\ud83d\udca1 <strong>Exemplo:<\/strong><\/p>\n\n<p id=\"1ab14600-107e-80cb-a98f-da9ffc87509a\">Uma empresa SaaS precisa atualizar sua API cr\u00edtica. Em vez de substituir todas as inst\u00e2ncias de uma vez, ela inicia o deployment em apenas 5% dos servidores. Se os logs e m\u00e9tricas indicarem que a nova vers\u00e3o est\u00e1 est\u00e1vel, o rollout \u00e9 expandido progressivamente at\u00e9 alcan\u00e7ar 100% da base.<\/p>\n\n<h3 id=\"1ab14600-107e-8029-bf07-e4d5eb2c6683\" class=\"wp-block-heading\">\u27a1\ufe0f\u00a0<strong>Shadow Deployment<\/strong><\/h3>\n\n<p id=\"1ab14600-107e-80ad-ab44-c71aa70e209e\">\ud83d\udee0 <strong>Como funciona?<\/strong><\/p>\n\n<ul id=\"1ab14600-107e-8045-b203-ef8ff1565477\" class=\"wp-block-list\">\n<li>Toda requisi\u00e7\u00e3o gerada \u00e9 duplicada, uma vai para a vers\u00e3o em produ\u00e7\u00e3o e a outra para um ambiente \u201cshadow \/ nova vers\u00e3o\u201d<\/li>\n\n<li>A nova vers\u00e3o recebe uma copia do tr\u00e1fego real, mas as respostas n\u00e3o s\u00e3o servidas aos usu\u00e1rios finais.<\/li>\n\n<li>Isso permite avaliar o comportamento da nova vers\u00e3o sem afetar a produ\u00e7\u00e3o.<\/li>\n<\/ul>\n\n<p id=\"1ab14600-107e-804b-aa73-e9a0c941d54d\">\u2705 <strong>Vantagens:<\/strong><\/p>\n\n<ul id=\"1ab14600-107e-800a-b13e-f8ee186ad1b8\" class=\"wp-block-list\">\n<li>Identifica problemas antes que a nova vers\u00e3o chegue aos usu\u00e1rios.<\/li>\n\n<li>Ideal para testar carga e performance em ambiente real.<\/li>\n<\/ul>\n\n<p id=\"1ab14600-107e-8031-a482-dec23fe0d26e\">\u26a0 <strong>Desvantagens:<\/strong><\/p>\n\n<ul id=\"1ab14600-107e-80e0-81b7-c7e0e48eed1f\" class=\"wp-block-list\">\n<li>Custo elevado, pois duas vers\u00f5es est\u00e3o processando requisi\u00e7\u00f5es ao mesmo tempo.<\/li>\n\n<li>Dif\u00edcil capturar todos os cen\u00e1rios poss\u00edveis sem um conjunto amplo de testes.<\/li>\n<\/ul>\n\n<p id=\"1ab14600-107e-8002-a54b-f0410593c76a\">\ud83d\udca1 <strong>Exemplo:<\/strong><br \/>Uma fintech quer testar um novo motor de processamento de transa\u00e7\u00f5es. Ele pode rodar em Shadow Mode para validar se est\u00e1 pronto antes de assumir o processamento real dos pagamentos.<\/p>\n\n<p id=\"1ab14600-107e-8082-b16c-ce96d27e79ca\">Note: Tem uma vertente aqui que \u00e9 o shadow traffic, praticamente mesma coisa, por\u00e9m n\u00e3o s\u00e3o 100% das requisi\u00e7\u00f5es que s\u00e3o duplicadas, apenas uma amostragem \u00e9 enviada para nova vers\u00e3o.<\/p>\n\n<p id=\"1ab14600-107e-80bc-a1a8-cc2ace45616b\">\u00a0<\/p>\n\n<h3 id=\"1ab14600-107e-8097-9fac-e05ab31d85b1\" class=\"wp-block-heading\">\ud83d\udd25 Feature Flag \ud83d\udd25<\/h3>\n\n<p id=\"1ab14600-107e-806d-8056-f32f445419be\">Feature Flags n\u00e3o s\u00e3o exatamente uma estrat\u00e9gia de deployment, mas sim uma t\u00e9cnica poderosa para ativar ou desativar funcionalidades em tempo real sem precisar de um novo deploy. A ideia \u00e9 fazer o deploy de uma vers\u00e3o segura do c\u00f3digo onde a nova funcionalidade j\u00e1 est\u00e1 presente, mas desativada por padr\u00e3o. Quando for o momento certo, basta ativ\u00e1-la remotamente sem necessidade de uma nova implanta\u00e7\u00e3o.<\/p>\n\n<p id=\"1ab14600-107e-80d2-9cb9-ea4434e98dee\">Feature flag \u00e9 muito usado por empresas grandes e softwares cr\u00edticos, exige uma maturidade alta por\u00e9m os ben\u00e9ficos s\u00e3o grandes. Voc\u00ea consegue realizar uma estrat\u00e9gia de deploy canary simples e depois ativar\/desativar uma funcionalidade em segundos. Isso tr\u00e1s muitos beneficios e reduz consideravelmente os impactos .<\/p>\n\n<p id=\"1ab14600-107e-80e7-adec-c57fefcf9f27\">\ud83d\udca1 <strong>Exemplo:<\/strong><br \/>Imagine que um banco digital quer lan\u00e7ar um novo fluxo de autentica\u00e7\u00e3o para seus clientes. Em vez de liberar a funcionalidade para todos de uma vez, ele faz o deploy da nova vers\u00e3o com o c\u00f3digo j\u00e1 preparado, mas desativado via Feature Flag. Assim, ele pode ativar a funcionalidade apenas para um pequeno grupo de usu\u00e1rios internos, coletar feedback, corrigir eventuais problemas e, s\u00f3 ent\u00e3o, expandir a ativa\u00e7\u00e3o para toda a base de clientes de forma segura e controlada.<\/p>\n\n<h3 id=\"1ab14600-107e-800d-acdb-ccb5f95f62a0\" class=\"wp-block-heading\">\ud83d\ude80 Conclus\u00e3o<\/h3>\n\n<p id=\"1ab14600-107e-8090-b731-f0883c4225d0\">N\u00e3o existe uma \u00fanica estrat\u00e9gia certa. A escolha depende do seu contexto, do risco aceit\u00e1vel e da maturidade do seu processo de deployment. O importante \u00e9 sempre minimizar impacto e garantir uma experi\u00eancia fluida para os usu\u00e1rios.<\/p>\n\n<p id=\"1ab14600-107e-8083-a82f-f749d1b7472c\">E a\u00ed, qual dessas estrat\u00e9gias voc\u00ea j\u00e1 utilizou? Tem alguma preferida? Conta pra gente!<\/p>\n\n<p id=\"1ab14600-107e-80ea-8329-dc62a4a243ed\"><br \/>Se curtiu esse conte\u00fado e quer aprender mais sobre arquitetura de software e um n\u00edvel bem mais aprofundado, venha fazer parte da<br \/><strong>Comunidade de Arquitetura Descomplicada (CaD)<\/strong>! Saiba mais em <a href=\"https:\/\/mugnos-it.com\/pt\/cad\/\">https:\/\/mugnos-it.com\/cad\/<\/a> \ud83d\ude80<\/p>\n\n<p id=\"1ab14600-107e-8058-83f3-fca3ba89c8a6\">At\u00e9 a pr\u00f3xima!<\/p>\n\n<p id=\"1ab14600-107e-8070-9be0-e233b0c5045d\">Abra\u00e7os,<br \/>Douglas Mugnos<br \/>MUGNOS-IT<\/p>\n\n<p>\u00a0<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4080d11 e-flex e-con-boxed e-con e-parent\" data-id=\"4080d11\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>\u00a0 Se tem uma coisa que ningu\u00e9m quer \u00e9 um deployment que cause impacto negativo no neg\u00f3cio. Escolher a estrat\u00e9gia certa de deployment n\u00e3o \u00e9 apenas uma decis\u00e3o t\u00e9cnica, mas uma necessidade para garantir disponibilidade, estabilidade e experi\u00eancia do usu\u00e1rio. Cada mudan\u00e7a no seu sistema pode trazer riscos. Um erro no deploy pode causar downtime, [&hellip;]<\/p>","protected":false},"author":3,"featured_media":1901,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1505","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/mugnos-it.com\/wp-content\/uploads\/2025\/04\/05.-Evite-desastres-no-deploy-Escolha-a-estrategia-certa.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/1505","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/comments?post=1505"}],"version-history":[{"count":8,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/1505\/revisions"}],"predecessor-version":[{"id":2028,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/1505\/revisions\/2028"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/media\/1901"}],"wp:attachment":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/media?parent=1505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/categories?post=1505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/tags?post=1505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}