{"id":13599,"date":"2025-05-23T15:01:16","date_gmt":"2025-05-23T18:01:16","guid":{"rendered":"https:\/\/www.geekhunter.com/pt/blog\/?p=13599"},"modified":"2025-05-23T15:01:16","modified_gmt":"2025-05-23T18:01:16","slug":"migrations","status":"publish","type":"post","link":"https:\/\/www.geekhunter.com/pt/blog\/migrations\/","title":{"rendered":"O guia completo sobre migrations para devs"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Se voc\u00ea j\u00e1 precisou migrar um banco de dados em produ\u00e7\u00e3o com usu\u00e1rios ativos e um cron\u00f4metro mental rodando na sua cabe\u00e7a, sabe que <\/span><i><span style=\"font-weight: 400;\">migrations<\/span><\/i><span style=\"font-weight: 400;\"> \u00e9 uma verdadeira opera\u00e7\u00e3o de risco.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">E o risco n\u00e3o est\u00e1 s\u00f3 nos dados \u2014 est\u00e1 no impacto que uma migra\u00e7\u00e3o mal planejada pode ter no sistema, na equipe e at\u00e9 na reputa\u00e7\u00e3o da empresa. Um campo que n\u00e3o migra corretamente pode derrubar uma aplica\u00e7\u00e3o inteira. Um rollback mal escrito pode custar horas de trabalho e noites sem dormir.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Neste guia, voc\u00ea vai entender exatamente o que s\u00e3o migrations, como elas funcionam, quais s\u00e3o os principais tipos, erros comuns, e o mais importante: boas pr\u00e1ticas para executar com seguran\u00e7a e previsibilidade.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Este conte\u00fado foi pensado para desenvolvedores e <a href=\"https:\/\/www.geekhunter.com/pt/blog\/profissao-engenharia-de-software\/\">profissionais de TI<\/a> que querem ir al\u00e9m da teoria e realmente dominar migrations, do conceito \u00e0 aplica\u00e7\u00e3o em ambientes reais. Vamos l\u00e1?<\/span><\/p>\n<h2><b>O que \u00e9 migrations?<\/b><\/h2>\n<p><b>Migrations<\/b><span style=\"font-weight: 400;\"> s\u00e3o processos estruturados de transfer\u00eancia de dados, c\u00f3digo ou sistemas entre ambientes. Em outras palavras, \u00e9 a forma segura, organizada e controlada de <\/span><b>mover informa\u00e7\u00f5es ou alterar estruturas t\u00e9cnicas<\/b><span style=\"font-weight: 400;\"> sem comprometer a integridade da aplica\u00e7\u00e3o ou dos dados.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">No contexto de tecnologia, migrations s\u00e3o amplamente utilizadas em:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/www.geekhunter.com/pt/blog\/seguranca-de-dados-tudo-o-que-voce-precisa-saber\/\"><b>Bancos de dados<\/b><\/a><span style=\"font-weight: 400;\"> (ex: cria\u00e7\u00e3o, altera\u00e7\u00e3o e versionamento de tabelas)<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Sistemas<\/b><span style=\"font-weight: 400;\"> (ex: substitui\u00e7\u00e3o de um sistema legado por um novo)<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Ambientes de infraestrutura<\/b><span style=\"font-weight: 400;\"> (ex: migra\u00e7\u00e3o on-premise para cloud)<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>C\u00f3digo-fonte<\/b><span style=\"font-weight: 400;\"> (ex: altera\u00e7\u00f5es em massa em estruturas de c\u00f3digo versionadas)<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Uma migration bem-feita documenta mudan\u00e7as, permite rollback, evita erros em produ\u00e7\u00e3o e oferece previsibilidade em ambientes cr\u00edticos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00c9 uma parte essencial de qualquer pipeline de entrega cont\u00ednua, e \u00e9 um instrumento de confian\u00e7a entre time t\u00e9cnico e neg\u00f3cio.<\/span><\/p>\n<h2><b>Quais s\u00e3o os tipos de migrations?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Migrations n\u00e3o s\u00e3o todas iguais, elas variam conforme o que est\u00e1 sendo migrado e o contexto t\u00e9cnico. Conhecer os diferentes tipos \u00e9 essencial para aplicar a abordagem certa e reduzir riscos.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Vamos aos principais:<\/span><\/p>\n<h3><b>Migra\u00e7\u00e3o de banco de dados<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Esse \u00e9 o tipo mais conhecido. Envolve mudan\u00e7as na estrutura de tabelas, cria\u00e7\u00e3o de novos campos, ajustes em relacionamentos e normaliza\u00e7\u00f5es.<\/span><\/p>\n<p><b>Exemplo real:<\/b><span style=\"font-weight: 400;\"> uma fintech que precisa criar novas tabelas para suporte a Pix em seu sistema de transa\u00e7\u00f5es.<\/span><\/p>\n<p><b>Impacto t\u00e9cnico:<\/b><span style=\"font-weight: 400;\"> altera\u00e7\u00f5es diretas na fonte de dados. Qualquer erro pode corromper registros ou tornar o sistema inutiliz\u00e1vel.<\/span><\/p>\n<h3><b>Migra\u00e7\u00e3o de aplica\u00e7\u00f5es\/sistemas<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Nesse caso, trata-se de substituir, atualizar ou mover um sistema de um ambiente para outro, como trocar um ERP antigo por um mais moderno, ou migrar de um sistema monol\u00edtico para uma arquitetura em microservi\u00e7os.<\/span><\/p>\n<p><b>Exemplo real:<\/b><span style=\"font-weight: 400;\"> uma empresa de log\u00edstica que migra seu sistema legado para uma solu\u00e7\u00e3o SaaS personalizada.<\/span><\/p>\n<p><b>Impacto t\u00e9cnico:<\/b><span style=\"font-weight: 400;\"> envolve n\u00e3o s\u00f3 c\u00f3digo, mas depend\u00eancias, integra\u00e7\u00f5es e treinamentos. \u00c9 uma das migrations mais complexas.<\/span><\/p>\n<h3><b>Migra\u00e7\u00e3o para cloud<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Refere-se \u00e0 mudan\u00e7a de servidores e infraestrutura locais (on-premise) para ambientes em nuvem (AWS, Azure, Google Cloud etc.). Pode incluir dados, aplica\u00e7\u00f5es, VMs, servi\u00e7os de rede e mais.<\/span><\/p>\n<p><b>Exemplo real:<\/b><span style=\"font-weight: 400;\"> um e-commerce que migra todo seu backend para a AWS em busca de escalabilidade e redu\u00e7\u00e3o de custos.<\/span><\/p>\n<p><b>Impacto t\u00e9cnico:<\/b><span style=\"font-weight: 400;\"> exige planejamento de capacidade, seguran\u00e7a, compliance e testes de performance em ambiente novo.<\/span><\/p>\n<h3><b>Migra\u00e7\u00e3o de c\u00f3digo (versionamento e CI\/CD)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Migrations de c\u00f3digo ocorrem, por exemplo, quando h\u00e1 altera\u00e7\u00f5es significativas em modelos de dados e a base precisa refletir essas mudan\u00e7as automaticamente via scripts versionados com suporte a rollback.<\/span><\/p>\n<p><b>Exemplo real:<\/b><span style=\"font-weight: 400;\"> um time que adota Sequelize para controlar migrations de banco via c\u00f3digo versionado no Git.<\/span><\/p>\n<p><b>Impacto t\u00e9cnico:<\/b><span style=\"font-weight: 400;\"> melhora a rastreabilidade e reduz falhas manuais, mas depende de disciplina e padroniza\u00e7\u00e3o da equipe.<\/span><\/p>\n<h2><b>Quando usar migrations no seu projeto?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Migrations s\u00e3o indispens\u00e1veis em projetos que passam por evolu\u00e7\u00e3o constante. Em contextos \u00e1geis, onde a aplica\u00e7\u00e3o se transforma semanalmente, migrar corretamente \u00e9 uma quest\u00e3o de sobreviv\u00eancia t\u00e9cnica.<\/span><\/p>\n<p><b>Use migrations quando:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">H\u00e1 <\/span><b>mudan\u00e7as estruturais<\/b><span style=\"font-weight: 400;\"> no banco ou na aplica\u00e7\u00e3o<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">O time precisa de <\/span><b>hist\u00f3rico e versionamento<\/b><b>\n<p><\/b><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">O ambiente ser\u00e1 <\/span><b>substitu\u00eddo ou escalado<\/b><b>\n<p><\/b><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">\u00c9 necess\u00e1rio <\/span><b>garantir revers\u00e3o segura<\/b><span style=\"font-weight: 400;\"> em caso de erro<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<\/ul>\n<p><b>Alguns sinais de alerta:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Aplica\u00e7\u00f5es quebram ap\u00f3s deploy<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Altera\u00e7\u00f5es manuais em banco s\u00e3o frequentes<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">N\u00e3o existe hist\u00f3rico claro de mudan\u00e7as no sistema<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">O ambiente de homologa\u00e7\u00e3o n\u00e3o bate com o de produ\u00e7\u00e3o<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Se algum desses sinais apareceu no seu projeto, \u00e9 hora de repensar sua estrat\u00e9gia de migrations.<\/span><\/p>\n<h2><b>Riscos e erros mais comuns em migrations<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Uma migration bem feita \u00e9 quase invis\u00edvel. Mas basta um erro para ela virar protagonista \u2014 e n\u00e3o da melhor forma. Veja os principais riscos t\u00e9cnicos que afetam projetos com migrations mal estruturadas:<\/span><\/p>\n<h3><b>Perda de dados<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">A falta de backup ou a execu\u00e7\u00e3o incorreta de scripts pode resultar em exclus\u00e3o ou corrup\u00e7\u00e3o de registros valiosos. Isso \u00e9 mais comum do que parece, especialmente em altera\u00e7\u00f5es de schema que n\u00e3o consideram dados legados.<\/span><\/p>\n<p><b>Como evitar:<\/b><span style=\"font-weight: 400;\"> sempre crie c\u00f3pias de seguran\u00e7a antes de migrar, valide os dados p\u00f3s-migra\u00e7\u00e3o e nunca rode scripts destrutivos diretamente em produ\u00e7\u00e3o.<\/span><\/p>\n<h3><b>Incompatibilidade de vers\u00f5es<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Altera\u00e7\u00f5es feitas em um ambiente que n\u00e3o s\u00e3o compat\u00edveis com a vers\u00e3o do banco ou do sistema em produ\u00e7\u00e3o geram falhas cr\u00edticas. \u00c9 o tipo de erro que passa despercebido at\u00e9 a hora do deploy.<\/span><\/p>\n<p><b>Como evitar:<\/b><span style=\"font-weight: 400;\"> mantenha controle rigoroso de vers\u00f5es, testes automatizados e integra\u00e7\u00e3o cont\u00ednua.<\/span><\/p>\n<h3><b>Falta de rollback<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Sem um plano de revers\u00e3o, qualquer erro durante a migration vira um desastre sem sa\u00edda r\u00e1pida. Rollback precisa ser parte do script de migra\u00e7\u00e3o, e n\u00e3o uma ideia de \u00faltima hora.<\/span><\/p>\n<p><b>Como evitar:<\/b><span style=\"font-weight: 400;\"> escreva migrations com scripts de revers\u00e3o e valide em ambiente de teste.<\/span><\/p>\n<h3><b>Falhas em produ\u00e7\u00e3o<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Problemas em migrations geralmente s\u00f3 aparecem quando j\u00e1 \u00e9 tarde demais. Falhas em scripts, conflitos de depend\u00eancias e erros humanos impactam diretamente usu\u00e1rios finais.<\/span><\/p>\n<p><b>Como evitar:<\/b><span style=\"font-weight: 400;\"> adote pr\u00e1ticas de revis\u00e3o de c\u00f3digo, homologa\u00e7\u00e3o em ambientes espelhados e pipelines automatizados para valida\u00e7\u00e3o.<\/span><\/p>\n<h2><b>Checklist pr\u00e1tico antes de rodar qualquer migration<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Antes de pressionar \u201center\u201d e executar uma migration, vale a pena revisar cada item abaixo. S\u00e3o passos simples, mas negligenciados com frequ\u00eancia e que fazem toda a diferen\u00e7a entre um deploy tranquilo e um incidente grave.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Backup feito?<\/b><span style=\"font-weight: 400;\"> Nenhuma migration deve ocorrer sem uma c\u00f3pia de seguran\u00e7a recente e validada. Se algo der errado, voc\u00ea precisa ter como voltar ao estado anterior.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Scripts versionados?<\/b><span style=\"font-weight: 400;\"> Migrations soltas, feitas diretamente em produ\u00e7\u00e3o, s\u00e3o convites ao caos. Use versionamento e registre o hist\u00f3rico de altera\u00e7\u00f5es.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Testes locais realizados?<\/b><span style=\"font-weight: 400;\"> Testar apenas em staging n\u00e3o \u00e9 suficiente. Rode sua migration localmente, com dados reais (anonimizados, se necess\u00e1rio).<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Rollback preparado?<\/b><span style=\"font-weight: 400;\"> Toda mudan\u00e7a deve ser revers\u00edvel. Um bom plano de rollback \u00e9 mais importante do que confiar que \u201cvai dar certo\u201d.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Ambiente controlado?<\/b><span style=\"font-weight: 400;\"> A migra\u00e7\u00e3o precisa acontecer em um ambiente previs\u00edvel, com controle de acessos e logs de execu\u00e7\u00e3o.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Tratar esses itens como obrigat\u00f3rios \u00e9 o primeiro passo para incorporar migrations seguras no seu processo de desenvolvimento.<\/span><\/p>\n<h2><b>Ferramentas e tecnologias para fazer migrations com seguran\u00e7a<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Migrations n\u00e3o precisam ser feitas \u201cna m\u00e3o\u201d. Hoje, h\u00e1 uma s\u00e9rie de ferramentas confi\u00e1veis que ajudam a planejar, versionar, aplicar e automatizar o processo de forma profissional. Abaixo, listamos as mais utilizadas e suas aplica\u00e7\u00f5es ideais:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Sequelize<\/b><span style=\"font-weight: 400;\">: ORM para Node.js com suporte robusto a migrations de banco de dados. Ideal para projetos JavaScript\/TypeScript com versionamento via Git.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>TypeORM<\/b><span style=\"font-weight: 400;\">: Suporte nativo a migrations e schema sync. Bom para aplica\u00e7\u00f5es em TypeScript com foco em desenvolvimento \u00e1gil.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Flyway<\/b><span style=\"font-weight: 400;\">: Ferramenta focada em migrations SQL, muito usada em bancos relacionais. Tem integra\u00e7\u00e3o f\u00e1cil com CI\/CD e cloud.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Liquibase<\/b><span style=\"font-weight: 400;\">: Voltado para ambientes corporativos complexos. Permite controle preciso, changelogs e rastreamento de altera\u00e7\u00f5es.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>AWS DMS<\/b><span style=\"font-weight: 400;\">: Ferramenta da Amazon para migra\u00e7\u00e3o de dados em larga escala. \u00datil em processos de moderniza\u00e7\u00e3o de infraestrutura para a nuvem.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Cada uma dessas solu\u00e7\u00f5es pode ser integrada a pipelines de deploy, garantindo que migrations aconte\u00e7am de forma autom\u00e1tica, validada e segura.<\/span><\/p>\n<h2><b>Boas pr\u00e1ticas para uma migra\u00e7\u00e3o bem-sucedida<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Al\u00e9m de ferramentas, boas pr\u00e1ticas fazem a diferen\u00e7a entre uma migration confi\u00e1vel e um risco t\u00e9cnico. Aqui est\u00e3o as que mais importam:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Versione suas migrations<\/b><span style=\"font-weight: 400;\">: Use controle de vers\u00e3o (como Git) para garantir rastreabilidade e colabora\u00e7\u00e3o.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Automatize via CI\/CD<\/b><span style=\"font-weight: 400;\">: Reduza erros manuais ao integrar migrations nos pipelines de entrega. Isso garante que o mesmo processo funcione em todos os ambientes.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Documente cada mudan\u00e7a<\/b><span style=\"font-weight: 400;\">: Escreva descri\u00e7\u00f5es claras sobre o que a migration faz, por que foi feita e como reverter.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Teste antes e depois<\/b><span style=\"font-weight: 400;\">: Verifique se os dados migraram como esperado e se o sistema continua \u00edntegro ap\u00f3s a mudan\u00e7a.<\/span><span style=\"font-weight: 400;\">\n<p><\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">O segredo \u00e9 tratar migrations como c\u00f3digo e n\u00e3o como tarefas pontuais ou improvisadas.<\/span><\/p>\n<h2><b>Exemplo pr\u00e1tico: como rodar uma migration com Sequelize<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Vamos colocar a teoria em pr\u00e1tica. Abaixo, um passo a passo simples e breve de como criar e rodar uma migration com Sequelize, uma das ferramentas mais usadas em projetos Node.js.<\/span><\/p>\n<h3><b>1. Criando a migration<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">npx sequelize-cli migration:generate &#8211;name add-user-role-column<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Esse comando cria um arquivo de migration versionado com timestamp.<\/span><\/p>\n<h3><b>2. Editando o script<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">module.exports = {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0up: async (queryInterface, Sequelize) =&gt; {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0await queryInterface.addColumn(&#8216;Users&#8217;, &#8216;role&#8217;, {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0type: Sequelize.STRING,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allowNull: false,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0defaultValue: &#8216;user&#8217;,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0});<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0},<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0down: async (queryInterface, Sequelize) =&gt; {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0await queryInterface.removeColumn(&#8216;Users&#8217;, &#8216;role&#8217;);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400;\">};<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Aqui, adicionamos uma nova coluna <\/span><span style=\"font-weight: 400;\">role<\/span><span style=\"font-weight: 400;\"> \u00e0 tabela <\/span><span style=\"font-weight: 400;\">Users<\/span><span style=\"font-weight: 400;\">. Tamb\u00e9m definimos o rollback correspondente.<\/span><\/p>\n<h3><b>3. Rodando a migration<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">npx sequelize-cli db:migrate<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Se tudo estiver certo, a altera\u00e7\u00e3o ser\u00e1 aplicada ao banco com seguran\u00e7a \u2014 e registrada no hist\u00f3rico de migrations.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><b>Conclus\u00e3o<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Migrations s\u00e3o etapas cruciais para garantir que sistemas, bancos de dados e infraestruturas evoluem com seguran\u00e7a, sem comprometer a integridade dos dados ou a estabilidade da aplica\u00e7\u00e3o.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Existem diferentes tipos, como migra\u00e7\u00e3o de banco, sistemas, cloud e c\u00f3digo e cada um traz seus pr\u00f3prios desafios t\u00e9cnicos. Para enfrent\u00e1-los com confian\u00e7a, ferramentas como Sequelize, TypeORM, Flyway e outras permitem versionar, automatizar e controlar cada mudan\u00e7a.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Mas n\u00e3o basta ter boas ferramentas: pr\u00e1ticas como manter rollbacks prontos, testar antes e depois da execu\u00e7\u00e3o e documentar cada passo s\u00e3o t\u00e3o essenciais quanto o c\u00f3digo. Ignorar esses cuidados pode levar a falhas cr\u00edticas, perda de dados e impactos diretos no neg\u00f3cio. Em resumo: migration bem feita \u00e9 uma garantia de continuidade e confian\u00e7a no seu sistema. Agora, voc\u00ea se sente pronto para fazer uma? At\u00e9 a pr\u00f3xima!<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se voc\u00ea j\u00e1 precisou migrar um banco de dados em produ\u00e7\u00e3o com usu\u00e1rios ativos e um cron\u00f4metro mental rodando na sua cabe\u00e7a, sabe que migrations \u00e9 uma verdadeira opera\u00e7\u00e3o de risco. E o risco n\u00e3o est\u00e1 s\u00f3 nos dados \u2014 est\u00e1 no impacto que uma migra\u00e7\u00e3o mal planejada pode ter no sistema, na equipe e [&hellip;]<\/p>\n","protected":false},"author":167,"featured_media":13600,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[18],"tags":[],"class_list":["post-13599","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimiento-de-software"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.3 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Migrations: O guia completo para devs<\/title>\n<meta name=\"description\" content=\"Aprenda o que s\u00e3o migrations, tipos, riscos, ferramentas e boas pr\u00e1ticas para migrar sistemas e bancos com seguran\u00e7a e controle.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"O guia completo sobre migrations para devs\" \/>\n<meta property=\"og:description\" content=\"Se voc\u00ea j\u00e1 precisou migrar um banco de dados em produ\u00e7\u00e3o com usu\u00e1rios ativos e um cron\u00f4metro mental rodando na sua cabe\u00e7a, sabe que migrations \u00e9 uma\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Geekhunter\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/geekhunterbr\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-23T18:01:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2025\/05\/pexels-hiteshchoudhary-879109-1-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Geekhunter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@geekhunterbr\" \/>\n<meta name=\"twitter:site\" content=\"@geekhunterbr\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Geekhunter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/migrations\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/migrations\\\/\"},\"author\":{\"name\":\"Geekhunter\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\"},\"headline\":\"O guia completo sobre migrations para devs\",\"datePublished\":\"2025-05-23T18:01:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/migrations\\\/\"},\"wordCount\":1854,\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/migrations\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/pexels-hiteshchoudhary-879109-1-scaled.jpg\",\"articleSection\":[\"Desenvolvimiento de software\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/migrations\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/migrations\\\/\",\"name\":\"Migrations: O guia completo para devs\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/migrations\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/migrations\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/pexels-hiteshchoudhary-879109-1-scaled.jpg\",\"datePublished\":\"2025-05-23T18:01:16+00:00\",\"description\":\"Aprenda o que s\u00e3o migrations, tipos, riscos, ferramentas e boas pr\u00e1ticas para migrar sistemas e bancos com seguran\u00e7a e controle.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/migrations\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/migrations\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/migrations\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/pexels-hiteshchoudhary-879109-1-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/pexels-hiteshchoudhary-879109-1-scaled.jpg\",\"width\":2560,\"height\":1707,\"caption\":\"migrations\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/migrations\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mundo TI\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/category\\\/mundo-ti\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Desenvolvimiento de software\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/category\\\/mundo-ti\\\/desenvolvimiento-de-software\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"O guia completo sobre migrations para devs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/\",\"name\":\"Blog de TI\",\"description\":\"Dicas para o RH e profissionais da \u00e1rea TI\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\",\"name\":\"GeekHunter\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/icon-1.png\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/icon-1.png\",\"width\":300,\"height\":300,\"caption\":\"GeekHunter\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/geekhunterbr\\\/\",\"https:\\\/\\\/x.com\\\/geekhunterbr\",\"https:\\\/\\\/www.instagram.com\\\/geekhunterbr\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/geekhunter-brasil\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@GeekHunterOfficial\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\",\"name\":\"Geekhunter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"caption\":\"Geekhunter\"},\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/author\\\/matias\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Migrations: O guia completo para devs","description":"Aprenda o que s\u00e3o migrations, tipos, riscos, ferramentas e boas pr\u00e1ticas para migrar sistemas e bancos com seguran\u00e7a e controle.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/","og_locale":"pt_BR","og_type":"article","og_title":"O guia completo sobre migrations para devs","og_description":"Se voc\u00ea j\u00e1 precisou migrar um banco de dados em produ\u00e7\u00e3o com usu\u00e1rios ativos e um cron\u00f4metro mental rodando na sua cabe\u00e7a, sabe que migrations \u00e9 uma","og_url":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/","og_site_name":"Blog Geekhunter","article_publisher":"https:\/\/www.facebook.com\/geekhunterbr\/","article_published_time":"2025-05-23T18:01:16+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2025\/05\/pexels-hiteshchoudhary-879109-1-scaled.jpg","type":"image\/jpeg"}],"author":"Geekhunter","twitter_card":"summary_large_image","twitter_creator":"@geekhunterbr","twitter_site":"@geekhunterbr","twitter_misc":{"Escrito por":"Geekhunter","Est. tempo de leitura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/#article","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/"},"author":{"name":"Geekhunter","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400"},"headline":"O guia completo sobre migrations para devs","datePublished":"2025-05-23T18:01:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/"},"wordCount":1854,"publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2025\/05\/pexels-hiteshchoudhary-879109-1-scaled.jpg","articleSection":["Desenvolvimiento de software"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/","name":"Migrations: O guia completo para devs","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/#primaryimage"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2025\/05\/pexels-hiteshchoudhary-879109-1-scaled.jpg","datePublished":"2025-05-23T18:01:16+00:00","description":"Aprenda o que s\u00e3o migrations, tipos, riscos, ferramentas e boas pr\u00e1ticas para migrar sistemas e bancos com seguran\u00e7a e controle.","breadcrumb":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.geekhunter.com/pt/blog\/migrations\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/#primaryimage","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2025\/05\/pexels-hiteshchoudhary-879109-1-scaled.jpg","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2025\/05\/pexels-hiteshchoudhary-879109-1-scaled.jpg","width":2560,"height":1707,"caption":"migrations"},{"@type":"BreadcrumbList","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/migrations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.geekhunter.com/pt/blog\/"},{"@type":"ListItem","position":2,"name":"Mundo TI","item":"https:\/\/www.geekhunter.com/pt/blog\/category\/mundo-ti\/"},{"@type":"ListItem","position":3,"name":"Desenvolvimiento de software","item":"https:\/\/www.geekhunter.com/pt/blog\/category\/mundo-ti\/desenvolvimiento-de-software\/"},{"@type":"ListItem","position":4,"name":"O guia completo sobre migrations para devs"}]},{"@type":"WebSite","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website","url":"https:\/\/www.geekhunter.com\/pt\/blog\/","name":"Blog de TI","description":"Dicas para o RH e profissionais da \u00e1rea TI","publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.geekhunter.com/pt/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization","name":"GeekHunter","url":"https:\/\/www.geekhunter.com\/pt\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2024\/10\/icon-1.png","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2024\/10\/icon-1.png","width":300,"height":300,"caption":"GeekHunter"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/geekhunterbr\/","https:\/\/x.com\/geekhunterbr","https:\/\/www.instagram.com\/geekhunterbr\/","https:\/\/www.linkedin.com\/company\/geekhunter-brasil\/","https:\/\/www.youtube.com\/@GeekHunterOfficial"]},{"@type":"Person","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400","name":"Geekhunter","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","caption":"Geekhunter"},"url":"https:\/\/www.geekhunter.com\/pt\/blog\/author\/matias\/"}]}},"_links":{"self":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/13599","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/users\/167"}],"replies":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/comments?post=13599"}],"version-history":[{"count":0,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/13599\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media\/13600"}],"wp:attachment":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media?parent=13599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/categories?post=13599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/tags?post=13599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}