Is Implementing Continuous Integration Worth It?

L'intégration continue en vaut-elle la peine?

CRoss-Posté avec l'autorisation de promet source

Lorsque vous commencez à aborder le sujet de l'intégration continue (ou ci pour le court) pour la première fois avec une organisation ou un projet, il ya souvent des questions typiques qui se posent.

  • Avons-nous vraiment besoin de faire cela?
  • Ça va pas coûter cher? On peut sauter?
  • Est-ce que cela vaut la peine pour notre type de projet?

Chez promet, nous travaillons dans le monde de la plate-forme open source Drupal, et j'ai eu plus de quelques conversations avec des personnes à diverses entreprises et organisations concernant l' intégration continue de leurs projets et sites Drupal et comment il influe sur leur clients.

Depuis que nous avons parlé des pratiques et des outils ci tout à fait un peu récemment à promet et dans toute la communauté Drupal, je voulais partager quelques réflexions supplémentaires sur cette question de besoin et de valeur. L'intégration continue s'applique-t-elle à un projet CMS Web? Ce type de question est toujours en place, et la réponse courte est oui. Les projets de système de gestion de contenu Web--si vous employez Drupal ou à peu près n'importe quel autre logiciel de CMS de nos jours--sont des projets d'application Web ou de site Web. Ils suivent et adhèrent à bon nombre des mêmes normes et des meilleures pratiques que n'importe quel autre projet de logiciel. Bien qu'un projet de site Web et le déploiement peut sembler simple, il peut en fait être assez complexe de nos jours.

