Blog

Ideas and insights from our team

[pt-BR] PyNE 2019 Talks


Slides from talks given during the Python Nordeste 2019 event will be posted here. This post and the slides are written in Brazilian Portuguese.

Alt text

Em nome das Boas Práticas de Código da Casa Django, Rainha do Backend, eu te sentencio a testar - A Game of Tests

Valar Testhaeris, todos os homens devem testar. Muitos desenvolvedores subestimam o poder dos testes, mas a noite é escura e cheia de erros. Nessa palestra, você irá aprender os truques do Game of Tests. E porque o homem que passa a sentença deve brandir a espada, nessa palestra, meu objetivo é te ajudar a entender testes automatizados em Django como iniciante, boas ferramentas que podem te ajudar no caminho e mostrar alguns exemplos práticos no assunto. Porque o que dizemos para o deus dos bugs? Hoje não.

Django + Elasticsearch tão fácil quanto o ORM

Elasticsearch é uma boa adição para diversos projetos Django. Através dele, é possível realizar consultas para as quais BDs relacionais usualmente apresentam baixa performance, tais como buscas full-text performáticas, além de filtragens e agregações complexas. Nesta palestra, vamos introduzir essas vantagens para justificar o uso do Elasticsearch, demonstrando sempre com código real em um dataset representativo (ambos serão disponibilizados).

Mas dá trabalho integrar Django com Elasticsearch. Você precisa escrever código que mantenha as tabelas do seu banco de dados em sincroniza com os indexes do Elasticsearch. Esse tipo de código de invalidação é sempre complicado de escrever, testar e manter. Devido a duplicação de dados entre tabelas do BD e indexes do Elasticsearch, este último acaba funcionando de maneira similar a uma "cache". E, como o velho adágio, diz: "existem duas coisas difíceis em Ciência da Computação: invalidar cache e nomear coisas".

Mas se você usa Postgres, há uma alternativa que apresentaremos nesta palestra: ZomboDB, uma extensão capaz de sincronizar tabelas do Postgres com indexes com Elasticsearch de forma automática após cada transação. Desta forma, desenvolvedores conseguem tratar indexes Elasticsearch da mesma forma que indexes internos do Postgres, ou seja, a sincronia é transparente e imediata. Com o ZomboDB, não é necessário escrever código extra para manter o BD e o Elasticsearch sincronizados.

Como nosso foco é Django, apresentaremos também o django-zombodb, que suporta a criação indexes do ZomboDB/Elasticsearch usando migrações Django, e também oferece uma API amigável para realizar consultas Elasticsearch de forma Pythonica e Djangonica, isto é, usando o ORM. Com o django-zombodb, nunca foi tão fácil integrar Django com Elasticsearch.

De 100 para 1000: Estratégias para quem está começando a se preocupar com performance Python

Eventualmente todo mundo que trabalha com desenvolvimento web vai se deparar com um sistema que precisa lidar com muitas requisições. Para quem nunca passou por isso antes esse é normalmente um momento estressante: clientes reclamam da velocidade do site, o sistema fica fora do ar por algumas horas, coisas que antes funcionavam começam a quebrar ou demorar demais, entre outras situações geralmente não muito divertidas. Nessa palestra vamos falar da tal "escalabilidade" dos sitemas web. Mas não a escalabilidade necessária para atender milhões de usuários, e sim sobre aquele primeiro passo que é fazer a aplicação começar a lidar com algumas centenas de usuários, talvez milhares.

Iremos utilizar o framework Django para guiar os exemplos porém os conceitos poderam ser aplicados em qualquer framework ou linguagem de programação. Vamos mostrar como poucas mudanças no código podem ter um efeito muito grande na performance da sua aplicação. Também exploraremos algumas estratégias um pouco mais avançadas (como por exemplo as diversas formas de se fazer caching) mostrando vantágens e desvantágens.

--

Inclusive, se você for para o evento, não deixe de passar no nosso stand para pegar nossos brindes.

About Rob Novelino

Creator of organizational tools, whether they have code lines or not. Likes to read about crazy things like futurism, psychology, education and new economic models. When coding, goes for Python/Django.

Comments