100% acharam este documento útil (1 voto)
53 visualizações37 páginas

PostgreSQL na Arquitetura do iFood

O documento descreve como o iFood usa PostgreSQL em sua plataforma de dados, incluindo: (1) O uso de PostgreSQL em mais de 50 bancos de dados para armazenar dados de microserviços; (2) Uma nova plataforma de busca de restaurantes que usa replicação lógica de PostgreSQL para integrar dados de origens múltiplas; (3) A troca de mensagens entre serviços usando AWS SNS e SQS.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
100% acharam este documento útil (1 voto)
53 visualizações37 páginas

PostgreSQL na Arquitetura do iFood

O documento descreve como o iFood usa PostgreSQL em sua plataforma de dados, incluindo: (1) O uso de PostgreSQL em mais de 50 bancos de dados para armazenar dados de microserviços; (2) Uma nova plataforma de busca de restaurantes que usa replicação lógica de PostgreSQL para integrar dados de origens múltiplas; (3) A troca de mensagens entre serviços usando AWS SNS e SQS.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

PostgreSQL na plataforma

de dados do iFood

Veja como o iFood trabalha com dados, saindo do app,


passando pelos micro-serviços, residindo em várias
instâncias do PostgreSQL, e sendo populados por completo
em nosso Datalake.

Matheus de Oliveira

<[Link]@[Link]>

[Link] (2018-08-03)
O menu dessa palestra

1. Evolução tecnológica do iFood


2. Do mono-lito aos micro-serviços
3. O PostgreSQL no iFood
4. Plataforma de busca
5. Troca de mensagens entre serviços
6. Juntando tudo!
 
Evolução tecnológica do iFood
Em números

   4    530+ 8.200.000+


países cidades pedidos por mês

1.500+   100%+  
pedidos entregues por crescimento ao
minuto ano
E ainda temos muita margem para crescer

Ref: [Link]
comida-delivery/
Mas não é tão simples quanto parece...
Restaurante Consumidor Entregador
Padrão de consumo
Time Tecnologia meados 2015
HOJE
Novo prédio em Campinas
(time de tecnologia) - 2017

Venha trabalhar conosco: [Link]/br/vagas


Micro-serviços no iFood
Arquitetura monolítica
End Users

Internal Network

Website
Restaurant
And Integrations
Webservice

Backoffice Database

Analytics

Backoffice
Operators
Arquitetura de micro-serviços
End Users Internal Network

Website Legacy

Microservice

Webservice

Backoffice
Restaurant
And Integrations
Discovery

API Gateway Restaurant

Integration

Order
Backoffice
Operators
Logistic

Payment

...

+50 microserviços
Nossa arquitetura padrão
Vamos de nir um padrão...
O PostgreSQL no iFood
Hoje temos mais de 50 bancos de dados
A maioria altamente transacionais
Alguns com muita escrita, outros com muitas leituras
Alguns com alta taxa de UPDATE, outros com
arquitetura de banco imutável (append-only)
Em geral os esquemas são pequenos, menos de 50
tabelas (um deles tem apenas uma tabela, por exemplo)
Mas os tamanhos variam de alguns megabytes até mais
de 1TB
Plataforma de busca de restaurantes
O problema: dados de vários serviços integrados na mesma tela/visualização
Plataforma de busca de restaurantes
Solução atual!
Plataforma de busca de restaurantes
Problemas com a solução atual:
Sincronização dos dados complexa, difícil garantir
consistência
Tempo de sincronia alto quando muita alteração é feita e
eventual perda de sincronia
Várias tecnologias na mesma plataforma
Di culdade de debug (origem dos dados espalhados,
tornando difícil "juntar" tudo e validar)
Di culdade em gerenciar caches entre as várias camadas
Dependência de outros serviços (que poderiam não ser
críticos, como o "Location Service"), di culta manutenção
e escalabilidade
Nova plataforma de busca de restaurantes
origem dos dados

Instâncias dos serviços de origem, todas usando PostgreSQL


como base de dados
Nova plataforma de busca de restaurantes
extração dos dados

Replicação das bases PostgreSQL de cada serviço para uma


base central (cada origem num schema), usando replicação
lógica (nativa)
Nova plataforma de busca de restaurantes
processamento dos dados

Cada tabela replicada possui uma trigger, que processa os


dados e alimenta tabelas com esquema otimizados pra
busca (de-normalizados)
Nova plataforma de busca de restaurantes
isolamento das tabelas otimizadas

Por sua vez, apenas as tabelas otimizadas são replicadas (via


replicação lógica) para a base dedicada para busca
Nova plataforma de busca de restaurantes
balanceamento de carga, elasticidade na busca

Essa base replica, usando replicação física nativa, para N


instâncias num group de Auto Scaling.
N irá variar dependendo do uso no horário
Nova plataforma de busca de restaurantes
camada de serviço

Por m, o serviço conecta no ELB (Elastic Load Balancer) das


instâncias em Auto Scaling para responder às buscas dos
usuários
Nova plataforma de busca de restaurantes
integração com data intelligence

Integração com serviço de data intelligence para prover


ranking no contexto do usuário
Troca de mensagens e dados entre
serviços
AWS SNS - Simple Noti cation Service
Tópicos que recebem mensagens e repassam para
múltiplos receptores com diversos protocolos (como
la SQS, e-mail, SMS, chamada HTTP, etc.)
No iFood, sempre que um serviço quer enviar eventos
para outros consumirem, este serviço faz uma publicação
desse evento num tópico SNS.

AWS SQS - Simple Queue Service


Fila altamente escalável.
No iFood, sempre que um serviço quer receber eventos
de outro, criamos uma la SQS para este que assina o
tópico SNS do serviço de origem.
SNS/SQS - Exemplo
Juntando tudo!
(visão geral)
Datalake
Perguntas?
Obrigado!
Matheus de Oliveira
[Link]@[Link]

[Link] -
/join #postgresql,#postgresql-br: @MatheusOl
Twitter: @matioli_matheus
LinkedIn: [Link]/in/matheusdeoliveira/
SlideShare: [Link]/matheus_de_oliveira

Você também pode gostar