Fermer

septembre 3, 2019

Automatisation des déploiements de sites Web via Buddy


À propos de l'auteur

Leonardo Losoviz est le créateur du modèle de composant API + pour PHP +, un cadre pour la construction de sites appelé PoP . Il habite à Kuala Lumpur en Malaisie.
Plus d'informations sur
Leonardo
Leonardo

La pile de sites Web typique est devenue complexe, impliquant de nombreux outils et technologies et nécessitant une automatisation pour gérer son déploiement correctement. Dans cet article, examinons de plus près Buddy l’un des outils les plus complets pour l’automatisation du déploiement de sites Web.

(Cet article est sponsorisé.) La gestion du déploiement d’un site Web était autrefois simple. : Il s’agissait simplement de télécharger des fichiers sur le serveur via FTP et vous en avez presque terminé. Mais ces jours sont révolus: les sites Web sont devenus très complexes, impliquant de nombreux outils et technologies.

De nos jours, un projet Web typique peut nécessiter l'exécution d'outils de création permettant de compresser des éléments et de générer les fichiers livrables destinés à la production, puis de les télécharger. sur un CDN et invalider les codes obsolètes, exécutez une combinaison de test pour vous assurer que le code ne contient pas d’erreur (pour le code client et le code côté serveur), effectuez des migrations de base de données (et, pour plus de sécurité, exécutez d’abord une sauvegarde du fichier). base de données), instancier le nombre souhaité de serveurs derrière un équilibreur de charge et déployer l'application sur ceux-ci (via un déploiement atomique, afin que le site Web soit toujours disponible), télécharger et installer les dépendances, déployer des fonctions sans serveur et enfin informer l'équipe que tout est prêt, que ce soit par Slack ou par courrier électronique.

Tout ce processus semble un peu exagéré, non? Eh bien, en réalité, est trop . Comment pouvons-nous éviter d'être submergés par la complexité de la tâche à accomplir? La solution se résume à un seul mot: Automation. En automatisant toutes les tâches à exécuter, nous ne redouterons pas le déploiement (et en ayant un doigt en sueur tremblant lorsque nous appuierons sur le bouton Entrée), nous ne le saurons peut-être même pas.

L'automatisation améliore la qualité de notre travail, étant donné que nous pouvons éviter de devoir exécuter maintes et maintes tâches insensées manuellement, ce qui nous permettra de consacrer tout notre temps à la codification et nous assurera que le déploiement n'échouera pas à cause d'erreurs humaines (telles que le remplacement du mauvais dossier par exemple). les anciens jours FTP).

Introduction à l'intégration, à la livraison et au déploiement continus

La gestion et l'automatisation du déploiement de logiciels impliquent des outils et des processus. En particulier, Git en tant que système de contrôle de version où stocker notre code source et la disponibilité des services d’hébergement Git (tels que GitHub, GitLab et BitBucket) qui déclenchent des événements lorsque du nouveau code est inséré dans le référentiel, permettent de processus suivants:

  • Intégration continue
    La stratégie de fusion des modifications du code dans la branche principale aussi souvent que possible, sur laquelle des tests automatisés sont exécutés sur une construction de la base de code pour valider que le nouveau code n'introduit pas
  • Continuous Delivery
    Une extension de l'intégration continue qui automatise également le processus de validation, permettant de déployer le projet en production à tout moment;
  • Continuous Deployment
    Une extension de la livraison continue qui déploie automatiquement nouveau code à chaque fois qu’il réussit tous les tests requis (même une petite modification qu’il peut contenir), ce qui permet d’identifier facilement la source de tout problème pouvant survenir et d’éliminer la pression L’équipe n’a plus besoin de faire face à une «journée de lancement»

L’adhésion à ces stratégies présente plusieurs avantages. Le plus immédiat est que notre produit peut fournir de nouvelles fonctionnalités plus rapidement. En effet, elles peuvent être mises en ligne dès que l'équipe a fini de les coder. L’équipe peut également recevoir des commentaires immédiatement (des membres de l’équipe sous un environnement de développement, du client sous un environnement intermédiaire et des utilisateurs après sa mise en production) et être en mesure de réagir immédiatement, créant ainsi une boucle de rétroaction positive. Et comme l'ensemble du processus est entièrement automatisé, l'équipe peut gagner du temps et se concentrer sur le code, améliorant ainsi la qualité du produit.

 La ​​diffusion continue permet d'obtenir un retour le plus tôt possible
