Migração de Banco de Dados - Oracle para MongoDB - TDC2014

525 visualizações

Publicada em

Migração de Banco de Dados - Oracle para MongoDB - TDC2014 - Trilha Python.

Como o TerraTV migrou sua plataforma de C# para Python e Oracle para MongoDB. Mostramos algumas abordagens e ferramentas utilizadas para essa migração.

Publicada em: Internet
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
525
No SlideShare
0
A partir de incorporações
0
Número de incorporações
12
Ações
Compartilhamentos
0
Downloads
7
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Migração de Banco de Dados - Oracle para MongoDB - TDC2014

  1. 1. Globalcode – Open4education Trilha – Python Jonathan Simon Prates Analista de Desenvolvimento - Terra Networks @thumbox
  2. 2. Globalcode – Open4education Migração de database Migrando de C# e Oracle para Python e MongoDB
  3. 3. Globalcode – Open4education Quem sou eu? Analista de desenvolvimento da plataforma de vídeos do Terra. Formado em Sistemas de Informação (UNIRITTER) Mestrando em Computação Aplicada (UNISINOS)
  4. 4. Globalcode – Open4education Plataforma de vídeos: Plataforma de vídeos ao vivo e VOD. América Latina, EUA e Espanha. Olimpíadas, Shows Ao Vivo, Liga Europa, Programas Ao Vivo durante a tarde. Desktop, Mobile, Tablets, Smart TVs.
  5. 5. Globalcode – Open4education Como evoluímos: A plataforma cresceu muito desde 2004. Novas funcionalidades (2009 mobile, 2010 smarttvs, 2012 lives, etc). Um novo webservice a cada anos. Base de dados Oracle em Miami e outra em Porto Alegre.
  6. 6. Globalcode – Open4education A motivação ... 6 WebServices 2 APIs +40 Tabelas +10 MViews entre BR e USA Deploy em produção? Zipa e manda na zuera!
  7. 7. Globalcode – Open4education A motivação ... Baixa Performance Tabela compilada HEIN?
  8. 8. Globalcode – Open4education Oracle VS MongoDB Tabela “compilada” = Coleção não relacional. Precisamos realmente do Oracle? O Oracle custa 15 vezes MAIS. Impossível colocar um valor default em um campo.
  9. 9. Globalcode – Open4education Então o Oracle é ruim?
  10. 10. Globalcode – Open4education Afirmações clássicas Preciso de performance, então uso Oracle. Não é orientado a objetos, então está errado. Vou ter que escrever o backend do meu site em C/C++ para ficar mais rápido. Meu sistema não precisa de testes.
  11. 11. Globalcode – Open4education Se vamos mudar ... - rollbacks - madrugadas - testes em produção
  12. 12. Globalcode – Open4education Muda tudo então!! Estávamos no caminho certo? Sugestão para mudarmos. Licenças de sistema operacional. Reduzir custos.
  13. 13. Globalcode – Open4education Mas por que Python?
  14. 14. Globalcode – Open4education Mas por que Python? Testes Performance Estável Python C# PHP Ruby
  15. 15. Globalcode – Open4education SIMPLICIDADE
  16. 16. Globalcode – Open4education Pika localshop
  17. 17. Globalcode – Open4education O que ouvimos: Coisa de Startup Impossível sem parar a plataforma Python não é melhor que C# Que tal usar Java então? O pessoal conhece C#, não Python...
  18. 18. Globalcode – Open4education “PROGRAMAR A PLATAFORMA FOI MAIS FÁCIL QUE CONVENCER ALGUMAS PESSOAS...”
  19. 19. Globalcode – Open4education Desafios: Como sincronizar as bases? Manter ou não manter as mesmas entidades? Como garantir a saída dos dados sejam iguais? Updates, ambiente limpo e deploy. Como fazer?
  20. 20. Globalcode – Open4education Como sincronizar as bases? Feeds CDN CMS TTV API Buscador Encoding TTV Desktop TTV Mobile SmartTVs Parceiros
  21. 21. Globalcode – Open4education Como sincronizar as bases? Serviço de mensageria Protocolo AMQP Open Source Puka, Pika, PyAMQPlib, kombu CMS Worker Mongo Worker Oracle
  22. 22. Globalcode – Open4education Desafios: Como sincronizar as bases? Manter ou não manter as mesmas entidades? Como garantir a saída dos dados sejam iguais? Updates, ambiente limpo e deploy. Como fazer?
  23. 23. Globalcode – Open4education Manter ou não manter as mesmas entidades? Desnormalização dos dados Pensado na consulta canais videos videos_x_canais
  24. 24. Globalcode – Open4education Manter ou não manter as mesmas entidades? MongoDB – Drivers para várias linguagens. Mongoengine – Object-Document Mapper (ODM) Schemaless
  25. 25. Globalcode – Open4education Desafios: Como sincronizar as bases? Manter ou não manter as mesmas entidades? Como garantir a saída dos dados sejam iguais? Updates, ambiente limpo e deploy. Como fazer?
  26. 26. Globalcode – Open4education Como garantir a saída dos dados sejam iguais? TerraTV API Pedir para os clientes mudar suas implementações?
  27. 27. Globalcode – Open4education Como garantir a saída dos dados sejam iguais? TerraTV API (aspx/IIS) Nova API (python/nginx) Nginx rewrite Balanceador: api.terra.com.br IIS
  28. 28. Globalcode – Open4education Como garantir a saída dos dados sejam iguais? Flask JSON ou XML REST Utilização de templates para manter compatibilidade Testes automatizados através dos XSDs gerados a partir do serviço antigo
  29. 29. Globalcode – Open4education Desafios: Como sincronizar as bases? Manter ou não manter as mesmas entidades? Como garantir a saída dos dados sejam iguais? Updates, ambiente limpo e deploy. Como fazer?
  30. 30. Globalcode – Open4education Updates, ambiente limpo e deploy. Como fazer? “The Python Package Index is a repository of software for the Python programming language.” Localshop – “A private pypi server including auto-mirroring of pypi.” $ pip install videoapi localshop
  31. 31. Globalcode – Open4education Updates, ambiente limpo e deploy. Como fazer? Instalações simples Ambientes isolados Fácil update Fácil rollback virtualenv is a tool to create isolated Python environments. Cada aplicação tem seu próprio virtualenv Dependências entre libs de python são tratadas de forma distintas
  32. 32. Globalcode – Open4education Updates, ambiente limpo e deploy. Como fazer? Integração Contínua com Jenkins Geração de pacote de forma automática após push no master branch do GIT.
  33. 33. Globalcode – Open4education Tratamento de imagens
  34. 34. Globalcode – Open4education Tratamento de imagens
  35. 35. Globalcode – Open4education Tratamento de imagens PIL Chamada através do ID do vídeo Resize em tempo real via parâmetros da URL Única imagem na storage. Controle dos cabeçalhos HTTPs.
  36. 36. Globalcode – Open4education Conclusão
  37. 37. Globalcode – Open4education Preciso mudar? Só consigo testar em produção Na primeira nunca compila, depois vai Não tem como testar isso Tenho muitos relacionamentos, por isso meu sistema é lento Só posso instalar na madrugada
  38. 38. Globalcode – Open4education Conclusão Vários sistemas simples e pequenos geram soluções complexas. Quanto maior o código, maior a chance de bugs. Evitar classes grandes, métodos grandes e código duplicado. Usar ferramentas de qualidade como pylint e pep8. Faça o seu código o mais simples possível.
  39. 39. Globalcode – Open4education Obrigado! jonathan.simonprates@gmail.com @thumbox br.linkedin.com/in/jonathanprates/

×