SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
DESAFIOS,	
  APRENDIZADO	
  e	
  
RESULTADOS	
  
Vinicius	
  Gracia	
  (EasyTaxi	
  CTO)	
   Yuri	
  Teixeira	
  (Rocket	
  Lead	
  Developer)	
  
AGENDA
2
MONGODB:	
  O	
  QUE	
  MOTIVOU	
  NOSSA	
  ESCOLHA?	
  
PROBLEMAS	
  ENFRENTADOS	
  
APLICANDO	
  O	
  QUE	
  APRENDEMOS	
  
GANHOS	
  DE	
  PERFORMANCE	
  
CONCLUSÃO	
  
BREVE	
  HISTÓRIA	
  DA	
  EASYTAXI	
  (TIMELINE)	
  
A brilhante idéia
BREVE HISTÓRIA DA EASYTAXI - TIMELINE
•  Idealizada em Junho de 2011
•  Idéia Inicial: Tracking de transporte coletivo
(um dos sócios sempre perdia o horário do
ônibus…)
•  Até que uma idéia um “pouco” melhor apareceu:
“E se fosse com TAXIS?”
3
INÍCIO DAS OPERAÇÕES
BREVE HISTÓRIA DA EASYTAXI - TIMELINE
•  Presente apenas no Rio de Janeiro
•  “Quick and Dirty”: Soluções rápidas,
como toda startup gosta (e suas
óbvias consequências)
•  Base de usuários pequena naquele
momento, logo, “por enquanto, não
precisamos nos preocupar”
4
INÍCIO DAS OPERAÇÕES - TECNOLOGIA
BREVE HISTÓRIA DA EASYTAXI - TIMELINE
•  API SOAP (overhead desnecessário de
dados onde cada byte importa)
•  Chamadas SOAP mapeadas para um
único script PHP
•  Sem testes e nem build automatizados
•  Banco de dados relacional, schema
inflexível.
5
INTEGRANDO-SE À ROCKET: NOVOS E MAIORES DESAFIOS
BREVE HISTÓRIA DA EASYTAXI - TIMELINE
•  Expansão Nacional e em seguida, Global
•  Tecnologia mais eficiente para suportar o
presente e o futuro do projeto:
•  API RESTful: Menos é mais
•  Todos os endpoints testados
•  Build automatizado com tasks de QA
•  Deadline: 2 semanas
Mas e MongoDB nessa história?
AGENDA
7
MONGODB:	
  O	
  QUE	
  MOTIVOU	
  NOSSA	
  ESCOLHA?	
  
PROBLEMAS	
  ENFRENTADOS	
  
APLICANDO	
  O	
  QUE	
  APRENDEMOS	
  
GANHOS	
  DE	
  PERFORMANCE	
  
CONCLUSÃO	
  
BREVE	
  HISTÓRIA	
  DA	
  EASYTAXI	
  (TIMELINE)	
  
MONGODB: O QUE MOTIVOU NOSSA ESCOLHA?
8
CLIENTES	
   TAXISTAS	
  
§  Write Concerns + Bom desempenho nas leituras: API veloz
§  GIS facilitado: 2d Index + GeoNear
{ geoNear : ”taxi_drivers”, near :
[passenger_x, passenger_y], maxDistance:
maxKmToRadius, spherical: true }
§  $db->drivers->find: Object Mapper Feelings (mas sem o
overhead de um OM)
§  Múltiplas cidades ao redor do mundo, múltiplos schemas,
uma só coleção (Schema-free WINS)
§  FIM DAS MIGRATIONS!
AGENDA
9
MONGODB:	
  O	
  QUE	
  MOTIVOU	
  NOSSA	
  ESCOLHA?	
  
PROBLEMAS	
  ENFRENTADOS	
  
APLICANDO	
  O	
  QUE	
  APRENDEMOS	
  
GANHOS	
  DE	
  PERFORMANCE	
  
CONCLUSÃO	
  
BREVE	
  HISTÓRIA	
  DA	
  EASYTAXI	
  (TIMELINE)	
  
