SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
persistência poliglota 
na prática 
@nettofarah 
http://hdwallpapersx.com/wp-content/uploads/2013/09/Green-Parakeet-Wallpaper.jpg
- - Essas crianças de hoje são verdadeiros poliglotas. 
! 
- - Verdadeiros o que? 
! 
- - Poliglotas. Esses das cavernas.
@nettofarah 
full stack developer na 
8tracks.com 
8tracks.com/nettofarah 
netto@8tracks.com
8tracks
stats 
• users: 13.3mi! 
• public playlists: 1.8mi (4,2 mi total)! 
• uploaded tracks: 31mi! 
• requests/minute: ~100k
a melhor ferramenta para o problema 
http://peopletakingpictureswithipads.tumblr.com/
melhor ferramenta 
http://peopletakingpictureswithipads.tumblr.com/
para o problema! 
http://peopletakingpictureswithipads.tumblr.com/
esforço humano esforço da máquina
F.C.P.P. = dev <3 + machine <3
modelo relacional 
• funciona bem! (até certo ponto) 
• confiável 
• no mercado há muito tempo 
• já foi bem testado 
• bem documentado
o modelo relacional
NoSQL 
• relativamente novo 
• resolve problemas específicos 
• developer friendly
NoSQL
O que a gente já testou
Porque você deveria 
experimentar NoSQL
Porque NoSQL 
• pode escalar muito bem 
• pode resolver de forma mais elegante 
• é empolgante para os devs 
• data-first*
Por que desistir de NoSQL?
Complexidade
pode custar caro
muitas mudanças
falta de ferramentas adequadas
reinventar a roda
como decidir? 
• documentação 
• comunidades (stack overflow, github, forums, irc, 
listas de email) 
• suporte 
• quão adequado pra sua infra?
O que funcionou bem pra 
nós
primário 
- escrita 
- leituras leves 
réplica slave 
- leitura 
- queries 
pesadas
auxiliar players 
primário 
réplica slave
cache 
é um balde onde a 
gente joga as coisas
aquela aula chata de 
estrutura de dados… 
só que funciona
redis
redis 
head 
next next next next 
tail
• super fácil de deployar 
• não usamos para o tráfego comum 
• joga qualquer coisa lá dentro
• 16k rpm 
• full text search 
• autocomplete 
• busca personalizada 
• cluster de 4 máquinas
• tsv 
• optimizado para IO 
• queries pesadas/bigdata com SQL 
• paralelo/distribuído
e como é 
que a gente fez?
testes em produção!
rode os sistemas 
lado a lado
em-proxy 
1 $> em-proxy -l 8080 ! 
2 -r localhost:8081 ! 
3 -d mysql.8tracks.com:8082, ! 
4 postgres.8tracks.com:8082 -v!
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)! 
transformar para outro 
7 ! 
protocolo 
end8 ! 
9 conn.on_finish do |backend, name|! 
10 # ignora a resposta! 
11 unbind if backend == :srv! 
12 end! 
13 end! 
ignorar a resposta
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!
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!
monitoring
new relic
banco de dados
custom
lições 
• testar coisa nova é divertido! 
• dá pra testar em produção seguramente 
• entenda os tradeoffs 
• documentação e suporte são essenciais!
Perguntas?
we’re hiring! 
8tracks.com/jobs 
netto@8tracks.com

Weitere ähnliche Inhalte

Ähnlich wie Persistência Poliglota na Prática

Opendata - Não posso fazer tijolos sem barro !
Opendata - Não posso fazer tijolos sem barro !Opendata - Não posso fazer tijolos sem barro !
Opendata - Não posso fazer tijolos sem barro !
Thiago Rondon
 
Dados abertos do wikipedia ao governo
Dados abertos do wikipedia ao governoDados abertos do wikipedia ao governo
Dados abertos do wikipedia ao governo
Thiago Rondon
 
Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.
Thiago Rondon
 

Ähnlich wie Persistência Poliglota na Prática (20)

Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
História dos Sistemas - Por que estamos fazendo desse jeito
História dos Sistemas - Por que estamos fazendo desse jeitoHistória dos Sistemas - Por que estamos fazendo desse jeito
História dos Sistemas - Por que estamos fazendo desse jeito
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Python: a arma secreta do Cientista de Dados
Python: a arma secreta do Cientista de DadosPython: a arma secreta do Cientista de Dados
Python: a arma secreta do Cientista de Dados
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
 
Insustentavel js
Insustentavel jsInsustentavel js
Insustentavel js
 
Opendata - Não posso fazer tijolos sem barro !
Opendata - Não posso fazer tijolos sem barro !Opendata - Não posso fazer tijolos sem barro !
Opendata - Não posso fazer tijolos sem barro !
 
Iccyber2012 sandro suffert apura - jacomo picolini teamcymru - desafio fore...
Iccyber2012   sandro suffert apura - jacomo picolini teamcymru - desafio fore...Iccyber2012   sandro suffert apura - jacomo picolini teamcymru - desafio fore...
Iccyber2012 sandro suffert apura - jacomo picolini teamcymru - desafio fore...
 
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
 
“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web Hacking“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web Hacking
 
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
 
MEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupMEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon Meetup
 
Python e suas aplicações
Python e suas aplicaçõesPython e suas aplicações
Python e suas aplicações
 
TDCPOA2018 - Trilha Python - Testes de Performance com Locust
TDCPOA2018 - Trilha Python - Testes de Performance com LocustTDCPOA2018 - Trilha Python - Testes de Performance com Locust
TDCPOA2018 - Trilha Python - Testes de Performance com Locust
 
IPCOP - Firewalls para os comuns mortais
IPCOP - Firewalls para os comuns mortaisIPCOP - Firewalls para os comuns mortais
IPCOP - Firewalls para os comuns mortais
 
Como definir a quantidade de workers para sua aplicação
Como definir a quantidade de workers para sua aplicaçãoComo definir a quantidade de workers para sua aplicação
Como definir a quantidade de workers para sua aplicação
 
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
 
Dados abertos do wikipedia ao governo
Dados abertos do wikipedia ao governoDados abertos do wikipedia ao governo
Dados abertos do wikipedia ao governo
 
Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.
 

Mehr von Ivayr Farah Netto

Testes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria SaberTestes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria Saber
Ivayr Farah Netto
 

Mehr von Ivayr Farah Netto (6)

Building a Single Page App: One Page at a Time
Building a Single Page App: One Page at a TimeBuilding a Single Page App: One Page at a Time
Building a Single Page App: One Page at a Time
 
a 8tracks ama o Redis
a 8tracks ama o Redisa 8tracks ama o Redis
a 8tracks ama o Redis
 
Redis &lt;3 at 8tracks.com
Redis &lt;3 at 8tracks.comRedis &lt;3 at 8tracks.com
Redis &lt;3 at 8tracks.com
 
Rails girls
Rails girlsRails girls
Rails girls
 
Away day
Away dayAway day
Away day
 
Testes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria SaberTestes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria Saber
 

Kürzlich hochgeladen

Kürzlich hochgeladen (9)

ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Persistência Poliglota na Prática