# ? Domain Driven Design et Python Publié le 31 janvier 2013

J’ai eu le plaisir d’assister à une intervention de Paul dédié au Domain Driven Design (DDD) mis en application dans Qi4j qui était vraiment inspirante en terme de concepts.

Je me suis donc mis en quête de voir ce qui était possible en Python, je me souvenais de l’avoir vu mis en application par Olivier Girardot à travers sa présentation de l’architecture CQRS et performance avec Django et je pensais pouvoir trouver de nombreuses implémentations mais je suis clairement resté sur ma faim avec une présentation assez succincte liée à Flask dont le code est déjà plus intéressant avec la notion de contexte de stockage et de service d’authentification. Et puis pas grand chose d’autre en fait.

Pour aller plus loin, le livre Domain Driven Design Quickly semble être une bonne introduction et il a même été traduit en français (notez que le « Quickly » c’est quand même 88 pages…). Si vous avez d’autres ressources dans le domaine que l’on puisse utiliser dans un contexte Web et qui permette de modéliser des approches métier en Python, je suis preneur.

### Discussion suite à l’article :

Je ne le vois pas mentionné dans ton article, mais la base dans le domaine, c’est ce vieux bouqin d’Eric Evans. Ça n’est pas le DDD pour le web ou pour Python, mais les concepts sont applicable à pas mal de contexte. Oui je pense aussi qu’un langage de programmation n’est qu’un contexte; pour le "web", c’est un peu plus profond peut-être.

Pour la partie programmation que ce soit coté serveur ou coté client ce livre est intéressant. Mais même sur les principes de service, d’applications qui interagissent et autres, je crois qu’on pourrait y calquer ces principes (ou l’inverse peut-être ?).

Bonne lecture.

Yannick François, le 2013-02-02 à 21:28

Merci pour le lien, en effet c'est LE livre de référence au sujet du Domain Driven Design même si je ne l'ai pas (encore) lu.

Concernant l'aspect web+python, j'ai l'impression que le projet Django REST framework est sensibilisé à cette approche avec les différences de rendu en fonction du contexte mais je n'ai pas encore suffisamment creusé le DDD pour me prononcer.

Il y a également `contextlib.contextmanager` qui — utilisé avec `with` — ou en décorateur depuis Python 3 pourrait gérer les notions de contexte nativement.

David Larlet, le 2013-02-04 à 00:24