La livraison continue permet d'obtenir le retour le plus tôt possible. comme possible. ( Grand aperçu )

Présentation de Buddy, un outil pour l’automatisation du déploiement de logiciels

La popularité de Git a donné naissance à une nouvelle génération d’outils permettant de gérer la complexité des déploiements de logiciels. Buddy est l'un de ces nouveaux outils, né dans le but de faciliter la mise en œuvre de l'intégration / livraison / déploiement continu, tout en élargissant le nombre de fonctionnalités que notre application peut fournir, en améliorant sa qualité et en réduisant ses coûts. en permettant d'intégrer les offres des fournisseurs de services en nuage les meilleurs ou les moins chers (parmi lesquels AWS, DigitalOcean, la plateforme Google Cloud, Cloudflare, Rackspace, Azure, etc.) dans nos piles. Ainsi, par exemple, notre application peut être hébergée sur GitHub, être protégée contre les attaques DDoS par Cloudflare, hébergée par DigitalOcean de fichiers statiques, utiliser les fonctions sans serveur de AWS Lambda et authentifier les utilisateurs via Firebase, le tout étant géré de manière transparente. [19659005] Buddy fonctionne via l’utilisation de pipelines: ensembles d’actions définies par le développeur dans un ordre spécifique, exécutées manuellement ou automatiquement lors de l’exécution d’un push Git, qui transfèrent l’application depuis un référentiel Git là où elle est nécessaire et la transforment au besoin. Les pipelines sont extrêmement flexibles, permettant aux développeurs d'ajouter uniquement les actions requises et de les personnaliser pour leurs besoins spécifiques.

Par exemple, le pipeline suivant effectue toutes les tâches requises pour déployer une application Node.js: exécutez l'étape de construction, téléchargez les fichiers. sur le serveur via SFTP, téléchargez les actifs sur AWS S3 et purgez-les du CDN, redémarrez le serveur et informez ensuite l'équipe via Slack (comme l'indique l'image ci-dessous, le pipeline peut être explicite): [19659023] Exemple de pipeline Buddy « />

Exemple de pipeline pour déployer une application Node.js. ( Grand aperçu )

