Bibliotecas e ferramentas como numpy, Scikit, Pandas e Jupyter fizerem de Python um dos melhores eco sistemas para Data Science. Mas mesmo tendo caído nas graças dos Data Scientists, Python ainda não é efetivamente utilizada para processamento de dados em larga escala (Big Data). A maioria das ferramentas de processamento de dados, em especial as ferramentas para "Stream Processing", são escritas em Java. Nos casos onde existe algum suporte, Python é cidadão de segunda classe, sempre atrás em features ou performance.
Podemos fazer com que Python se torne uma excelente opção não apenas para os Data Scientists mas também para os Data Engineerings, que precisam prototipar e modelar pipelines complexos para Big Data. Nessa palestra entenderemos porquê Python ainda não preencheu essa lacuna, quais são os desafios técnicos e possíveis soluções para que Python seja uma linguagem de primeira classe para processamento de dados em larga escala e consequentemente para sistemas distribuídos.
Vamos investigar os seguintes tópicos e tecnologias: Stream Processing, Performance, Comunicação Distribuída e Actor Model, IO Assíncrono, Containers e Orquestração, Erlang e Elixir, Java/Scala, Netty e Akka.
7. Mas podemos
melhorar muito
Especialmente, precisamos de
melhor suporte para construção
de sistemas distribuídos.
● Visibilidade de processos
em execução ala JMX.
● Adoção por empresas que
trabalham com Python.
● Bibliotecas de alto nível
em Python puro (ala Akka,
Netty, Erlang, etc)
8. Uma abstração sólida e simples
Modelo de concorrência orientada a
atores e a filosofia do Erlang
10. Xwing
Concorrência, paralelismo,
comunicação assíncrona e
tolerância a falhas
● Baseado em process leves
(coroutines);
● Cada processo é unicamente
identificado;
● Sem estado compartilhado,
processos interagem trocando
mensagens;
● Envio de mensagens é
assíncrono;
● Processos são isolados *;
● Um processo pode detectar
falhas em outros processos *.