Slide 1

Slide 1 text

Pare de usar Django Blumenau Dev Day 2023 @hs.blumenau

Slide 2

Slide 2 text

Pare de usar Django para tudo Blumenau Dev Day 2023 @hs.blumenau

Slide 3

Slide 3 text

Sobre mim Co-organizador do GruPy Blumenau. Engenheiro de software na Jusbrasil. Entusiasta do open-source. Produzindo códigos desde 2015. Hoje estou mais próximo das linguagens de programação Python, Golang e Javascript, mas também já trabalhei PHP e Java. @jjpaulo2

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

blumenau.sc.python.org.br

Slide 6

Slide 6 text

Pare de usar Django para tudo Blumenau Dev Day 2023 @hs.blumenau

Slide 7

Slide 7 text

Antes de tudo… Calma ai! Não iremos falar mal do Django.

Slide 8

Slide 8 text

Mas seremos realistas.

Slide 9

Slide 9 text

Serve também para outros frameworks

Slide 10

Slide 10 text

Mas todos os exemplos serão contextualizados em Python

Slide 11

Slide 11 text

O que é o Django 00. Conceitos mínimos que precisamos compreender

Slide 12

Slide 12 text

Django Um framework full-stack para Python. Torna tarefas complexas, extremamente simples. Nasceu como um CMS para gerenciar um site de notícias em Lawrence, Kansas, EUA. Se tornou um projeto de código-aberto em 2005.

Slide 13

Slide 13 text

ORM + Migrations Modelagem de banco de dados totalmente descomplicada com migrations automáticas. Auth + Permissions Modelagem e métodos de autenticação prontos, juntamente com um sistema de permissões e grupos. Template Engine Linguagem de templates extremamente poderosa para construir páginas web. Caching Faça cache de consultas, páginas e métodos de forma extremamente simples. Principais features

Slide 14

Slide 14 text

❤ Django Admin ❤

Slide 15

Slide 15 text

Onde aprender? Tutorial Django Girls Projeto mundial focado em ensinar programação para mulheres. Documentação Oficial Até hoje, tida como uma das melhores documentações já escritas.

Slide 16

Slide 16 text

Controle 01. Não perca o controle do que você está desenvolvendo

Slide 17

Slide 17 text

Controle Saiba de tudo que acontece na sua aplicação Agilidade Agregar valor à aplicação no menor tempo possível VS

Slide 18

Slide 18 text

Agilidade Solução para um problema comum 01. Lançamento de um produto mínimo 02.

Slide 19

Slide 19 text

Controle Solução para um problema não tão comum 01. Seu produto já é grande e precisa ir além 02.

Slide 20

Slide 20 text

Controle Saiba de tudo que acontece na sua aplicação Agilidade Agregar valor à aplicação no menor tempo possível VS

Slide 21

Slide 21 text

O seu nível de controle em baixo nível das suas aplicações em Django é limitado.

Slide 22

Slide 22 text

Objetivo 02. O seu projeto e o framework buscam resolver o problemas similares?

Slide 23

Slide 23 text

Se uma tecnologia não resolve o seu problema, não há necessidade de usá-la.

Slide 24

Slide 24 text

Exemplo SQL vs NoSQL O hype do MongoDB fez muitos times migragem do Postgres, atrás de promessas de performance. Entretanto, eles continuavam modelando os dados, como se fosse um banco relacional.

Slide 25

Slide 25 text

Exemplo SQL vs NoSQL Consequência Voltaram para o Postgres, pois entenderam que não havia necessidade de utilização de um banco orientado à documentos.

Slide 26

Slide 26 text

CRUD em bancos relacionais 01. Renderização de páginas web 02. Construção de APIs HTTP 03. Autenticação e permissões 04. Principais problemas que o Django resolve

Slide 27

Slide 27 text

Alguns problemas que o Django não resolve CRUD em bancos não relacionais 01. Manipulação de infraestrutura 02. Enfileiramento de tarefas 03. Escrita e leitura de arquivos 04.

Slide 28

Slide 28 text

Performance 03. A abstração cobra o preço

Slide 29

Slide 29 text

cursor.execute("INSERT INTO …") Pilha de chamadas do framework salvando um registo no banco my_model.save()

Slide 30

Slide 30 text

cursor.execute(...) my_model.save() Identificar qual banco de dados estou usando Montar a query do banco de dados Um monte de coisa que eu não conheço Comunicação com o driver do banco de dados Pilha de chamadas do framework salvando um registo no banco

Slide 31

Slide 31 text

Benchmarks

Slide 32

Slide 32 text

Aumentar a performance de uma aplicação Django vai exigir conhecimentos avançados no framework e em Python.

Slide 33

Slide 33 text

Código 04. Ainda escrevemos código como em 2005?

Slide 34

Slide 34 text

Django é famoso por ter uma interface de código extremamente estável.

Slide 35

Slide 35 text

Python Conceitos Boas práticas Ideais pythônicos Necessidades 2005 2023 Evolução Python + Conceitos + Boas práticas + Ideais pythônicos + Necessidades +

Slide 36

Slide 36 text

Python Conceitos Boas práticas Ideais pythônicos Necessidades 2005 2023 Evolução Python + Conceitos + Boas práticas + Ideais pythônicos + Necessidades + Nesse meio tempo, a forma como você escreve código em Django praticamente não mudou.

Slide 37

Slide 37 text

Keep It Super Simple

Slide 38

Slide 38 text

Código baseado em classes

Slide 39

Slide 39 text

Código baseado em funções

Slide 40

Slide 40 text

Django é baseado em classes.

Slide 41

Slide 41 text

Forçar a utilização de classes para tudo pode criar complexidades desnecessárias.

Slide 42

Slide 42 text

As vezes, uma simples função é capaz de resolver o nosso problema.

Slide 43

Slide 43 text

E agora?

Slide 44

Slide 44 text

Não use Django se deseja controlar cada pedaço da sua aplicação.

Slide 45

Slide 45 text

Não use Django se o seu código pode ser mais simplificado.

Slide 46

Slide 46 text

Não use Django se o seu problema não é resolvido por ele.

Slide 47

Slide 47 text

Use Django se o seu problema é resolvido por ele.

Slide 48

Slide 48 text

Use Django se você deseja mais agilidade na sua entrega.

Slide 49

Slide 49 text

Use Django só pelo admin.

Slide 50

Slide 50 text

Use Django para não reinventar a roda.

Slide 51

Slide 51 text

Use Django para ser feliz.

Slide 52

Slide 52 text

Perguntas?

Slide 53

Slide 53 text

Obrigado pela atenção! @jjpaulo2