Heranças do Universo Relacional:
PROBLEMAS ENFRENTADOS
10
•  #FAIL 1: Arquitetando a persistência como
antigamente: mais consultas do que o necessário
•  #FAIL 2: Falta de atenção nos índices (que agora são
definidos no código, antes de serem usados).
•  #FAIL 3: Alta-disponibilidade no mongo: alguns
detalhes deixados para trás
EFEITOS: Lentidão no Backoffice, na extração de
relatórios, afetando o tempo de resposta da API.
AGENDA
11
MONGODB:	
  O	
  QUE	
  MOTIVOU	
  NOSSA	
  ESCOLHA?	
  
PROBLEMAS	
  ENFRENTADOS	
  
APLICANDO	
  O	
  QUE	
  APRENDEMOS	
  
GANHOS	
  DE	
  PERFORMANCE	
  
CONCLUSÃO	
  
BREVE	
  HISTÓRIA	
  DA	
  EASYTAXI	
  (TIMELINE)	
  
APLICANDO O QUE APRENDEMOS
12
§  REMODELAGEM TOTAL DAS
COLLECTIONS
§  SERVER HIDDEN PARA RELATÓRIOS NO
REPLICA SET
§  ANÁLISE DE TODAS AS QUERIES E
INDEXES
AGENDA
13
MONGODB:	
  O	
  QUE	
  MOTIVOU	
  NOSSA	
  ESCOLHA?	
  
PROBLEMAS	
  ENFRENTADOS	
  
APLICANDO	
  O	
  QUE	
  APRENDEMOS	
  
GANHOS	
  DE	
  PERFORMANCE	
  
CONCLUSÃO	
  
BREVE	
  HISTÓRIA	
  DA	
  EASYTAXI	
  (TIMELINE)	
  
GANHOS DE PERFORMANCE
14
§  12 MIL ACESSOS POR MINUTO - CHEGANDO A 30 MIL
§  TEMPO DE RESPOSTA MENOR QUE 30 MILISEGUNDOS
§  QUERIES COM MENOS 10 MILESEGUNDOS EM MÉDIA
GANHOS DE PERFORMANCE
15
GANHOS DE PERFORMANCE
16
GANHOS DE PERFORMANCE
17
AGENDA
18
MONGODB:	
  O	
  QUE	
  MOTIVOU	
  NOSSA	
  ESCOLHA?	
  
PROBLEMAS	
  ENFRENTADOS	
  
APLICANDO	
  O	
  QUE	
  APRENDEMOS	
  
GANHOS	
  DE	
  PERFORMANCE	
  
CONCLUSÃO	
  
BREVE	
  HISTÓRIA	
  DA	
  EASYTAXI	
  (TIMELINE)	
  
OBRIGADO	
  PELA	
  PRESENÇA!	
  	
  
E	
  que	
  tal	
  voltar	
  de	
  EasyTaxi?!	
  	
  
#justsaying	
  
Vinicius	
  Gracia:	
  viniciusgracia@easytaxi.com.br	
   Yuri	
  Teixeira:	
  @yuriteixeira	
  

Mais conteúdo relacionado

Destaque

Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Emerson Macedo
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScriptHeider Lopes
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosCaio Cutrim
 
Equipe Origami City
Equipe Origami CityEquipe Origami City
Equipe Origami CityCEPMBB
 
Node js - O poder do JavaScript do lado do servidor
Node js  - O poder do JavaScript do lado do servidorNode js  - O poder do JavaScript do lado do servidor
Node js - O poder do JavaScript do lado do servidorRomulo Fagundes
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o NodejsCaio Cutrim
 
MEAN Full Stack JavaScript - TaSafoConf 2015
MEAN Full Stack JavaScript - TaSafoConf 2015MEAN Full Stack JavaScript - TaSafoConf 2015
MEAN Full Stack JavaScript - TaSafoConf 2015Kaio Valente
 
NodeJS - E/S não-bloqueante - Dirigido a Eventos
NodeJS - E/S não-bloqueante - Dirigido a EventosNodeJS - E/S não-bloqueante - Dirigido a Eventos
NodeJS - E/S não-bloqueante - Dirigido a EventosÁtila Camurça
 
Guia utilização e desenvolvimento de aplicação no PaaS c9.io
Guia utilização e desenvolvimento de aplicação no PaaS c9.ioGuia utilização e desenvolvimento de aplicação no PaaS c9.io
Guia utilização e desenvolvimento de aplicação no PaaS c9.iomarcochella
 
