BT

Migrando o Medium para usar React.js e GraphQL

| por Sergio De Simone Seguir 21 Seguidores , traduzido por Mário Nunes Lima Seguir 1 Seguidores em 25 jun 2018. Tempo estimado de leitura: 2 minutos |

A revista digital Medium migrou seu sistema para uma nova arquitetura baseada em React.js e GraphQL. Sasha T. Solomon, engenheira da Medium, explicou os dois grandes objetivos dessa migração, disponibilizar o novo sistema aos usuários sem prejudicar o desenvolvimento de novos recursos.

Migrar um sistema que está usando uma tecnologia um pouco mais antiga não é uma decisão fácil de tomar. Além dos custos, deve-se levar em conta quanto tempo levará até que os usuários vejam os benefícios do novo sistema implantado e, possivelmente, não seja possível aguardar a migração inteira antes que isso aconteça. Além disso, é necessário garantir que seu sistema permaneça estável durante toda a migração e que possa evoluir, corrigindo bugs ou implementando novos recursos.

Cinco anos depois do desenvolvimento inicial de sua plataforma, esse era exatamente o caso da Medium, como explica Sasha:

Migrar um sistema inteiro para novas ferramentas e estruturas não é uma tarefa fácil. E fazendo isso sem afetar o desenvolvimento de recursos? Isso é ainda mais difícil

A equipe de engenharia da Medium planejou um caminho para a migração de seus serviços, com o objetivo de permitir que as pessoas começassem a usar o novo sistema o mais rápido possível e, ao mesmo tempo, sem prejudicar as mudanças no sistema existente.

A primeira etapa da migração foi reescrever a Medium com o React.js na parte cliente e usar GraphQL como uma camada de interface para a API existente. No client-side com o GraphQL, a Medium usa o framework Apollo Client.

Nesta fase, o antigo e o novo sistema coexistiam, cada um servindo um conjunto diferente de páginas. Essa abordagem teve o benefício de não exigir uma reescrita completa do lado do servidor e não afetou o desenvolvimento de novos recursos para o sistema antigo. Uma decisão importante tomada pela equipe foi usar protocol buffers para descrever a API legada como um esquema para fazer a interface com o GraphQL.

Em uma segunda fase da migração, que será começada em breve, o código do servidor será refatorado em serviços para alimentar a camada GraphQL, que usará o Sangria como sua estrutura no lado do servidor.

Espera-se que o uso do GraphQL traga uma grande vantagem, já que sua estrutura maior é mapeada diretamente em serviços mais modulares e mais simples, o que, por sua vez, deve melhorar seu desempenho também. Os novos serviços, que usarão o gRPC para conversar com o serviço GraphQL, podem ser construídos de maneira totalmente independente dos serviços antigos, enquanto os serviços antigos são mantidos em locais para alimentar a antiga API.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

BT