introdução ao Domain Driven Design com Django

PythOnRio - 2016

quem?

Luciano Ratamero

Desenvolvedor Full-Stack Python/JavaScript

ratamero.com

fb.com/lucianoratamero

@lucianoratamero

aviso!

essa palestra é muito introdutória
alguns conceitos serão simplificados por fins didáticos

"Show me the code!" - BASTOS, Henrique
"Nope" - RATAMERO, Luciano

Domain Driven Design?

  • pra que serve?
  • tem a ver com código?
  • dá pra usar com qualquer linguagem?
  • posso usar em tudo?
  • isso tá me soando como microservices...

conceitos básicos

  • domínio
  • modelos
  • casos de uso
  • ubiquitous language
  • bounded context
  • aplicação em camadas

maneiro, mas como é isso em Django?

detalhe

tudo que vou dizer aqui são opiniões e sugestões de como aplicar alguns conceitos

django, domínio e modelos

  • desacoplamento
  • testabilidade
  • prototipagem
  • decisões tardias == <3

django e casos de uso

  • reuso
  • facilidade de compreensão
  • facilidade de explicação
  • mocks, mocks, mocks

django, ubiquitous language e bounded context

  • semântica levada a sério
  • apps verdadeiramente desacopláveis
  • substituição de código legado
  • facilidade de gestão de equipes

django e aplicação em camadas

  • models, views e templates
  • domain models, domain logic e presentation layers
  • papéis bem definidos

mas e o front?

"Deixa eu adivinhar: Segregated DOM?" - TANDEL, Elias

adaptando conceitos ao JS

  • angular, react e afins == infra
  • JavaScript como linguagem de programação
  • camadas adaptadas: HTML, presentation layer, domain logic

e o que eu ganho?

  • desacoplamento
  • testabilidade
  • prototipagem
  • decisões tardias == <3

sim, de novo

nem tudo é as mil maravilhas...

  • dificuldade de implantação
  • necessidade de alinhamento
  • perda de claras vantagens de frameworks

mas assim como o TDD...

se você levar a sério, tudo se torna tranquilo

dúvidas?