gwift-book/source/main.adoc

7.8 KiB
Raw Blame History

Minor swing with Django

Licence

Ce travail est licencié sous Attribution-NonCommercial 4.0 International Attribution-NonCommercial 4.0 International

This license requires that reusers give credit to the creator. It allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, for noncommercial purposes only.

  • BY: Credit must be given to you, the creator.

  • NC: Only noncommercial use of your work is permitted. Noncommercial means not primarily intended for or directed towards commercial advantage or monetary compensation.

Préface

The only way to go fast, is to go well
— Robert C. Martin

Nous nallons pas vous mentir: il existe enormément de tutoriaux très bien réalisés sur "Comment réaliser une application Django" et autres "Déployer votre code en 2 minutes". Nous nous disions juste que ces tutoriaux restaient relativement haut-niveaux et se limitaient à un contexte donné, sans réellement préparer à la maintenance et au suivi de lapplication nouvellement développée.

Lidée du texte ci-dessous est de jeter les bases dun bon développement, en survolant lensemble des outils permettant de suivre des lignes directrices reconnues, de maintenir une bonne qualité de code au travers des différentes étapes menant jusquau déploiement et de sassurer du maintient correct de la base de code, en permettant à nimporte qui de reprendre ce qui aura déjà été écrit.

Ces idées ne sappliquent pas uniquement à Django et à son cadre de travail, ni même au langage Python. Ces deux sujets sont cependant de bons candidats et leur cadre de travail est bien défini, documenté et suffisamment flexible.

Django se présente comme un Framework Web pour perfectionnistes ayant des deadlines cite:[django] et suit ces quelques principes cite:[django_design_philosophies]:

  • Faible couplage et forte cohésion, pour que chaque composant dispose de son indépendance, en nayant aucune connaissance des autres couches applicatives. Ainsi, le moteur de rendu ne connait absolument rien lexistence du moteur de base de données, tout comme le système de vues ne sait pas quel moteur de rendu est utilisé.

  • Plus de fonctionnalités avec moins de code: chaque application Django doit utiliser le moins de code possible

  • Dont repeat yourself, chaque concept ou morceau de code ne doit être présent quà un et un seul endroit de vos dépôts.

  • Rapidité du développement, en masquant les aspects fastidieux du développement web actuel

Mis côte à côte, le suivi de ces principes permet une bonne stabilité du projet à moyen et long terme.

Comme nous le verrons par la suite, et sans être parfait, Django offre une énorme flexibilité qui permet de se laisser le maximum doptions ouvertes tout en permettant dexpérimenter facilement plusieurs pistes, jusquau moment de prendre une vraie décision. Dans la majorité des cas problématiques pouvant être rencontrés lors du développement dune application Web, Django proposera une solution pragmatique, compréhensible et facile à mettre en place. En résumé de ce paragraphe, pour tout problème commun, vous disposerez dune solution logique. Tout pour plaire à nimporte quel directeur IT.

Dans la première partie, nous verrons comment partir dun environnement sain, comment le configurer correctement, comment installer Django de manière isolée et comment démarrer un nouveau projet. Nous verrons rapidement comment gérer les dépendances, les versions et comment appliquer et suivre un score de qualité de notre code. Ces quelques points pourront être appliqués pour nimporte quel langage ou cadre de travail. Nous verrons aussi que la configuration proposée par défaut par le framework nest pas idéale dans la majorité des cas.

Pour cela, nous présenterons différents outils, la rédaction de tests unitaires et dintégration pour limiter les régressions, les règles de nomenclature et de contrôle du contenu, comment partir dun squelette plus complet, ainsi que les bonnes étapes à suivre pour arriver à un déploiement rapide et fonctionnel avec peu defforts.

A la fin de cette partie, vous disposerez dun code propre et dun projet fonctionnel, bien quencore un peu inutile.

Dans la deuxième partie, nous aborderons les grands principes de modélisation, en suivant les lignes de conduites du cadre de travail. Nous aborderons les concepts clés qui permettent à une application de rester maintenable, les formulaires, leurs validations, comment gérer les données en entrée, les migrations de données et ladministration.

Dans la troisième partie, nous détaillerons précisément les étapes de déploiement, avec la description et la configuration de linfrastructure, des exemples concrets de mise à disposition sur deux distributions principales (Debian et CentOS), sur une *Plateform as a Service*, ainsi que lutilisation de Docker et Docker-Compose.

Nous aborderons également la supervision et la mise à jour dune application existante, en respectant les bonnes pratiques dadministration système.

Dans la quatrième partie, nous aborderons les architectures typées entreprise, les services et les différentes manières de structurer notre application pour faciliter sa gestion et sa maintenance, tout en décrivant différents types de scénarii, en fonction des consommateurs de données.

Dans la cinquième partie, nous mettrons ces concepts en pratique en présentant le développement en pratique de deux applications, avec la description de problèmes rencontrés et la solution qui a été choisie: définition des tables, gestion des utilisateurs, …​ et mise à disposition.

Pour qui ?

Ce livre sadresse autant au néophyte qui souhaite se lancer dans le développement Web quà lartisan qui a besoin dun aide-mémoire et qui ne se rappelle plus toujours du bon ordre des paramètres, ou à lexpert qui souhaiterait avoir un aperçu dune autre technologie que son domaine privilégié de compétences.

Beaucoup de concepts présentés peuvent être oubliés ou restés inconnus jusquau moment où ils seront réellement nécessaires. A ce moment-là, pour peu que votre mémoire ait déjà entraperçu le terme, il vous sera plus facile dy revenir et de lappliquer.

Pour aller plus loin

Il existe énormément de ressources, autant spécifiques à Django que plus généralistes. Il ne sera pas possible de toutes les détailler; faites un tour sur

Restez curieux, ne vous enclavez pas dans une technologie en particulier et gardez une bonne ouverture desprit.

Conventions

Les notes indiquent des anecdotes.
Les conseils indiquent des éléments utiles, mais pas spécialement indispensables.
Les notes importantes indiquent des éléments à retenir.
Ces éléments indiquent des points dattention. Les retenir vous fera gagner du temps en débuggage.
Les avertissements indiquent un (potentiel) danger ou des éléments pouvant amener des conséquences pas spécialement sympathiques.

Lets keep in touch

Unresolved directive in <stdin> - include::part-1-workspace/_main.adoc[]

Unresolved directive in <stdin> - include::part-3-data-model/_index.adoc[]

Unresolved directive in <stdin> - include::part-2-deployment/_main.adoc[]

Unresolved directive in <stdin> - include::part-4-services-oriented-applications/_main.adoc[]

Unresolved directive in <stdin> - include::part-5-go-live/_index.adoc[]

Unresolved directive in <stdin> - include::part-9-resources/_index.adoc[]

Unresolved directive in <stdin> - include::glossary.adoc[]

Index

1. Bibliographie

bibliography::[]