Voltar para o blog
Machine Learning

Etsy migra arquitetura MySQL com 1000 shards e 425 TB para Vitess e aprimora escalabilidade

11 de abril de 2026
05:02
InfraestruturaEscalabilidadeengenharia de softwareMySQLOpen SourceShardingVitessArquitetura de DadosBanco de Dados DistribuídoEtsy
Etsy migra arquitetura MySQL com 1000 shards e 425 TB para Vitess e aprimora escalabilidade

A equipe de engenharia da Etsy concluiu recentemente a migração de sua infraestrutura de sharding MySQL, que abrange cerca de 1000 shards e 425 TB de dados, para o sistema Vitess. Essa transição representa um avanço significativo na forma como a empresa gerencia a distribuição e roteamento dos dados, trazendo melhorias na escalabilidade, manutenção e flexibilidade da plataforma.

Contexto da arquitetura original e desafios enfrentados

Desde aproximadamente 2010, a Etsy utiliza uma arquitetura de MySQL sharded para armazenar a maior parte dos seus dados de produção. O sistema original contava com uma lógica proprietária de sharding, com cerca de 1000 shards e um volume total de 425 TB, suportando até 1,7 milhão de requisições por segundo. O acesso ao banco era feito por meio de uma camada interna de Object-Relational Mapping (ORM), que mapeava cada tabela para um modelo específico.

Imagem relacionada ao artigo de InfoQ AI/ML
Imagem de apoio da materia original.

Para as tabelas shardadas, o ORM definia um campo único chamado shardifier ID, que determinava a qual shard cada registro pertencia. Embora a maioria dos modelos usasse shop_id ou user_id como chave de sharding, no total mais de 30 IDs diferentes eram utilizados, com o mapeamento de registros para shards armazenado em um banco de dados índice único e não shardado.

Apesar de garantir escalabilidade e limitar o impacto de falhas a partes restritas do tráfego, essa abordagem apresentava limitações importantes: operações de escalonamento eram lentas e manuais, o banco índice representava um ponto único de falha, e os desenvolvedores precisavam gerenciar manualmente a complexidade do sharding.

Por que migrar para Vitess?

Vitess é um sistema open source de clustering para MySQL que permite escalabilidade horizontal por meio de sharding transparente. Originalmente, Vitess atuava como uma camada entre o ORM e o banco de dados, roteando as consultas, mas sem substituir a lógica de mapeamento de shards do ORM. Um dos recursos centrais do Vitess são os vindexes, que definem como os dados da aplicação são mapeados para shards e como as consultas são roteadas.

A Etsy decidiu migrar para Vitess para manter compatibilidade com MySQL, eliminar o banco índice como ponto único de falha e esconder a complexidade do sharding dos desenvolvedores, automatizando o roteamento e o gerenciamento dos shards.

Estratégia e desafios da migração

Um desafio inicial foi que o mapeamento de shards do ORM da Etsy era aleatório e não seguia uma lógica algorítmica, o que tornaria a adoção direta dos vindexes padrão do Vitess inviável, pois exigiria re-sharding manual de todo o banco, um processo que poderia levar anos.

Para superar isso, a equipe optou por desenvolver vindexes personalizados que replicassem a lógica de shard existente dentro do Vitess. Isso permitiu testar o funcionamento dos vindexes no ambiente da Etsy sem a complexidade e o risco de mover dados imediatamente.

A migração envolveu também o redesenho de partes do modelo de dados para suportar melhor o sharding, a escolha de uma chave de shard adequada e a migração gradual do tráfego de produção para o novo ambiente, com verificações rigorosas de consistência dos dados.

Resultados e lições aprendidas

Após cinco anos de trabalho intenso, aproximadamente 2.500 pull requests e mais de 6.000 queries, a Etsy concluiu com sucesso a migração da gestão dos shards para os vindexes do Vitess. A empresa publicou uma série de artigos detalhando o processo, especialmente focados na migração da plataforma de pagamentos, compartilhando os desafios do modelo de dados, o esforço de cut-over e a avaliação dos riscos envolvidos.

Apesar dos avanços, a equipe reconhece que substituir a infraestrutura de banco de dados de uma base de código da escala e idade da Etsy foi um desafio complexo, que exigiu planejamento, testes e uma abordagem gradual para minimizar riscos.

Links úteis para aprofundamento