{"id":19,"date":"2020-06-09T11:00:00","date_gmt":"2020-06-09T14:00:00","guid":{"rendered":"https:\/\/dcoder.io\/blog\/migrar-sistema-para-nuvem-sem-parar-operacao\/"},"modified":"2026-07-21T22:23:42","modified_gmt":"2026-07-22T01:23:42","slug":"migrar-sistema-para-nuvem-sem-parar-operacao","status":"publish","type":"post","link":"https:\/\/dcoder.io\/blog\/migrar-sistema-para-nuvem-sem-parar-operacao\/","title":{"rendered":"Como levar seu sistema para a nuvem sem parar a opera\u00e7\u00e3o"},"content":{"rendered":"<p><strong>Migre em etapas, com o sistema antigo ligado at\u00e9 o novo provar que funciona.<\/strong> A ordem que d\u00e1 certo \u00e9 sempre a mesma: invent\u00e1rio, containeriza\u00e7\u00e3o, ambiente paralelo, migra\u00e7\u00e3o de dados por \u00faltimo e um plano de volta escrito antes de come\u00e7ar.<\/p>\n<p>Migra\u00e7\u00e3o de infraestrutura \u00e9 daqueles projetos em que o sucesso \u00e9 invis\u00edvel, ningu\u00e9m percebe, e o fracasso vira reuni\u00e3o de diretoria. A diferen\u00e7a entre os dois raramente est\u00e1 na escolha do provedor.<\/p>\n<h2>Antes de tudo, o invent\u00e1rio honesto<\/h2>\n<p>Toda migra\u00e7\u00e3o que d\u00e1 errado come\u00e7a com algu\u00e9m achando que sabe o que est\u00e1 rodando no servidor. Levante, sem pressa:<\/p>\n<ul>\n<li>Todo processo ativo, incluindo aquele <code>cron<\/code> que algu\u00e9m configurou em 2016 e ningu\u00e9m sabe o que faz, mas que gera o relat\u00f3rio que o financeiro usa todo dia 5.<\/li>\n<li>Todas as pastas escritas em disco. Upload de arquivo \u00e9 o item que mais atrapalha migra\u00e7\u00f5es, porque some do diagrama e reaparece em produ\u00e7\u00e3o.<\/li>\n<li>Todos os endere\u00e7os fixos: IP em regra de firewall de terceiro, certificado, integra\u00e7\u00e3o que confia no IP de sa\u00edda.<\/li>\n<li>As vers\u00f5es reais de linguagem, banco e bibliotecas. &#8220;Deve ser a 12&#8221; n\u00e3o vale. Confira.<\/li>\n<\/ul>\n<p>Esse levantamento leva de dois a cinco dias e evita as tr\u00eas surpresas mais caras da fase final.<\/p>\n<h2>Containerize antes de orquestrar<\/h2>\n<p>A tenta\u00e7\u00e3o \u00e9 ir direto para Kubernetes. N\u00e3o v\u00e1. O primeiro passo \u00e9 fazer a aplica\u00e7\u00e3o rodar dentro de um container, em qualquer lugar.<\/p>\n<p>Esse exerc\u00edcio exp\u00f5e todo o acoplamento com o servidor atual: caminho absoluto de arquivo, depend\u00eancia instalada manualmente, vari\u00e1vel de ambiente que s\u00f3 existe naquela m\u00e1quina, fuso hor\u00e1rio do sistema. \u00c9 um trabalho chato e \u00e9 onde mora metade do valor da migra\u00e7\u00e3o, porque no fim voc\u00ea tem um sistema que qualquer pessoa consegue subir em qualquer lugar.<\/p>\n<p>Se depois disso um par de containers atr\u00e1s de um balanceador der conta do seu volume, \u00f3timo. Voc\u00ea n\u00e3o precisa de orquestrador. Kubernetes \u00e9 excelente e tem um custo operacional bem real. Adote quando o problema justificar.<\/p>\n<h2>Ambiente paralelo, n\u00e3o substitui\u00e7\u00e3o<\/h2>\n<p>Suba o ambiente novo completo enquanto o antigo continua atendendo. Aponte para ele uma c\u00f3pia do banco. Deixe rodando por uma ou duas semanas com tr\u00e1fego espelhado ou com uso interno da equipe.<\/p>\n<p>\u00c9 nesse per\u00edodo que aparecem as diferen\u00e7as sutis. Timeout diferente. Biblioteca de imagem que gera sa\u00edda ligeiramente distinta. Consulta que era r\u00e1pida no disco antigo e ficou lenta no armazenamento novo. Descobrir isso com o sistema antigo ligado \u00e9 inconveniente. Descobrir na madrugada da virada \u00e9 outra coisa.<\/p>\n<h2>Dados por \u00faltimo, e com ensaio<\/h2>\n<p>Banco de dados \u00e9 sempre a \u00faltima pe\u00e7a e a \u00fanica que n\u00e3o tem desfazer confort\u00e1vel. O procedimento que funciona:<\/p>\n<ol>\n<li>Fa\u00e7a a carga completa antecipadamente e mantenha replica\u00e7\u00e3o cont\u00ednua do antigo para o novo.<\/li>\n<li><strong>Ensaie a virada inteira<\/strong> em ambiente de teste, com cron\u00f4metro. Voc\u00ea precisa saber se a janela \u00e9 de oito minutos ou de duas horas antes de prometer qualquer coisa a algu\u00e9m.<\/li>\n<li>Na virada real, coloque o sistema em modo somente leitura, espere a replica\u00e7\u00e3o zerar, aponte o DNS e valide com um roteiro de testes escrito antes.<\/li>\n<li>Mantenha o ambiente antigo intacto e desligado por, no m\u00ednimo, duas semanas.<\/li>\n<\/ol>\n<h2>O plano de volta precisa estar escrito<\/h2>\n<p>N\u00e3o \u00e9 pessimismo, \u00e9 procedimento. Antes da virada, o documento responde: qual \u00e9 o crit\u00e9rio objetivo para desistir, quem toma essa decis\u00e3o, quais comandos executar, quanto tempo leva e o que acontece com os dados gravados no ambiente novo enquanto ele esteve no ar.<\/p>\n<p>Se ningu\u00e9m consegue responder \u00e0 \u00faltima pergunta, a janela de virada precisa ser curta o bastante para que a resposta seja &#8220;nenhum dado relevante&#8221;. \u00c9 por isso que se migra de madrugada, n\u00e3o por tradi\u00e7\u00e3o.<\/p>\n<h2>O que costuma pagar a conta<\/h2>\n<p>O ganho raramente vem do pre\u00e7o do servidor. Muita empresa migra e passa a gastar mais. O retorno real aparece em outros lugares.<\/p>\n<p>Ambiente reproduz\u00edvel, para come\u00e7ar: subir uma c\u00f3pia id\u00eantica para testar deixa de ser projeto e vira comando. Publica\u00e7\u00e3o sem medo, porque com integra\u00e7\u00e3o cont\u00ednua soltar uma corre\u00e7\u00e3o passa a ser rotina em vez de evento. Recupera\u00e7\u00e3o testada, j\u00e1 que backup que ningu\u00e9m restaurou n\u00e3o \u00e9 backup, e na nuvem restaurar para validar custa alguns reais. E elasticidade, se a carga for irregular. Se for constante, um servidor dedicado pode sair mais barato, e n\u00e3o h\u00e1 problema nenhum em admitir isso.<\/p>\n<hr>\n<p>A DCODER faz migra\u00e7\u00e3o para nuvem, containeriza\u00e7\u00e3o e automa\u00e7\u00e3o de publica\u00e7\u00e3o com Docker, Kubernetes e AWS, com plano de volta escrito antes da primeira altera\u00e7\u00e3o. <a href=\"https:\/\/dcoder.io\/\" rel=\"noopener\">Fale com o est\u00fadio em dcoder.io<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O passo a passo de uma migra\u00e7\u00e3o para nuvem que n\u00e3o vira madrugada de virada: invent\u00e1rio honesto, containers antes de orquestra\u00e7\u00e3o, dados por \u00faltimo e plano de volta escrito.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[17,14,18,15,16],"class_list":["post-19","post","type-post","status-publish","format-standard","hentry","category-infraestrutura","tag-aws","tag-cloud","tag-devops","tag-docker","tag-kubernetes"],"_links":{"self":[{"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/posts\/19","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/comments?post=19"}],"version-history":[{"count":1,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/posts\/19\/revisions"}],"predecessor-version":[{"id":37,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/posts\/19\/revisions\/37"}],"wp:attachment":[{"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/media?parent=19"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/categories?post=19"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/tags?post=19"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}