Uma das propriedades mais agradáveis de uma arquitetura de backend bem projetada é que a migração de provedor pode acontecer inteiramente atrás de uma fronteira de API interna, invisível para qualquer cliente web ou móvel que consuma o seu serviço. Conseguir isso depende menos do provedor específico para o qual se está migrando e mais de essa fronteira já existir de forma limpa no seu código antes de a migração começar.
O princípio de design central é que as aplicações cliente (front-ends web, aplicativos móveis, outros serviços internos) devem conversar com a sua própria API, que retorna o seu próprio formato de resposta normalizado, em vez de conversar diretamente com um provedor de geocodificação terceiro ou de receber o formato de resposta bruto desse provedor repassado sem alterações. Quando essa fronteira existe, uma migração de provedor só afeta a implementação por trás do seu próprio endpoint, e todos os consumidores desse endpoint ficam intactos por construção, e não por sorte.
Se essa fronteira ainda não existe, ou seja, se os clientes hoje recebem o formato de resposta bruto de um provedor específico, uma migração é um momento razoável para introduzi-la, mesmo que isso acrescente um pouco de trabalho extra no início. Os passos são mais ou menos estes:
Defina o seu próprio formato de resposta normalizado, escolhendo nomes de campos que façam sentido para a sua aplicação, em vez de copiar ao pé da letra as convenções de um provedor específico
Construa o mapeamento interno da resposta real do provedor atual para esse formato normalizado e atualize todos os clientes para consumirem o formato normalizado em vez da resposta bruta do provedor
Depois que todos os clientes forem atualizados para o formato normalizado e implantados, a migração de provedor propriamente dita, por trás dessa fronteira, passa a ser uma mudança apenas no backend, sem nenhuma coordenação com os clientes
Isso dá realmente mais trabalho na primeira vez, mas compensa em cada migração seguinte, já que o passo 3 passa a ser o único necessário para qualquer troca futura de provedor.
Como os hosts de compatibilidade do My Geocode preservam exatamente o formato de resposta de um provedor conhecido, as equipes que ainda não construíram essa camada de normalização podem usar um host de compatibilidade como passo intermediário, sem reescrever o código de mapeamento existente, ganhando tempo para construir a camada de normalização com calma mais tarde, sem um prazo urgente forçando uma versão apressada agora. A visão geral dos hosts de compatibilidade apresenta o conjunto completo disponível.
A autenticação do próprio serviço de backend aceita um cabeçalho X-API-Key, um cabeçalho Authorization: Bearer, autenticação HTTP Basic ou um parâmetro de consulta, o que se encaixar mais naturalmente nas convenções de requisições de saída que o seu backend já usa, e o uso da cota fica visível pelos cabeçalhos de resposta em cada chamada, documentados em /docs/rate-limits/, que o seu backend pode monitorar de forma centralizada sem que nenhum cliente precise sequer saber que a cota existe como conceito.
Uma migração no servidor invisível para os clientes não é um truque especial, é simplesmente o resultado natural de uma arquitetura que já tem uma fronteira adequada. Construir essa fronteira, mesmo sob a pressão de uma migração, vale o investimento justamente porque tira a coordenação com os clientes de todas as migrações depois desta.
Automações no-code construídas sobre uma etapa de geocodificação exigem uma abordagem de migração diferente da usada em código próprio. Veja como lidar com essa troca.
Trocar de fornecedor de dados de localização não é apenas uma decisão técnica. Veja o que revisar do lado do processamento de dados e da privacidade nessa mudança.
Desligar a chave de API de um provedor antigo cedo demais ou tarde demais traz riscos nos dois casos. Veja como aposentar credenciais corretamente quando uma migração estiver concluída.