From f6821ff222220e6a4f607c5eb85e70df723aea38 Mon Sep 17 00:00:00 2001 From: Fred Pauchet Date: Sat, 18 Jun 2022 14:54:33 +0200 Subject: [PATCH] Resize images on chapter 2 --- chapters/maintenability.tex | 41 +++++++++++++------- chapters/tools.tex | 2 +- images/diagrams/basic-automation.drawio.png | Bin 17318 -> 18700 bytes 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/chapters/maintenability.tex b/chapters/maintenability.tex index 04f063b..b58d064 100644 --- a/chapters/maintenability.tex +++ b/chapters/maintenability.tex @@ -25,12 +25,12 @@ Que l'utilisateur soit humain, bot automatique ou client Web, la finalité d'un \textbf{La maintenabilité} consiste à faire en sorte que toute intervention puisse être réalisée de manière productive: au fil du temps, il est probable que plusieurs personnes se succèdent à travailler sur l'évolution d'une application, qu'ils travaillent sur sa conception ou sur son exploitation. \end{enumerate} -Une manière de développer de telles applications consiste à suivre la méthodologie des \textbf{12 facteurs} \footnote{\href{https://12factor.net/fr/}{The Twelve-factor App}} +Une manière de développer de telles applications consiste à suivre la méthodologie des \textbf{12 facteurs} \footnote{\url{https://12factor.net/fr/}}. Il s'agit d'une méthodologie consistant à suivre douze principes, qui permettent de: \begin{enumerate} \item - \textbf{Faciliter la mise en place de phases d'automatisation}; plus concrètement, de faciliter les mises à jour applicatives, simplifier la gestion de l'hôte qui héberge l'application ou les services, diminuer la divergence entre les différents environnements d'exécution et offrir la possibilité d'intégrer le projet dans un processus d'\href{https://en.wikipedia.org/wiki/Continuous_integration}{intégration continue} ou \href{https://en.wikipedia.org/wiki/Continuous_deployment}{déploiement continu} + \textbf{Faciliter la mise en place de phases d'automatisation}; plus concrètement, de faciliter les mises à jour applicatives, simplifier la gestion de l'hôte qui héberge l'application ou les services, diminuer la divergence entre les différents environnements d'exécution et offrir la possibilité d'intégrer le projet dans un processus d'intégration continue \footnote{\url{https://en.wikipedia.org/wiki/Continuous_integration}} ou déploiement continu \footnote{\url{https://en.wikipedia.org/wiki/Continuous_deployment}}. \item \textbf{Faciliter l'intégration de nouveaux développeurs dans l'équipe ou de personnes souhaitant rejoindre le projet}, dans la mesure où la construction d'un nouvel environnement sera grandement facilitée. \item @@ -127,7 +127,7 @@ Au moment de développer une nouvelle fonctionnalité, réfléchissez si l'un des paramètres utilisés risquerait de subir une modification ou s'il concerne un principe de sécurité: ce composant peut concerner une nouvelle chaîne de connexion, un point de terminaison nécessaire à télécharger des données officielles ou un chemin vers un répertoire partagé pour y déposer un fichier. Le risque est de se retrouver avec une liste colossale de paramètres; pensez à leur assigner une variable par défaut. -Par exemple, Gitea expose \href{https://docs.gitea.io/en-us/config-cheat-sheet/}{la liste suivante de paramètres}; il serait impossible de tous les configurer un à un avant de pouvoir démarrer une instance. +Par exemple, Gitea expose la liste suivante de paramètres \footnote{\url{https://docs.gitea.io/en-us/config-cheat-sheet/}}; il serait impossible de tous les configurer un à un avant de pouvoir démarrer une instance. \section{Ressources externes} @@ -139,7 +139,10 @@ De cette manière, les ressources peuvent être attachées et détachées d'un d Si une base de données ne fonctionne pas correctement (problème matériel ?), l'administrateur pourrait simplement restaurer un nouveau serveur à partir d'une précédente sauvegarde, et l'attacher à l'application sans que le code source ne soit modifié. une solution consiste à passer toutes ces informations (nom du serveur et type de base de données, clé d'authentification, \ldots directement \emph{via} des variables d'environnement. -\includegraphics{images/12factors/attached-resources.png} +\begin{figure}[H] + \centering + \scalebox{1.0}{\includegraphics[max size={\textwidth}{\textheight}]{images/12factors/attached-resources.png}} +\end{figure} Nous serons ravis de pouvoir simplement modifier une chaîne \texttt{sqlite:////tmp/my-tmp-sqlite.db} en \texttt{psql://user:pass@127.0.0.1:8458/db} lorsque ce sera nécessaire, sans avoir à recompiler ou redéployer les modifications. Ces ressources sont donc spécifiés grâce à des variables d'environnement, et chacune d'entre elles dispose également d'un \textbf{type}, afin de profiter d'une correspondance dynamique entre un moteur d'exécution et une information de configuration. @@ -159,7 +162,10 @@ Ces ressources sont donc spécifiés grâce à des variables d'environnement, et processus nécessaires au bon fonctionnement de l'application. \end{enumerate} -\includegraphics{images/12factors/release.png} +\begin{figure}[H] + \centering + \scalebox{1.0}{\includegraphics[max size={\textwidth}{\textheight}]{images/12factors/release.png}} +\end{figure} Parmi les solutions possibles, nous pourrions nous pourrions nous baser sur les \emph{releases} de Gitea, sur un serveur d'artefacts (\href{https://fr.wikipedia.org/wiki/Capistrano_(logiciel)}{Capistrano}), voire directement au niveau de forge logicielle (Gitea, Github, Gitlab, \ldots). @@ -183,9 +189,12 @@ de ponts, où l'hôte qui s'occupe de l'exécution effectue lui-même la redirection vers l'un des ports ouverts par l'application, typiquement, en HTTP ou via un autre protocole. -\includegraphics{images/diagrams/12-factors-7.png} +\begin{figure}[H] + \centering + \scalebox{1.0}{\includegraphics[max size={\textwidth}{\textheight}]{images/diagrams/12-factors-7.png}} +\end{figure} -L'applicatoin fonctionne de manière autonome et expose un port (ici, le 8000). +L'application fonctionne de manière autonome et expose un port (ici, le 8000). Le serveur (= l'hôte) choisit d'appliquer une correspondance entre "son" port 443 et le port offert par l'application (8000). \section{Connaissance et confiance des processus systèmes} @@ -193,7 +202,10 @@ Le serveur (= l'hôte) choisit d'appliquer une correspondance entre "son" port 4 Comme décrit plus haut (cf. \#6), l'application doit utiliser des processus \emph{stateless} (sans état). Nous pouvons créer et utiliser des processus supplémentaires pour tenir plus facilement une lourde charge, ou dédier des particuliers pour certaines tâches: requêtes HTTP \emph{via} des processus Web; \emph{long-running} jobs pour des processus asynchrones, \ldots Si cela existe sur l'hôte hébergeant l'application, ne vous fatiguez pas: utilisez le. -\includegraphics{images/12factors/process-types.png} +\begin{figure}[H] + \centering + \scalebox{1.0}{\includegraphics[max size={\textwidth}{\textheight}]{images/12factors/process-types.png}} +\end{figure} \section{Arrêts élégants et démarrages rapides} @@ -212,7 +224,10 @@ développement limitera les perturbations et facilitera la prise en compte d'arrêts inopinés (problème matériel, redémarrage du système hôte, etc.). -\includegraphics{images/12factors/process-type-chronology.png} +\begin{figure}[H] + \centering + \scalebox{1.0}{\includegraphics[max size={\textwidth}{\textheight}]{images/12factors/process-type-chronology.png}} +\end{figure} \section{Similarité des environnements} @@ -220,9 +235,9 @@ Conserver les différents environnements aussi similaires que possible, et limit L'exemple donné est un développeur qui utilise macOS, NGinx et SQLite, tandis que l'environnement de production tourne sur une CentOS avec Apache2 et PostgreSQL. Faire en sorte que tous les environnements soient les plus similaires possibles limite les divergences entre environnements, facilite les déploiements et limite la casse et la découverte de modules non compatibles, au plus proche de la phase de développement, selon le principe de la corde d'Andon \cite[p. 140]{devops_handbook} \index{Andon} \footnote{Pour donner un exemple tout bête, SQLite utilise un -\href{https://www.sqlite.org/datatype3.html}{mécanisme de stockage dynamique}, associée à la valeur plutôt qu'au schéma, \emph{via} un système d'affinités. Un autre moteur de base de données définira un schéma statique et rigide, où la valeur sera déterminée par son contenant. -Un champ \texttt{URLField} proposé par Django a une longeur maximale par défaut de \href{https://docs.djangoproject.com/en/3.1/ref/forms/fields/\#django.forms.URLField}{200 caractères}. -Si vous faites vos développements sous SQLite et que vous rencontrez une URL de plus de 200 caractères, votre développement sera passera parfaitement bien, mais plantera en production (ou en \emph{staging}, si vous faites les choses peu mieux) parce que les données seront tronquées, et que cela ne plaira pas à la base de données. +mécanisme de stockage dynamique \footnote{\url{https://www.sqlite.org/datatype3.html}}, associée à la valeur plutôt qu'au schéma, \emph{via} un système d'affinités. Un autre moteur de base de données définira un schéma statique et rigide, où la valeur sera déterminée par son contenant. +Un champ \texttt{URLField} proposé par Django a une longeur maximale par défaut de 200 caractères \footnote{\url{https://docs.djangoproject.com/en/3.1/ref/forms/fields/\#django.forms.URLField}}. +Si vous faites vos développements sous SQLite et que vous rencontrez une URL de plus de 200 caractères, votre développement sera passera parfaitement bien, mais plantera en production (ou en \emph{staging}, si vous faites les choses un peu mieux) parce que les données seront tronquées, et que cela ne plaira pas à la base de données. Conserver des environements similaires limite ce genre de désagréments.} @@ -239,7 +254,7 @@ La différence entre ces deux points vous fera, au mieux, gagner plusieurs heure \section{Isolation des tâches administratives} Evitez qu'une migration ne puisse être démarrée depuis une URL de l'application, ou qu'un envoi massif de notifications ne soit accessible pour n'importe quel utilisateur: les tâches administratives ne doivent être accessibles qu'à un administrateur. -Les applications 12facteurs favorisent les langages qui mettent un environnement REPL (pour \emph{Read}, \emph{Eval}, \emph{Print} et \emph{Loop}) \index{REPL} à disposition (au hasard: \href{https://pythonprogramminglanguage.com/repl/}{Python} ou \href{https://kotlinlang.org/}{Kotlin}), ce qui facilite les étapes de maintenance. +Les applications 12facteurs favorisent les langages qui mettent un environnement REPL (pour \emph{Read}, \emph{Eval}, \emph{Print} et \emph{Loop}) \index{REPL} à disposition (au hasard: \href{https://pythonprogramminglanguage.com/repl/}{Python} ou Kotlin \footnote{\url{https://kotlinlang.org/}}), ce qui facilite les étapes de maintenance. \section{Conclusions} diff --git a/chapters/tools.tex b/chapters/tools.tex index 7be0cfe..d576f6f 100644 --- a/chapters/tools.tex +++ b/chapters/tools.tex @@ -163,7 +163,7 @@ Il suffit alors de: \end{enumerate} Il existe plusieurs méthodes pour gérer ces flux d'informations. -Les plus connues sont \href{https://www.gitflow.com/}{Gitflow} et \href{https://www.reddit.com/r/programming/comments/7mfxo6/a_branching_strategy_simpler_than_gitflow/}{Threeflow}. +Les plus connues sont Gitflow \footnote{\url{https://www.gitflow.com/}} et Threeflow \footnote{\url{https://www.reddit.com/r/programming/comments/7mfxo6/a_branching_strategy_simpler_than_gitflow/}}. La gestion de versions de fichiers permet de conserver un historique de toutes les modifications enregistrées, associées à un horodatage et une description. diff --git a/images/diagrams/basic-automation.drawio.png b/images/diagrams/basic-automation.drawio.png index 9576097a1a52c773e5502871b67b7c95d7544562..2b7ff89970fda27cc03c476feb12d59f0cd9df32 100644 GIT binary patch literal 18700 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 Gp$PyG3mY>4 literal 17318 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 z
I#(Yddi}Gef^Zp~2rUI{p34lXLVI3I^?2rjO!~nrkDD<`Yn!2AuXbVF%BEyh# zIUzx>!mv;x47}pfaK+M)I= zduu*8Iy!2~&8GrS)&68CTJl)^ko*5-NUzwuViIC$&m>3Qj1`HPNxZ9a^wiGIu7X>4 zr`IQidsm;}o$~&|NdjFAhPgy96-m2eY*9Hr?hzSy>9tSKbjC3M2(_$z&KiOhN9Fwn zrYomc9hy<2#JYTWi|8S`MLY9Ek)Z6td87Xoka$y}XOw-Jk=e0>u)Mt(?$8$rPGaAH zgyb1NSOw|~%_CZ3mk<12m3aB6yot^4q+B3iAlZpM6ZTFB6s|0(lbsgn(IhQqO~3$# zkc!Ii12e4v5w~wojZsUQ&CG6rkks=(^8fE{LkxPKSxTETY>wAf z9?MDHciYY_KP(6NsQk%qV8>kw*?0K}ZW{@)dyAW_)YLK&o9G)uFR0eTdV!^hgd2jy zU`-eG|6DtA3hqn9nzzuu4}a1I;$*>5$`CfxXY%LH+da43q3-Cz@ei4U$)_X~8NlVb zg-L5?`?;WDQH)|GoP~VuZM8ryci^A)NfgQKYkWA#pd7rVL=TCH)9EM%8TgLQ=_nMH z#)?967Cv1$aA?-a0*}Ae4;#H#&~L<*|7kfeF5(^A4HcX z+N$72++Q4D-fh3n+o#;&VoVS%1EMb^aet3hE3l~!Ql%_u8am4rrq7B>lkt%hTynR0 z`}79gtbm4|=@UVSwfc%)zl2U@z+%OdYjh(0e+i0z{cZ?0soR6*>rLRZc|uUS+xXSn_C)PLv-W|F?4=oB;J`hz zd?%DC%Afc;X&YFNbm+xYx*XWXJtblzVV7bA*@X{Gl&7Ve-a!c*$91qX^(&|)*N?WO S%itex5b2{ZI!#(GiT^(