Persistência Poliglota na Prática
-
Upload
ivayr-farah-netto -
Category
Technology
-
view
574 -
download
5
description
Transcript of Persistência Poliglota na Prática
![Page 1: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/1.jpg)
http://hdwallpapersx.com/wp-content/uploads/2013/09/Green-Parakeet-Wallpaper.jpg
persistência poliglota na prática
@nettofarah
![Page 2: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/2.jpg)
- - Essas crianças de hoje são verdadeiros poliglotas. !
- - Verdadeiros o que? !
- - Poliglotas. Esses das cavernas.
![Page 4: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/4.jpg)
8tracks
![Page 5: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/5.jpg)
![Page 6: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/6.jpg)
stats
• users: 13.3mi!
• public playlists: 1.8mi (4,2 mi total)!
• uploaded tracks: 31mi!
• requests/minute: ~100k
![Page 7: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/7.jpg)
a melhor ferramenta para o problema
http://peopletakingpictureswithipads.tumblr.com/
![Page 8: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/8.jpg)
melhor ferramenta
http://peopletakingpictureswithipads.tumblr.com/
![Page 9: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/9.jpg)
para o problema!
http://peopletakingpictureswithipads.tumblr.com/
![Page 10: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/10.jpg)
esforço humano esforço da máquina
![Page 11: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/11.jpg)
F.C.P.P. = dev <3 + machine <3
![Page 12: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/12.jpg)
modelo relacional• funciona bem! (até certo ponto)
• confiável
• no mercado há muito tempo
• já foi bem testado
• bem documentado
![Page 13: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/13.jpg)
o modelo relacional
![Page 14: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/14.jpg)
NoSQL
• relativamente novo
• resolve problemas específicos
• developer friendly
![Page 15: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/15.jpg)
NoSQL
![Page 16: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/16.jpg)
O que a gente já testou
![Page 17: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/17.jpg)
Porque você deveria experimentar NoSQL
![Page 18: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/18.jpg)
Porque NoSQL
• pode escalar muito bem
• pode resolver de forma mais elegante
• é empolgante para os devs
• data-first*
![Page 19: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/19.jpg)
Por que desistir de NoSQL?
![Page 20: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/20.jpg)
Complexidade
![Page 21: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/21.jpg)
pode custar caro
![Page 22: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/22.jpg)
muitas mudanças
![Page 23: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/23.jpg)
falta de ferramentas adequadas
![Page 24: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/24.jpg)
reinventar a roda
![Page 25: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/25.jpg)
como decidir?
• documentação
• comunidades (stack overflow, github, forums, irc, listas de email)
• suporte
• quão adequado pra sua infra?
![Page 26: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/26.jpg)
O que funcionou bem pra nós
![Page 27: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/27.jpg)
![Page 28: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/28.jpg)
primário
réplica slave
- escrita - leituras leves
- leitura - queries pesadas
![Page 29: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/29.jpg)
auxiliar players
primário
réplica slave
![Page 30: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/30.jpg)
![Page 31: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/31.jpg)
cache
é um balde onde a gente joga as coisas
![Page 32: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/32.jpg)
aquela aula chata de estrutura de dados…
só que funciona
![Page 33: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/33.jpg)
redis
![Page 34: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/34.jpg)
redis
next next next next
head
tail
![Page 35: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/35.jpg)
• super fácil de deployar
• não usamos para o tráfego comum
• joga qualquer coisa lá dentro
![Page 36: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/36.jpg)
• 16k rpm
• full text search
• autocomplete
• busca personalizada
• cluster de 4 máquinas
![Page 37: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/37.jpg)
• tsv
• optimizado para IO
• queries pesadas/bigdata com SQL
• paralelo/distribuído
![Page 38: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/38.jpg)
e como é que a gente fez?
![Page 39: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/39.jpg)
testes em produção!
![Page 40: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/40.jpg)
rode os sistemas lado a lado
![Page 41: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/41.jpg)
em-proxy
1 $> em-proxy -l 8080 \!2 -r localhost:8081 \!3 -d mysql.8tracks.com:8082, \!4 postgres.8tracks.com:8082 -v!
![Page 42: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/42.jpg)
1 Proxy.start(host: "0.0.0.0", p: 80) do |conn|! 2 conn.server :srv, host: "127.0.0.1", p: 81! 3 ! 4 # modificar pra outro protocolo! 5 conn.on_data do |data|! 6 transform(data)! 7 end! 8 ! 9 conn.on_finish do |backend, name|!10 # ignora a resposta!11 unbind if backend == :srv!12 end!13 end!
transformar para outro protocolo
ignorar a resposta
![Page 43: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/43.jpg)
servir aos poucos
1 elasticsearch_rate = 0.2!2 if rand() =< elasticsearch_rate!3 ElasticSearch.query('justin bieber')!4 else!5 SolrSearch.query('justin bieber')!6 end!
![Page 44: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/44.jpg)
feature toggles
1 tags = []!2 if FEATURES.explore_beta(current_user)!3 tags = RedisExplore.get_tags!4 else!5 tags = DatabaseExplore.global_tags!6 end!
![Page 45: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/45.jpg)
monitoring
![Page 46: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/46.jpg)
new relic
![Page 47: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/47.jpg)
banco de dados
![Page 48: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/48.jpg)
custom
![Page 49: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/49.jpg)
lições
• testar coisa nova é divertido!
• dá pra testar em produção seguramente
• entenda os tradeoffs
• documentação e suporte são essenciais!
![Page 50: Persistência Poliglota na Prática](https://reader031.fdocument.pub/reader031/viewer/2022020717/55625414d8b42a1b4b8b4fd7/html5/thumbnails/50.jpg)
Perguntas?