Un projet impliquant un CMS, tout en réduisant beaucoup d'efforts pour la gestion de contenu, introduit souvent une partie de cette complexité dans le déploiement de sites Web dans le cadre du compromis. Long Gone sont les jours de votre webmaster déplacer manuellement des fichiers via FTP pour déployer votre site Web (et bon débarras). Parlez à d'autres ou jetez un oeil à travers les forums et les messages pour le logiciel CMS (n'a pas d'importance si c'est un CMS basé sur PHP comme Drupal ou a. NET, un CMS open source ou propriétaire). Vous verrez que beaucoup de gens sont à la recherche à des problèmes similaires dans leurs projets de site Web et de discuter des moyens de mettre en œuvre ci pour atténuer les risques communs. Voici une liste de contrôle rapide pour vous des questions typiques:

  1. Vous êtes "Going Commando" sans gestion du code source pour votre site et processus de déploiement. Pas de repérage. Pas de Rollback.
  2. Vous déployez manuellement entre les environnements. C'est lent. C'est cassant. C'est douloureux.
  3. Vous êtes coincé dans un "désordre chaud" de hotfixes. Ne pas découvrir les problèmes tôt. Forcé à faire des changements tard dans le jeu.
  4. Vous modifiez manuellement les configurations CMS. Et le faire sur des environnements de mise en scène ou de production! (tous ceux qui ont déjà travaillé sur un projet Drupal connaissent déjà celui-ci.)
  5. Vous entendez le tout trop commun "il fonctionne sur ma machine" prononcé par vos développeurs. Mais alors il rompt sur la mise en scène et la production. Maintenant, jumelez cela avec les déploiements manuels... pas marrant.
  6. Vous n'avez pas de builds de site automatisées ou de tests automatisés en place. QA correcte est douloureuse, voire inexistante.
  7. Vous obtenez un rapport d'état de votre serveur ci (par exemple, réussite/échec)
    my-machine

Si vos développeurs hochent la tête sur l'un de ces problèmes ou similaires, alors vous êtes déjà à un endroit où ci s'applique. Comprendre que ci ne va pas magiquement tout réparer à la fois, mais il peut vous remettre sur la bonne voie à un meilleur projet Web CMS et commencer à faire quelques différences tangibles.

En aparté pour les implémentations Drupal, nous continuons à voir un besoin croissant de pratiques ci pour soutenir les demandes de développement croissant. Le poinçon One-Two de Drupal de plate-forme et d'application de CMS de Web conduit son utilisation croissante pour des exécutions qui doivent évoluer dehors et vers le haut et pour des projets plus complexes impliquant souvent des intégrations multiples. Combinez cela avec les demandes d'affaires croissantes d'aujourd'hui pour des changements plus rapides, le temps plus rapide au marché, moins d'erreurs, et la livraison plus rapide, et la question de la nécessité de ci dans beaucoup de projets de Drupal devient rapidement moins de «si» et plus de «quand».

L'intégration continue ne coûte-t-elle pas beaucoup? On ne peut pas juste sauter?

Une idée fausse commune est simplement de penser à ci comme frais généraux dans un projet Web, et des frais généraux coûteux à cela.

Obtenir les mises à jour

Recevez le meilleur contenu sur l'avenir du marketing, les changements de l'industrie, et d'autres leadership de la pensée.

Tout d'abord, est-ce vraiment tout ce qui coûte cher à mettre en œuvre certaines pratiques de base ci dans votre processus de développement? Pas vraiment. Jetons un coup d'oeil à un exemple assez typique de workflow ci avec Drupal.

  1. Vos développeurs commettent du code dans un référentiel (par ex. dans Git)
  2. Ils poussent ce code jusqu'à
  3. La mise à jour du référentiel déclenche un travail sur votre serveur ci (par ex. sur Jenkins)
  4. Le travail débute automatiquement le déploiement du code
  5. Il exécute les commandes Drush pour mettre à jour la base de données et rétablir les fonctionnalités
  6. Il exécute quelques tests sur la construction du site (par exemple, unité automatisée, fumée, fonctionnelle, régression, tests d'acceptation)
  7. Vous obtenez un rapport d'état de votre serveur ci (par exemple, réussite/échec)

Tandis que vous aurez différentes variations, étapes, etc. pour ce type de processus en fonction de votre projet Drupal et il peut certainement être plus complexe, le concept général est le même. Oui, il faut un certain effort pour obtenir ce travail pour Drupal, mais ce n'est pas une tâche titanesque et il ya améliorer les outils et les services qui peuvent vous aider (j'ai noté quelques exemples Open source et vous pouvez trouver plus d'informations dans nos postes supplémentaires et des présentations sur ci énumérés un t la fin).

Deuxièmement, l'idée que nous devrions simplement sauter ce si elle ne nous coûte (temps, argent, etc) est franchement pas trop convaincant quand vous y pensez. Oui, il va coûter quelque chose pour commencer, mais les coûts de ne rien faire sont souvent beaucoup plus élevés.

Revenons à l'un des thèmes communs pour ci. Plus tôt vous obtenez des commentaires, plus tôt vous identifiez les problèmes et le moins coûteux qu'ils sont à fixer. Dites que vous ignorez la mise en œuvre des pratiques ci pour votre projet et de vivre avec certains des problèmes du drapeau rouge que j'ai référencé plus tôt. Êtes-vous vraiment économiser de l'argent dans votre projet de cette façon? Ces questions ont tendance à s'envenimer et se composent comme un projet va, et ils obtiennent encore plus prononcé après que vous lancez votre site et doivent vivre avec elle pour le long terme.

Les problèmes que vous avez manqués au début de votre projet et patché avec des correctifs en retard dans le jeu ont tendance à coûter des dollars sérieux plus tard pendant le support et Pendant les mises à niveau. Il y a souvent une hausse très forte des coûts relatifs pour la fixation des défauts aux stades ultérieurs.

defect cost

En regardant nos propres expériences à promet, nous faisons beaucoup de soutien pour les sites Drupal que les gens apportent à nous qui ont été construits par quelqu'un d'autre. Nous avons vu notre juste part de "le bon, le mauvais, et le laid". Nous parlons souvent de la nécessité d'un développement durable et des pratiques opérationnelles pour les sites Drupal.

Notre point est que vous avez besoin d'une approche lors de la construction d'un site avec Drupal qui ne vous laisse pas avec un tas de dettes techniques. Les bonnes pratiques comme ci sont un élément clé de cette approche. Le vieil adage, «payez maintenant ou payez plus tard» s'applique définitivement et ne devrait pas être pris à la légère, particulièrement vous traitez de plusieurs projets et sites qui doivent être maintenus au fil du temps et continueront à changer pendant que les besoins de vos clients évoluent.

Mon projet est-il le bon type pour utiliser l'intégration continue? Puis-je attendre et le faire plus tard?

Même après avoir compris que ci s'applique aux projets de CMS Web et que ses avantages l'emporteront sur les coûts, il reste souvent des questions sur le «type de projet» pour l'utilisation de ci et quand vous devriez chercher à mettre en œuvre les pratiques ci.

La réponse simple pourrait être «tous les projets» que vous faites, mais ce n'est pas nécessairement la réponse réaliste selon les circonstances. Il ya des scénarios où ci ne peut pas être utile la première fois hors de la porte ou jamais (par exemple un projet qui est très petit, très court, et statique-un site qui ne sera jamais revisité à ajouter ou à améliorer).

Une autre réponse typique est d'utiliser ci pour les grands projets. En effet, parfois vous verrez ci suggéré ou recommandé dans les meilleures pratiques que pour la construction de "grands" sites Drupal. Par exemple, les pratiques typiques pour un «grand» projet Drupal sont souvent donnés comme:

  • Obtenez votre configuration dans le code ("fonction (Featurize")
  • Utiliser Git pour le contrôle du code source
  • Utilisez Drush (le couteau suisse de Drupal)
  • Utiliser l'intégration continue (il est là!)
  • Utiliser le vagabond pour les environnements de développement local
  • Obtenez votre infrastructure dans le code (gestion de configuration)
  • Utilisez plusieurs options pour la mise à l'échelle de Drupal (p. ex. Vernis, Memcache, optimisations de bases de données, configurations haute disponibilité, etc.)

Cependant, il peut être une erreur de penser à ci comme seulement pour un «grand» projet. Tout d'abord, si vous n'avez pas l'habitude d'utiliser les pratiques ci, lorsque vous obtenez ce grand projet que vous êtes susceptible d'être derrière et atterrir en difficulté. En outre, le coût a tendance à conduire plus haut si vous êtes en attente de mettre en œuvre ci pour la première fois jusqu'à ce grand projet supercritique. Deuxièmement, rappelez-vous que la visibilité est importante pour tous les projets, et Starting ci vous aide à vous assurer que tout le monde s'habitue à voir ce qui se passe facilement avec la construction et le statut de test sur chaque projet.

ci-cartoon

Conseil d'intervenant d'affaires:
Lorsque vous planifiez plusieurs projets et que vous avez des projets plus complexes à l'horizon, profitez de vos petits projets pour commencer à mettre en œuvre ci et vous couper les dents. Si votre équipe de développement ou le fournisseur n'est pas familier avec ci, puis apporter une aide supplémentaire pour les faire introduire et de compétences avec ci. Utilisez l'aide-Conseil pour faire démarrer votre équipe sur le petit projet et être là pour les aider sur le grand projet.

Bien qu'il n'y ait pas de réponse «taille unique», voici quelques exemples de types de projets où ci est essentiel et souvent critique:

  • Si vous avez plusieurs développeurs sur votre équipe, en particulier ceux qui peuvent changer au fil du temps.
  • Si votre site est développé par une équipe distribuée, en particulier répartis géographiquement à travers différents fuseaux horaires.
  • Si votre projet inclut l'intégration avec d'autres systèmes.
  • Si vous gérez des transactions sur votre site.
  • Si vous traitez votre site comme un produit où vous recueillez régulièrement des commentaires et libérant des fonctionnalités sur le cycle de vie du site.

Résumé

À la fin de la journée, si vous construisez une application Web ou un site Web avec une plate-forme CMS comme Drupal, mise en route avec une intégration continue pour votre projet est une bonne chose à faire.

  • Il vous aidera à atténuer les risques et à améliorer la qualité.
  • Le coût pour commencer avec ci n'est probablement pas aussi élevé que vous le pensez. Rappelez-vous, certains des coûts d'installation seront utilisés dans tous vos projets futurs, ainsi les coûts à long terme de ci comme frais généraux seront considérablement réduits.
  • De nombreux types de projets peuvent bénéficier de ci, et pas seulement des grands. Votre point de rentabilité pour la mise en œuvre de ci n'est pas basé sur la taille du projet ou la taille de votre équipe de développement, mais beaucoup plus sur le cycle de vie de vos sites. Plus vous vivrez avec eux et continuerez à les construire et à les développer, plus le ci vous aidera à réduire vos coûts et à améliorer le rendement.
  • L'automatisation des builds et des tests avec les processus ci peut éliminer des heures et souvent des jours dans un projet chaque fois que de nouvelles fonctionnalités sont développées, testées et publiées. Multiple que par de multiples projets ou sites et les réponses aux questions de besoin et de valeur pour ci deviennent facilement évidentes.

Conseil d'intervenant d'affaires:
Si votre équipe de développement ou le fournisseur ne mentionne aucun de ces types de choses liées à ci ou partager la visibilité avec vous dans leurs processus de développement et de test, vous devriez courir pour les collines (non, pas vraiment). Au lieu de cela, vous devriez leur demander d'expliquer leurs processus et comment ils assureront le développement des meilleures pratiques et l'AQ pour votre site. Vous ne pouvez jamais creuser vers le bas dans leur code s'engage dans Git ou des tests de construction de site, mais il est bon de savoir que vous pouvez et même plus agréable de savoir qu'ils sont la pratique du développement de la qualité et des tests avec ci.

Astuce développeur:
Soyez ouvert avec vos parties prenantes ou vos clients sur ce que vous savez et ne savez pas. Offrez-vous de mettre sur pied des développeurs plus expérimentés pour vous aider dans votre équipe. Drupal est une communauté open source assez sympathique et beaucoup de gens sont souvent disposés à aider et à augmenter une autre équipe de développement pour construire la capacité collective. Consultez également un DrupalCamp local ou une rencontre. Les pratiques ci sont un sujet brûlant et souvent soulevées comme point de conversation et de partage.

Astuce stratégie Drupal:
Si votre entreprise ou organisation est fortement investi dans Drupal, et vous utilisez Drupal stratégiquement à travers le Conseil comme la plate-forme CMS Web de choix (une université ou un État ou un organisme fédéral qui est la normalisation sur Drupal pour tous les sites est un bon exemple), payer un supplément attention au ci. Être capable d'exécuter n'importe lequel de vos projets de site Drupal par le biais d'un processus standard ci est la clé pour assurer la qualité à long terme, la résilience et le soutien.