{"id":229516,"date":"2022-11-06T18:37:00","date_gmt":"2022-11-06T15:37:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229516"},"modified":"2022-11-09T08:16:31","modified_gmt":"2022-11-09T05:16:31","slug":"project-guardrails-environnements-de-provisionnement","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/project-guardrails-environnements-de-provisionnement\/","title":{"rendered":"Project Guardrails\u00a0: Environnements de provisionnement"},"content":{"rendered":"\n<p>Cette s\u00e9rie de brefs articles est compos\u00e9e de quelques choses que j&rsquo;ai apprises au cours des derni\u00e8res ann\u00e9es de projets bas\u00e9s dans le domaine dans lequel nous (en supposant que vous lisez ceci venant de la m\u00eame partie de l&rsquo;industrie que moi \ud83d\ude42) travailler.<\/p>\n<p>Si vous venez de tomber dessus, la s\u00e9rie couvre certains facteurs <a href=\"https:\/\/tommcfarlin.com\/tag\/open-source-project-management\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">importants pour un projet<\/a>\u00a0:<\/p>\n<ol>\n<li>Il ne devrait pas y avoir de \u00ab<a href=\"https:\/\/wordpress.mediadoma.com\/fr\/garde-corps-du-projet-conception-par-le-comite\/\" title=\"conception par un comit\u00e9\u00a0\u00bb.\">conception par un comit\u00e9\u00a0\u00bb.<\/a> &quot;<\/li>\n<li>Personne d&rsquo;autre que l&rsquo;\u00e9quipe de d\u00e9veloppement principale ne devrait \u00eatre en mesure d&rsquo;assurer le d\u00e9veloppement, la mise en sc\u00e8ne et la production.<\/li>\n<li>Personne ne devrait \u00eatre capable d&rsquo;\u00e9crire en production, sauf l&rsquo;\u00e9quipe de d\u00e9veloppement (et m\u00eame dans ce cas, il devrait y avoir un processus de d\u00e9ploiement).<\/li>\n<\/ol>\n<p>Je n&rsquo;aime pas vraiment \u00e9tablir des r\u00e8gles strictes et rapides comme celle-ci, notamment parce que les choses changent avec le temps, soit par n\u00e9cessit\u00e9, soit par plus d&rsquo;exp\u00e9rience. C&rsquo;est pourquoi j&rsquo;aime les &quot;lignes directrices&quot;.<\/p>\n<p>Mais au moment d&rsquo;\u00e9crire ces lignes, ce sont les choses que je vois se d\u00e9rouler.<\/p>\n<h2>Environnements de provisionnement<\/h2>\n<p>Au cours des derni\u00e8res ann\u00e9es, nous avons fait beaucoup de progr\u00e8s dans la rapidit\u00e9 avec laquelle nous pouvons provisionner nos syst\u00e8mes afin qu&rsquo;ils se refl\u00e8tent tous (ou g\u00e9n\u00e9ralement). Cela inclut nos bo\u00eetiers de d\u00e9veloppement, la fa\u00e7on dont nos machines locales refl\u00e8tent la mise en sc\u00e8ne et la fa\u00e7on dont la mise en sc\u00e8ne refl\u00e8te la production.<\/p>\n<p>Provisionnement d&rsquo;un nouvel environnement, plus ou moins. Roulez avec.<\/p>\n<p>C&rsquo;est-\u00e0-dire si cela &quot;fonctionne sur ma machine&quot; devrait \u00eatre vrai. Pas une excuse pour ne pas pouvoir reproduire un bug.<\/p>\n<p>Et quand c&rsquo;est vrai, c&rsquo;est probablement vrai sur les machines des autres, sur la mise en sc\u00e8ne et la production. Et c&rsquo;est sympa, non? Je veux dire, nous faisons tourner nos bo\u00eetes, d\u00e9ployons nos scripts ou faisons ce que nous faisons, puis nous avons la configuration dont nous avons besoin.<\/p>\n<p>Alors, qu&rsquo;est-ce que cela signifie d&rsquo;aborder les environnements de provisionnement\u00a0? Cela d\u00e9pend de l&rsquo;environnement auquel vous faites r\u00e9f\u00e9rence.<\/p>\n<h3>\u00c0 quoi cela ressemble-t-il vraiment\u00a0?<\/h3>\n<p>Si vous travaillez dans WordPress, ce que je suppose si vous lisez ceci, cela suppose que vous utilisez au moins un serveur Web, une base de donn\u00e9es et PHP.<\/p>\n<p>Un environnement de d\u00e9veloppement peut ressembler \u00e0 ceci\u00a0:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.apache.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Apache<\/a> de <a href=\"https:\/\/www.nginx.com\/resources\/wiki\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Nginx<\/a> ,<\/li>\n<li>MySQL qui est le plus courant,<\/li>\n<li>Au moins PHP 5.2.4 (avec PHP 7.1 recommand\u00e9),<\/li>\n<li>Ou quelque chose de comparable.<\/li>\n<\/ul>\n<p>Vous pouvez \u00e9galement utiliser quelque chose comme <a href=\"https:\/\/tommcfarlin.com\/laravel-valet-for-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Valet<\/a> ou quelque chose comme <a href=\"https:\/\/github.com\/Varying-Vagrant-Vagrants\/VVV\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VVV<\/a>. Tout d\u00e9pend de la nature de votre travail.<\/p>\n<p>De plus, selon la nature de votre entreprise, vous pouvez avoir un IDE qui vous est attribu\u00e9 ainsi que divers fichiers de configuration pour <a href=\"https:\/\/tommcfarlin.com\/following-the-wordpress-coding-standards\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">appliquer certaines r\u00e8gles<\/a>.<\/p>\n<h3>Et le reste des environnements\u00a0?<\/h3>\n<p>Comme d&rsquo;habitude:<\/p>\n<ul>\n<li>le d\u00e9veloppement fait r\u00e9f\u00e9rence \u00e0 la configuration sur votre machine locale,<\/li>\n<li>la mise en sc\u00e8ne fait r\u00e9f\u00e9rence \u00e0 la zone dans laquelle vous et les parties prenantes pouvez tester,<\/li>\n<li>et la production est l&rsquo;endroit o\u00f9 r\u00e9side l&rsquo;application.<\/li>\n<\/ul>\n<p>Mais cela semble \u00e9galement diff\u00e9rent selon l&rsquo;endroit o\u00f9 vous travaillez, la fa\u00e7on dont votre travail est organis\u00e9, etc. Il ne s&rsquo;agit pas tant de savoir comment il est utilis\u00e9 &#8211; il s&rsquo;agit de savoir comment il est utilis\u00e9.<\/p>\n<h4>Mise en sc\u00e8ne<\/h4>\n<p>Cela sera g\u00e9n\u00e9ralement provisionn\u00e9 sur un serveur (ou un groupe de serveurs selon la taille du projet) sur lequel vous pourrez d\u00e9ployer votre dernier code pour le tester. Il peut inclure des fonctionnalit\u00e9s partielles, des donn\u00e9es de test et uniquement un sous-ensemble d&rsquo;informations de la production (si vous choisissez d&rsquo;extraire ces informations, \u00e0 savoir la base de donn\u00e9es, de l&rsquo;environnement de production).<\/p>\n<p>Cela vous donne, \u00e0 vous et aux autres parties prenantes, la possibilit\u00e9 d&rsquo;examiner ce qui se passe et comment cela fonctionnera en production sans avoir \u00e0 vous soucier de d\u00e9truire quoi que ce soit de sensible.<\/p>\n<p>Le code est g\u00e9n\u00e9ralement d\u00e9ploy\u00e9 \u00e0 partir d&rsquo;une branche, g\u00e9n\u00e9ralement master, \u00e0 partir de votre r\u00e9f\u00e9rentiel Git (si c&rsquo;est ce que vous utilisez). Et des outils tels que <a href=\"https:\/\/deploybot.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DeployBot<\/a>, <a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">CircleCI<\/a>, <a href=\"https:\/\/travis-ci.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Travis CI<\/a>, <a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a>, <a href=\"http:\/\/behat.org\/en\/latest\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Behat<\/a>, etc. sont \u00e9galement utilis\u00e9s pour \u00e9valuer la qualit\u00e9 du code, ex\u00e9cuter des tests automatis\u00e9s, puis enfin d\u00e9ployer le code.<\/p>\n<p>En fin de compte, chaque environnement sera provisionn\u00e9 de mani\u00e8re \u00e0 pouvoir \u00eatre rapidement mis en miroir sur les machines locales, les serveurs interm\u00e9diaires et les serveurs de production. De plus, il devrait \u00eatre facile de pousser et d&rsquo;extraire des donn\u00e9es entre eux pour faciliter le travail avec les donn\u00e9es.<\/p>\n<h4>Production<\/h4>\n<p>Enfin, la production concerne le projet de fonctionnement r\u00e9el; Cela signifie que le serveur, l&rsquo;application et la base de donn\u00e9es s&rsquo;ex\u00e9cutent conjointement et sont utilis\u00e9s par les utilisateurs.<\/p>\n<p>Cela signifie \u00e9galement que le code est dans un endroit stable. Il existe probablement des m\u00e9canismes de journalisation en place qui informeront l&rsquo;\u00e9quipe de d\u00e9veloppement de tout probl\u00e8me. Aucun changement de code ne doit se produire dans cet environnement sans qu&rsquo;il ait d&rsquo;abord pass\u00e9 l&rsquo;AQ ou la mise en sc\u00e8ne.<\/p>\n<h3>Et les processus en place\u00a0?<\/h3>\n<p>Bon, disons que vous travaillez avec une configuration traditionnelle, faute d&rsquo;un meilleur terme, o\u00f9 tous vos d\u00e9ploiements sont effectu\u00e9s via S\/FTP dans un environnement de production (ou m\u00eame de mise en sc\u00e8ne). De cette fa\u00e7on, les utilisateurs peuvent extraire des fichiers, apporter des modifications et les remonter.<\/p>\n<p>Ce n&rsquo;est pas bon.<\/p>\n<p>Cela signifie que toute personne disposant des informations d&rsquo;identification peut se connecter, apporter les modifications et contourner le contr\u00f4le des sources, l&rsquo;int\u00e9gration continue, les outils d&rsquo;assurance qualit\u00e9, etc., effectuer les modifications souhait\u00e9es.<\/p>\n<p>Elle sape l&rsquo;ensemble des processus mis en place. Non seulement cette proc\u00e9dure standard de contournement (qui est en place pour une raison, bien s\u00fbr), mais elle finit par casser le code qu&rsquo;un d\u00e9veloppeur ou une \u00e9quipe de d\u00e9veloppeurs a sur leurs machines principalement parce que ce qui est en production n&rsquo;est plus synchronis\u00e9 avec le r\u00e9f\u00e9rentiel du code.<\/p>\n<p>De plus, ce code pourrait \u00eatre r\u00e9parti entre les succursales qui doivent encore \u00eatre fusionn\u00e9es ou d\u00e9ploy\u00e9es. Cela nous laisse avec une vari\u00e9t\u00e9 de situations dans lesquelles les d\u00e9veloppeurs et les clients ont rompu une partie du processus de construction et donc l&rsquo;ensemble du projet.<\/p>\n<p>Quand vient le temps de v\u00e9rifier la production, elle n&rsquo;est pas synchronis\u00e9e avec le d\u00e9veloppement et la mise en sc\u00e8ne, et personne ne sait pourquoi. Au moment du d\u00e9ploiement, les modifications sont \u00e9cras\u00e9es et les responsables ont perdu ce qu&rsquo;ils pensaient voir.<\/p>\n<h3>Qu&rsquo;est-ce qu&rsquo;une \u00e9quipe doit faire\u00a0?<\/h3>\n<p>Je ne sais pas s&rsquo;il y a une bonne r\u00e9ponse \u00e0 cela, mais plus je travaille longtemps dans cette industrie, plus je pense que l&rsquo;entreprise &#8211; ou les entreprises &#8211; responsable de la construction de la solution pour le client devrait avoir le contr\u00f4le du processus de bout en bout. finir.<\/p>\n<ul>\n<li>Les concepteurs sont responsables de la gestion de leurs domaines de cr\u00e9ation de concepts, de maquettes, de cr\u00e9ation de mod\u00e8les de d\u00e9monstration et de sollicitation de commentaires,<\/li>\n<li>Les chefs de projet sont responsables de la communication avec les d\u00e9partements,<\/li>\n<li>Les d\u00e9veloppeurs sont responsables de la mise en \u0153uvre de la solution et de la liaison entre le travail des concepteurs et le back-end fonctionnel,<\/li>\n<li>Le client est charg\u00e9 d&rsquo;examiner les modifications, de fournir des commentaires et de fournir toute autre information n\u00e9cessaire \u00e0 l&rsquo;ex\u00e9cution de la t\u00e2che.<\/li>\n<\/ul>\n<p>Cela signifie que lorsqu&rsquo;il s&rsquo;agit de configurer le domaine, l&rsquo;h\u00e9bergement, les environnements, le contr\u00f4le de version, le processus de construction et l&rsquo;int\u00e9gration continue, et tout ce que j&rsquo;ai n\u00e9glig\u00e9 de mentionner, incombe directement \u00e0 l&rsquo;\u00e9quipe de d\u00e9veloppement.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166423-61e793a807c63.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166423-61e793a807c63.jpg\" alt=\"Project Guardrails\u00a0: Environnements de provisionnement\" ><\/a><\/p>\n<p>Restez dans les tranch\u00e9es, restez sur la cible (mais faites attention \u00e0 ceux qui vous entourent).<\/p>\n<p>En termes simples, ce ne sont pas les responsabilit\u00e9s du client et elles ne devraient pas l&rsquo;\u00eatre. Les limites de responsabilit\u00e9 doivent \u00eatre d\u00e9finies, maintenues et respect\u00e9es dans toutes les \u00e9quipes &#8211; pas seulement les d\u00e9veloppeurs et les clients ou les clients et les concepteurs ou les concepteurs et les d\u00e9veloppeurs, etc.<\/p>\n<h2>Et apr\u00e8s?<\/h2>\n<p>Dans le prochain article, je parlerai des responsabilit\u00e9s des d\u00e9veloppeurs (et des autres parties prenantes) dans la maintenance des environnements pour le code.<\/p>\n<p>Autrement dit, qui devrait \u00eatre responsable de quoi et qui a acc\u00e8s pour lire et \u00e9crire quelles donn\u00e9es et comment cela peut finalement avoir un impact sur le r\u00e9sultat du projet.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Qu&rsquo;est-ce que cela signifie d&rsquo;aborder les environnements de provisionnement\u00a0? Cela d\u00e9pend vraiment de l&rsquo;environnement dont vous parlez, alors regardons chacun.<\/p>\n","protected":false},"author":1,"featured_media":166424,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[717,748],"tags":[1167],"class_list":["post-229516","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developpeur","category-open-source-projektmanagement-2","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=229516"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229516\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/166424"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}