Adwords Express: como anunciar?
Adwords Express: como anunciar?Adwords Express: como anunciar?
Adwords Express: como anunciar?Mateada
 
Mean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEANMean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEANJoão Gabriel Lima
 
Node.js em produção, javascript no server side
Node.js em produção, javascript no server sideNode.js em produção, javascript no server side
Node.js em produção, javascript no server sideThiago Avelino
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introduçãoPablo Feijó
 
[NodeConf.eu 2014] Scaling AB Testing on Netflix.com with Node.js
[NodeConf.eu 2014] Scaling AB Testing on Netflix.com with Node.js[NodeConf.eu 2014] Scaling AB Testing on Netflix.com with Node.js
[NodeConf.eu 2014] Scaling AB Testing on Netflix.com with Node.jsAlex Liu
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsRafael Soares
 
1 encontro Node.JS Brasil
1 encontro Node.JS Brasil1 encontro Node.JS Brasil
1 encontro Node.JS BrasilEmerson Macedo
 

Destaque (20)

No Llores
No LloresNo Llores
No Llores
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScript
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem Segredos
 
Equipe Origami City
Equipe Origami CityEquipe Origami City
Equipe Origami City
 
Node js - O poder do JavaScript do lado do servidor
Node js  - O poder do JavaScript do lado do servidorNode js  - O poder do JavaScript do lado do servidor
Node js - O poder do JavaScript do lado do servidor
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
MEAN Full Stack JavaScript - TaSafoConf 2015
MEAN Full Stack JavaScript - TaSafoConf 2015MEAN Full Stack JavaScript - TaSafoConf 2015
MEAN Full Stack JavaScript - TaSafoConf 2015
 
NodeJS - E/S não-bloqueante - Dirigido a Eventos
NodeJS - E/S não-bloqueante - Dirigido a EventosNodeJS - E/S não-bloqueante - Dirigido a Eventos
NodeJS - E/S não-bloqueante - Dirigido a Eventos
 
Guia utilização e desenvolvimento de aplicação no PaaS c9.io
Guia utilização e desenvolvimento de aplicação no PaaS c9.ioGuia utilização e desenvolvimento de aplicação no PaaS c9.io
Guia utilização e desenvolvimento de aplicação no PaaS c9.io
 
Adwords Express: como anunciar?
Adwords Express: como anunciar?Adwords Express: como anunciar?
Adwords Express: como anunciar?
 
Mean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEANMean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEAN
 
Javascript nos dias de hoje
Javascript nos dias de hojeJavascript nos dias de hoje
Javascript nos dias de hoje
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Node.js em produção, javascript no server side
Node.js em produção, javascript no server sideNode.js em produção, javascript no server side
Node.js em produção, javascript no server side
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introdução
 
[NodeConf.eu 2014] Scaling AB Testing on Netflix.com with Node.js
[NodeConf.eu 2014] Scaling AB Testing on Netflix.com with Node.js[NodeConf.eu 2014] Scaling AB Testing on Netflix.com with Node.js
[NodeConf.eu 2014] Scaling AB Testing on Netflix.com with Node.js
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
1 encontro Node.JS Brasil
1 encontro Node.JS Brasil1 encontro Node.JS Brasil
1 encontro Node.JS Brasil
 

Semelhante a MongoDB at EasyTaxi: Challenges, Learning and Performance Gains

99 Taxi - SplunkLive! São Paulo 2015
99 Taxi - SplunkLive! São Paulo 201599 Taxi - SplunkLive! São Paulo 2015
99 Taxi - SplunkLive! São Paulo 2015Splunk
 
Docker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerDocker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerAndré Rocha
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Daniel Lopes
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGustavo Concon
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo RealLeandro Silva
 
QCon 2011
QCon 2011QCon 2011
QCon 2011Ismael
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014Marcio Marchini
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Leandro Silva
 
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringTDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringFelipe Klerk Signorini
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentasluanrjesus
 
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Rodrigo Vieira
 
Do monolito aos microserviços com Docker (PHPSP+IMA)
Do monolito aos microserviços com Docker (PHPSP+IMA)Do monolito aos microserviços com Docker (PHPSP+IMA)
Do monolito aos microserviços com Docker (PHPSP+IMA)Wellington Silva
 
