EasyTaxi e MongoDB - Showcase

2.978 visualizações

Publicada em

Case EasyTaxi vs MongoDB

EasyTaxi e MongoDB - Showcase

  1. 1. DESAFIOS,  APRENDIZADO  e   RESULTADOS   Vinicius  Gracia  (EasyTaxi  CTO)   Yuri  Teixeira  (Rocket  Lead  Developer)  
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  15. 15. GANHOS DE PERFORMANCE 15
  16. 16. GANHOS DE PERFORMANCE 16
  17. 17. GANHOS DE PERFORMANCE 17
  18. 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. 19. OBRIGADO  PELA  PRESENÇA!     E  que  tal  voltar  de  EasyTaxi?!     #justsaying   Vinicius  Gracia:  viniciusgracia@easytaxi.com.br   Yuri  Teixeira:  @yuriteixeira  

×