web-dev-qa-db-fra.com

Est-il recommandé de déployer un projet sur le serveur fichier par fichier manuellement?

L'entreprise pour laquelle je travaille actuellement ne met pas encore en œuvre la livraison continue. Nous déployons toujours le projet manuellement sur le serveur, fichier par fichier. Quelle est la meilleure pratique: déployer manuellement un artefact de projet pour chaque déploiement ou continuer le déploiement fichier par fichier?

26
Jake Muller

Quelle est la meilleure pratique? déployer manuellement un artefact de projet à chaque déploiement ou continuer le déploiement fichier par fichier?

Ni.

La meilleure pratique consiste à automatiser votre déploiement, complètement et exclusivement. Cela signifie que personne doit mettre n'importe quoi sur un serveur manuellement.

"Pour résumer le résumé du résumé: les gens sont un problème." (Douglas Adams)

Les gens font des fautes. Si l'un des fichiers que vous oubliez à copier est une "bibliothèque" partagée qui a été largement modifiée, vous pouvez faire planter l'ensemble du site de production.

103
Phill W.

Les étapes manuelles demandent beaucoup d'efforts et sont risquées: vous pourriez oublier un fichier nécessaire. Peut-être que tout le monde dans votre équipe ne sait pas quels fichiers doivent être copiés. Tous ces problèmes rendent les déploiements importants, intimidants et rares - complètement inutilement. L'automatisation résout ces problèmes.

Même l'étape d'automatisation la plus simple peut avoir de gros avantages, car les déploiements deviennent triviaux. Un script qui copie les fichiers ou les artefacts via (S) FTP ou Rsync ou une autre technologie est une excellente première étape. Vous pouvez ultérieurement développer ce script pour effectuer automatiquement les étapes de pré-déploiement et de post-déploiement sur le serveur, comme le redémarrage des services.

14
amon

La meilleure pratique serait de mettre en œuvre un processus automatisé quelconque.

Veillez à vérifier qu'il n'y a pas de raison particulière à l'approche "fichier par fichier" dont vous devriez tenir compte.

9
Ewan

Avec la livraison continue (ou le déploiement, en fait) et le déplacement de chaque fichier à la main, vous regardez les deux extrêmes. Il est parfaitement compréhensible que vous ne puissiez/ne souhaitiez pas (encore) créer un pipeline entièrement automatisé. Cependant, vous devriez envisager d'automatiser certaines parties du processus.

Déplacer chaque fichier à la main est assez risqué, et vous pouvez atténuer ce risque, par exemple, en marquant votre référentiel de code, en vérifiant cette balise sur votre ordinateur, en construisant vos artefacts et en les téléchargeant sur votre serveur. Chacune de ces étapes peut être automatisée pour être exécutée en quelques clics de souris, ce qui réduira considérablement le risque d'oublier un fichier ou de pousser accidentellement pour produire des fichiers supplémentaires.

Automatisez ce que vous pouvez, une étape à la fois. Le fait que vous ne puissiez pas vous permettre un pipeline de CD entièrement automatisé ne devrait pas vous décourager d'automatiser certaines pièces.

6
Blueriver

La meilleure pratique serait de faire une analyse coûts/avantages pour votre déploiement particulier pour votre entreprise particulière.

La réponse générale est "ne faites pas les choses manuellement, automatisez". C'est généralement la bonne réponse pour les types d'entreprises générales. L'uniformité des réponses que vous recevez devrait indiquer à quel point la communauté considère que ce sont les meilleures pratiques. Si votre entreprise estime que l'automatisation n'est pas le bon outil, elle doit avoir une idée de ce qui la rend unique. Cette spécificité doit être prise en compte dans votre processus de prise de décision. Il n'y a pas de "meilleures pratiques" lorsque l'échantillon est égal à 1.

Des questions telles que "combien de fichiers" et "à quelle fréquence les choses sont-elles mises à jour" et "quelles sont les conséquences de casser des choses" et "à quelle vitesse pouvez-vous annuler un mauvais changement" sont des questions importantes auxquelles il faut répondre. Si vous automatisez, bon nombre de ces questions deviennent sans importance, mais elles sont essentielles pour affecter correctement les coûts et les avantages d'un processus de mise à jour manuelle.

1
Cort Ammon

Il existe de nombreuses nuances de gris entre la copie manuelle fichier par fichier et la livraison continue.

Commencez par réduire la complexité du processus de déploiement, par exemple en utilisant un fichier Zip, un package de style rpm, une infrastructure comme outil de gestion de code (comme marionnette ou chef) ou même simplement un simple script qui copie les fichiers pour vous à partir d'un zone de transit sur le serveur ftp.

Les processus de déploiement comportant plus d'étapes manuelles sont plus susceptibles de comporter des erreurs (et donc d'échouer) - comme d'autres l'ont dit, supprimez l'élément humain.

Vous n'avez pas besoin de mettre en œuvre une livraison continue complète (ce qui est coûteux et nécessite des efforts/investissements/innovation au fil du temps) - commencez simplement, faites-le fonctionner, démontrez les avantages - et continuez à partir de là.

1
vikingsteve

Cela dépend de la technologie logicielle (ou pile) que vous utilisez (langage interprété, langage compilé, application de bureau, mobile, etc.), logiciel. dev. les politiques du service, si vous avez les outils pour l'automatiser, à quel point votre application est critique, et une chose importante à considérer est votre architecture logicielle (comment votre application a été conçue). C'est pourquoi vous avez ici des réponses différentes. En règle générale, la meilleure approche sera de réduire au maximum l'intervention humaine dans les tâches de déploiement, afin d'éviter les erreurs. Une bonne pratique consistera à tester tout sur un serveur QA (pensez à utiliser un serveur virtuel si le budget est un problème) avant le déploiement, et à avoir des procédures inverses pour restaurer la version précédente en cas de catastrophe ( TOUJOURS avoir une sauvegarde).

0
Edu Garcia