O futuro do big data
O futuro do big dataO futuro do big data
O futuro do big dataCaio Gomes
 
A Evolução do Front end
A Evolução do Front endA Evolução do Front end
A Evolução do Front endDouglas Matoso
 
O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloIsmael
 
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-EndsSingle-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-EndsDaiana Cambruzzi Avila
 
TDC Floripa (2017) - MicroServiços para Não StartUps
TDC Floripa (2017) - MicroServiços para Não StartUpsTDC Floripa (2017) - MicroServiços para Não StartUps
TDC Floripa (2017) - MicroServiços para Não StartUpsGiscard Faria
 

Semelhante a MongoDB at EasyTaxi: Challenges, Learning and Performance Gains (20)

99 Taxi - SplunkLive! São Paulo 2015
99 Taxi - SplunkLive! São Paulo 201599 Taxi - SplunkLive! São Paulo 2015
99 Taxi - SplunkLive! São Paulo 2015
 
Docker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerDocker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na Konker
 
Novas Fronteiras
Novas FronteirasNovas Fronteiras
Novas Fronteiras
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo Real
 
QCon 2011
QCon 2011QCon 2011
QCon 2011
 
Workshop Bny Mellon
Workshop   Bny MellonWorkshop   Bny Mellon
Workshop Bny Mellon
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012
 
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringTDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentas
 
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
 
Do monolito aos microserviços com Docker (PHPSP+IMA)
Do monolito aos microserviços com Docker (PHPSP+IMA)Do monolito aos microserviços com Docker (PHPSP+IMA)
Do monolito aos microserviços com Docker (PHPSP+IMA)
 
O futuro do big data
O futuro do big dataO futuro do big data
O futuro do big data
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
A Evolução do Front end
A Evolução do Front endA Evolução do Front end
A Evolução do Front end
 
O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São Paulo
 
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-EndsSingle-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
 
TDC Floripa (2017) - MicroServiços para Não StartUps
TDC Floripa (2017) - MicroServiços para Não StartUpsTDC Floripa (2017) - MicroServiços para Não StartUps
TDC Floripa (2017) - MicroServiços para Não StartUps
 

