From e5a89c77cd8fa3b3b07d0db39ec2b7988bb126c9 Mon Sep 17 00:00:00 2001 From: Fred Date: Wed, 18 Aug 2021 09:31:23 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'source/part-1-work?= =?UTF-8?q?space/maintainable-applications/clean=5Farchitecture.adoc'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clean_architecture.adoc | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/source/part-1-workspace/maintainable-applications/clean_architecture.adoc b/source/part-1-workspace/maintainable-applications/clean_architecture.adoc index 257a4ab..47abe7a 100644 --- a/source/part-1-workspace/maintainable-applications/clean_architecture.adoc +++ b/source/part-1-workspace/maintainable-applications/clean_architecture.adoc @@ -84,3 +84,23 @@ d’implémentation des frontières, dans la mesure où un service n’est jamai (rest, soap, ...). Une application monolotihique est tout aussi fonctionnelle qu’une application découpée en microservices. (Services: great and small, page 243). + +==== Un point sur l'inversion de dépendances + +Dans la partie SOLID, nous avons évoqué plusieurs principes de développement. +Django est un framework qui évolue, et qui a pu présenter certains problèmes liés à l'un de ces principes. + +Les [https://docs.djangoproject.com/en/2.0/releases/2.0/](release notes) de Django 2.0 date de décembre 2017; parmi ces notes, +l'une d'elles cite l'abandon du support d'[https://docs.djangoproject.com/en/2.0/releases/2.0/#dropped-support-for-oracle-11-2](Oracle 11.2). +En substance, cela signifie que le framework se chargeait lui-même de construire certaines parties de requêtes, qui deviennent non fonctionnelles +dès lors que l'on met le framework ou le moteur de base de données à jour. Réécrit, cela signifie que: + +1. Si vos données sont stockées dans un moteur géré par Oracle 11.2, vous serez limité à une version 1.11 de Django +2. Tandis que si votre moteur est géré par une version ultérieure, le framework pourra être mis à jour. + +Nous sommes dans un cas concret d'inversion de dépendances ratée: le framework (et encore moins vos politiques et règles métiers) +ne devraient pas avoir connaissance du moteur de base de données. +Pire, vos politiques et données métiers ne devraient pas avoir connaissance **de la version** du moteur de base de données. + +Ce point sera rediscuté par la suite, notamment au niveau de l'épinglage des versions, de la reproduction des environnements +et de l'interdépendance entre des choix techniques et fonctionnels.