Nous pouvons créer différents pipelines pour différents environnements et exécuter des actions spéciales en cas d'échec du processus (par exemple, en cas d'échec du test lorsque le serveur sur lequel le déploiement est arrêté est en panne, ou autres. ). Par exemple, le pipeline suivant (pour déployer une application Node.js & PHP utilisant DigitalOcean, Fortrabbit & AWS CloudFront pour l'hébergement ) effectue une sauvegarde des actifs et purge le CDN uniquement lors du déploiement en production, puis envoie une notification à l'équipe via Slack en cas d'échec:

 Démonstration du pipeline Buddy
Pipeline configuré pour différents environnements. ( Grand aperçu )

Un effet remarquable de la configuration de nos pipelines avec des actions de différents fournisseurs de services de cloud computing est que nous pouvons commuter facilement entre eux chaque fois que le besoin s'en fait sentir, ce qui permet d'éviter facilement le blocage des fournisseurs. (cela inclut également le changement de fournisseur de référentiel ). Buddy propose un peu plus de 100 actions prêtes à l'emploi et permet également aux développeurs de créer et d'utiliser leurs propres actions. Cette image montre toutes les actions facilement disponibles:

 Actions de copain
Actions prêtes à l'emploi dans Buddy. ( Grand aperçu )

Création d’un pipeline

Voyons comment créer un pipeline simple pour tester et déployer une application Node.js et envoyer une notification à l’équipe. La première étape consiste à créer un nouveau projet au cours duquel vous serez invité à sélectionner le fournisseur d'hébergement du projet (parmi GitHub, GitLab, Bitbucket, Buddy Git Hosting et votre serveur Git privé), puis à sélectionner le référentiel: [19659033] Étape 1 du tutoriel: Sélection du fournisseur d'hébergement « />

Sélection du fournisseur d'hébergement ( Grand aperçu )

Nous pouvons ensuite créer le pipeline, en spécifiant quand il doit être exécuté (manuellement, automatiquement après un nouveau code est poussé vers le référentiel, ou automatiquement chaque fois x) et de quelle branche:

 Étape 2: Création d'un nouveau pipeline
Création d'un nouveau pipeline ( Grand aperçu )

Ensuite, nous pouvons ajouter des actions au pipeline. Pour cela, il suffit de cliquer sur le bouton «+» pour ajouter une nouvelle action, sur laquelle nous devons la configurer selon les besoins. Pour créer et tester une application Node.js, nous ajoutons et configurons une action «Node.js»:

 Étape 3 de l’instruction: Ajout d’une action Node.js
Ajout d’une action Node.js ( Grand aperçu )

Après avoir testé l'application, nous pouvons la déployer en la téléchargeant sur notre serveur de production via SFTP. Pour cela, nous ajoutons une action "SFTP" et la configurons à l'aide de variables d'environnement personnalisées $ {SFTP} et $ {SFTP_USER} :

. Étape 4 du tutoriel: Ajout une action SFTP
Ajout d'une action SFTP ( Grand aperçu )

Enfin, nous envoyons un courrier électronique à l'équipe avec les résultats de l'exécution. Pour cela, nous ajoutons et configurons l’action «Email»:

 Étape 5: Ajout d’une action Email
Ajout d’une action Email ( Grand aperçu )

C’est tout. Notre pipeline ressemblera à ceci:

 Étape 6: Pipeline terminée
Pipeline terminée ( Grand aperçu )

À partir de ce moment-là, si le pipeline est configuré pour être exécuté lorsque le nouveau code est L'exécution du pipeline est alors poussée vers le référentiel.

Rester constamment à jour

Le développement Web évolue constamment, de nouveaux outils et services étant lancés sans interruption. , certains d'entre eux deviennent souvent une tendance chaude immédiatement et la nouvelle normale à peine quelques mois plus tard. Les technologies rarement entendues il y a quelques années gagnent progressivement en importance et deviennent finalement un must (recherche vocale, apprentissage automatique, WebAssembly), de nouveaux frameworks et bibliothèques offrent de nouvelles méthodes de construction de sites (GraphQL, Gatsby, Next.js, Nuxt.js), et nos applications doivent être accessibles à partir d'appareils nouvellement inventés (Amazon Echo, systèmes embarqués). Pour que nos applications restent pertinentes, nous devons évaluer en permanence les dernières offres et décider de les ajouter à notre pile technologique. Il est donc extrêmement important que nos plates-formes de développement d'applications ne limitent pas les technologies que nous pouvons utiliser.

Buddy résout ce problème en recueillant en permanence les réactions de ses utilisateurs sur leurs besoins (sondages auprès des utilisateurs, leur forum canaux de communication et tweets ), et son équipe s’efforce de fournir les fonctionnalités requises. Le blog Buddy donne un aperçu de l’intense rythme du développement. Par exemple, au cours des derniers mois, ils ont implémenté des fonctionnalités permettant à de créer des applications statiques et des sites Web avec Gatsby déployés vers UpCloud et Google Cloud Functions ouvrant des pipelines avec des Webhooks s’intégrant à Firebase construisant et exécutant des conteneurs Docker sur AWS ECS et beaucoup d'autres.

Conclusion

L'automatisation est devenue une nécessité pour ne pas être submergé par la complexité du déploiement de sites Web modernes. Nous pouvons utiliser l'intégration / la livraison / le déploiement continus (facilement réalisables en hébergeant notre code source via Git) pour raccourcir le temps nécessaire à la fourniture de nouvelles fonctionnalités dans nos applications et à la récupération des commentaires des utilisateurs.

Buddy vous aide dans cette tâche. permettre aux développeurs de créer des pipelines pour exécuter des actions concernant un large éventail de technologies et de fournisseurs de services de cloud computing, et de combiner ces actions de toutes les manières possibles pour répondre aux besoins les plus particuliers.

Vous pouvez accéder à Buddy pour libre pendant 2 semaines et, si vous avez besoin d'héberger vos données, vous pouvez aussi les installer dans vos propres locaux .

 Un éditorial éclatant (ms, ra, yk, il)




Source link