MongoDB at EasyTaxi: Challenges, Learning and Performance Gains

  • 1. DESAFIOS,  APRENDIZADO  e   RESULTADOS   Vinicius  Gracia  (EasyTaxi  CTO)   Yuri  Teixeira  (Rocket  Lead  Developer)  
  • 2. AGENDA 2 MONGODB:  O  QUE  MOTIVOU  NOSSA  ESCOLHA?   PROBLEMAS  ENFRENTADOS   APLICANDO  O  QUE  APRENDEMOS   GANHOS  DE  PERFORMANCE   CONCLUSÃO   BREVE  HISTÓRIA  DA  EASYTAXI  (TIMELINE)  
  • 3. A brilhante idéia BREVE HISTÓRIA DA EASYTAXI - TIMELINE •  Idealizada em Junho de 2011 •  Idéia Inicial: Tracking de transporte coletivo (um dos sócios sempre perdia o horário do ônibus…) •  Até que uma idéia um “pouco” melhor apareceu: “E se fosse com TAXIS?” 3
  • 4. INÍCIO DAS OPERAÇÕES BREVE HISTÓRIA DA EASYTAXI - TIMELINE •  Presente apenas no Rio de Janeiro •  “Quick and Dirty”: Soluções rápidas, como toda startup gosta (e suas óbvias consequências) •  Base de usuários pequena naquele momento, logo, “por enquanto, não precisamos nos preocupar” 4
  • 5. INÍCIO DAS OPERAÇÕES - TECNOLOGIA BREVE HISTÓRIA DA EASYTAXI - TIMELINE •  API SOAP (overhead desnecessário de dados onde cada byte importa) •  Chamadas SOAP mapeadas para um único script PHP •  Sem testes e nem build automatizados •  Banco de dados relacional, schema inflexível. 5
  • 6. INTEGRANDO-SE À ROCKET: NOVOS E MAIORES DESAFIOS BREVE HISTÓRIA DA EASYTAXI - TIMELINE •  Expansão Nacional e em seguida, Global •  Tecnologia mais eficiente para suportar o presente e o futuro do projeto: •  API RESTful: Menos é mais •  Todos os endpoints testados •  Build automatizado com tasks de QA •  Deadline: 2 semanas Mas e MongoDB nessa história?
  • 7. AGENDA 7 MONGODB:  O  QUE  MOTIVOU  NOSSA  ESCOLHA?   PROBLEMAS  ENFRENTADOS   APLICANDO  O  QUE  APRENDEMOS   GANHOS  DE  PERFORMANCE   CONCLUSÃO   BREVE  HISTÓRIA  DA  EASYTAXI  (TIMELINE)  
  • 8. MONGODB: O QUE MOTIVOU NOSSA ESCOLHA? 8 CLIENTES   TAXISTAS   §  Write Concerns + Bom desempenho nas leituras: API veloz §  GIS facilitado: 2d Index + GeoNear { geoNear : ”taxi_drivers”, near : [passenger_x, passenger_y], maxDistance: maxKmToRadius, spherical: true } §  $db->drivers->find: Object Mapper Feelings (mas sem o overhead de um OM) §  Múltiplas cidades ao redor do mundo, múltiplos schemas, uma só coleção (Schema-free WINS) §  FIM DAS MIGRATIONS!
  • 9. AGENDA 9 MONGODB:  O  QUE  MOTIVOU  NOSSA  ESCOLHA?   PROBLEMAS  ENFRENTADOS   APLICANDO  O  QUE  APRENDEMOS   GANHOS  DE  PERFORMANCE   CONCLUSÃO   BREVE  HISTÓRIA  DA  EASYTAXI  (TIMELINE)  
  • 10. Heranças do Universo Relacional: PROBLEMAS ENFRENTADOS 10 •  #FAIL 1: Arquitetando a persistência como antigamente: mais consultas do que o necessário •  #FAIL 2: Falta de atenção nos índices (que agora são definidos no código, antes de serem usados). •  #FAIL 3: Alta-disponibilidade no mongo: alguns detalhes deixados para trás EFEITOS: Lentidão no Backoffice, na extração de relatórios, afetando o tempo de resposta da API.
  • 11. AGENDA 11 MONGODB:  O  QUE  MOTIVOU  NOSSA  ESCOLHA?   PROBLEMAS  ENFRENTADOS   APLICANDO  O  QUE  APRENDEMOS   GANHOS  DE  PERFORMANCE   CONCLUSÃO   BREVE  HISTÓRIA  DA  EASYTAXI  (TIMELINE)  
  • 12. APLICANDO O QUE APRENDEMOS 12 §  REMODELAGEM TOTAL DAS COLLECTIONS §  SERVER HIDDEN PARA RELATÓRIOS NO REPLICA SET §  ANÁLISE DE TODAS AS QUERIES E INDEXES
  • 13. AGENDA 13 MONGODB:  O  QUE  MOTIVOU  NOSSA  ESCOLHA?   PROBLEMAS  ENFRENTADOS   APLICANDO  O  QUE  APRENDEMOS   GANHOS  DE  PERFORMANCE   CONCLUSÃO   BREVE  HISTÓRIA  DA  EASYTAXI  (TIMELINE)  
  • 14. GANHOS DE PERFORMANCE 14 §  12 MIL ACESSOS POR MINUTO - CHEGANDO A 30 MIL §  TEMPO DE RESPOSTA MENOR QUE 30 MILISEGUNDOS §  QUERIES COM MENOS 10 MILESEGUNDOS EM MÉDIA
  • 18. AGENDA 18 MONGODB:  O  QUE  MOTIVOU  NOSSA  ESCOLHA?   PROBLEMAS  ENFRENTADOS   APLICANDO  O  QUE  APRENDEMOS   GANHOS  DE  PERFORMANCE   CONCLUSÃO   BREVE  HISTÓRIA  DA  EASYTAXI  (TIMELINE)  
  • 19. OBRIGADO  PELA  PRESENÇA!     E  que  tal  voltar  de  EasyTaxi?!     #justsaying   Vinicius  Gracia:  viniciusgracia@easytaxi.com.br   Yuri  Teixeira:  @yuriteixeira