Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go para Pythonistas

27c093d0834208f4712faaaec38c2c5c?s=47 Luciano Ramalho
October 19, 2018
430

Go para Pythonistas

Slides apresentados na PythonBrasil[14] em Natal, RN.

27c093d0834208f4712faaaec38c2c5c?s=128

Luciano Ramalho

October 19, 2018
Tweet

Transcript

  1. GO PARA PYTHONISTAS Porque aprender Go é um ótimo investimento

    para quem já sabe Python Python + Go FTW
  2. RECADOS • Ainda dá tempo de ir para a palestra

    do Leonardo Rochael • A melhor e maior PythonBrasil de todos os tempos!
  3. AGENDA Como vai ser nossa conversa

  4. AGENDA Python, 1998 Concorrência para quem precisa Mito: “I/O bound”

    Alternativas Go: a visão de um Pythonista
  5. PYTHON, 1998 Naquele tempo...

  6. 2018: 20 ANOS DE PYTHON PARA MIM Make subheads 24

    Body defaults to 18pt by default. • Bullet One ◦ Bullet Two ▪ Bullet Three ▪ Bullet Four • Bullet Five ◦ Bullet 6
  7. PÁGINA 1 CONSUMINDO DADOS REMOTOS Consumindo recursos preciosos do Zope

    enquanto espera o FTP ZODB Servidor FTP remoto Zope Página 1 Python 1.5.2
  8. PROGRAMAÇÃO ASSÍNCRONA NO PÁGINA 1 ZODB Servidor FTP remoto Script

    assíncrono Zope Página 1 Assim o Zope recebe requisições rápidas (locais) do script Tudo Python 1.5.2
  9. BIBLIOTECA ASYNCORE

  10. LIÇÕES APRENDIDAS • Nunca faça o seu framework Web esperar

    por serviços externos. Ele é feito para servir HTTP, e não consumir. • Programação assíncrona é muito eficiente para escrever clientes de serviços externos. • Programação concorrente é sempre mais difícil de fazer direito do que a gente imagina.
  11. CONCORRÊNCIA Soluções ao longo do tempo

  12. SOLUÇÕES AO LONGO DO TEMPO • Asyncore e/ou bibliotecas externas

    • Twisted • Tornado ◦ Dilema a cada novo projeto: Twisted ou Tornado? • Node.js: 3ª tentativa de amar JavaScript • asyncio: agora podemos competir com Node! ◦ Em termos... a biblioteca padrão não ajuda • Redescobrindo threads com threadpools
  13. O MITO ASYNC > THREADS

  14. SISTEMAS I/O BOUND Isso existe?

  15. O QUE É I/O BOUND? Um processamento onde o gargalo

    é E/S e não a CPU Exemplos: • acesso a disco (mesmo stat em um SSD) • acesso a rede como cliente • caso extremo, como servidor: responder a clientes com conexões muito lentas A principal vantagem do Node.js sobre o Python 3.7 é que a biblioteca padrão e as bibliotecas externas, todas elas, fazem E/S de forma assíncrona.
  16. SISTEMA I/O BOUND: UM SER IMAGINÁRIO Você pode ter uma

    função I/O bound. Ex: file.read() Um sistema inteiro nunca é apenas I/O bound. Sempre há partes CPU bound.
  17. UVLOOP: A SOLUÇÃO?

  18. UVLOOP: COMPARÁVEL A GO, 2X > NODE!

  19. PEQUENO DETALHE: GOMAXPROCS=1

  20. PEQUENO DETALHE #2: HTTPTOOLS!

  21. MORAL DA ESTÓRIA Em um sistma assíncrono, cada pequena função

    CPU bound atrasa o loop de eventos, cumulativamente, até que seu monolito se torna tão lento que precisa ser refeito…
  22. COMO SAIR DESSA SINUCA • Celery (a palestra do Leo

    Rochael) • Reinventar a roda com multiprocessing (ou Node cluster, mesma merda) • Usar outra linguagem para micro-serviços que você já sabe que serão CPU bound
  23. ALTERNATIVAS Muito além de Python e Node

  24. PYTHON 4.0 NA PYTHONBRASIL 7 (2011) Gustavo Niemeyer

  25. Sometimes you need a blank template. ELIXIR: JOSÉ VALIM, PYTHON

    BRASIL 10 (2014)
  26. HELLO WORLD COMO SISTEMA DISTRIBUÍDO Elixir Mini-Documentary

  27. PORQUE RESOLVI ESTUDAR GO PRIMEIRO Mais fácil de aprender, para

    Pythonistas Compila direto para código nativo: não precisa instalar um sistema de runtime Mercado: Go está se popularizando muito rápido e já tem uma grande base de usuários
  28. GO: A VISÃO DE UM PYTHONISTA Minhas impressões e experiência

    pessoal
  29. PALESTRA NO TDC FLORIANÓPOLIS, 2017 Make subheads 24 Body defaults

    to 18pt by default. • Bullet One ◦ Bullet Two ▪ Bullet Three ▪ Bullet Four • Bullet Five ◦ Bullet 6
  30. None
  31. None
  32. None
  33. None
  34. None
  35. None
  36. None
  37. None
  38. None
  39. None
  40. None
  41. None
  42. None
  43. None
  44. None
  45. None
  46. None
  47. None
  48. CONCLUSÃO Palavras finais

  49. PALAVRAS FINAIS Não é difícil aprender Go Python é melhor

    que Go em muitos aspectos Go é melhor que Python em muitos aspectos Aprender Go é um excelente investimento em você: resolve certos problemas que Python não resolve tão bem.
  50. SAFARI BOOKS: PYTHON VS. GO

  51. SAFARI BOOKS: PYTHON VS. GO

  52. SAFARI BOOKS: PYTHON VS. GO

  53. MUITO GRATO! Perguntas? Comentários? @ramalhoorg | @standupdev lramalho@thoughtworks.com