Introduction à Spinnaker

1. Vue d'ensemble

Dans ce didacticiel, nous allons examiner Spinnaker, une plate-forme de livraison continue open source construite par Netflix. Nous pouvons l'utiliser pour déployer nos applications sur plusieurs fournisseurs de cloud.

Le système est construit sur Spring Boot et prend en charge de nombreux fournisseurs de cloud.

Nous verrons comment cela fonctionne et dans quels cas nous pouvons l'utiliser.

2. Arrière plan

Jetons un coup d'œil à l'histoire du développement logiciel. Tout d'abord, nous avons eu la cascade avec des versions peu fréquentes.

Après cela, nous avons commencé à travailler Agile et avons fourni des fonctionnalités à chaque sprint. Cependant, nous n'avons toujours pas déployé en production à chaque sprint. Malheureusement, les utilisateurs ne pouvaient toujours pas utiliser les nouvelles fonctionnalités, qui se trouvaient sur une étagère.

Il y avait des raisons de ne pas se déployer régulièrement. L'un d'eux était le fait que les étapes de déploiement étaient souvent exécutées manuellement et sujettes à des erreurs humaines.

De plus, certaines personnes pensaient que déployer plus souvent signifiait plus de risques de problèmes potentiels. De nos jours, nous sommes généralement d'accord pour dire que déployer de petits changements signifie moins de risques de grosses erreurs. Même ainsi, s'il y a une erreur, nous pouvons la localiser rapidement dans le petit changement et publier une nouvelle version qui résout le problème.

3. Spinnaker

Avec Spinnaker, nous pouvons utiliser la livraison continue ou le déploiement continu pour lancer automatiquement notre application en production. La livraison continue signifie que tout est préparé pour une sortie de production.

Cependant, la version est approuvée manuellement avant le déploiement de l'application en production. Un déploiement continu signifie qu'il n'y a pas d'intervention manuelle. Toutes les étapes sont exécutées, y compris le déploiement en production. Nous poussons simplement notre code d'application vers un système de contrôle de version et c'est tout.

De la transmission de notre code au contrôle de version jusqu'au déploiement en production, nous pouvons exécuter de nombreuses étapes. Nous pouvons construire notre code, tester le code unitaire, le déployer sur un environnement de test et exécuter des tests fonctionnels. Nous utilisons un soi-disant pipeline pour configurer toutes ces étapes.

Avec Spinnaker, nous pouvons créer un tel pipeline et déployer notre application sur la plupart des fournisseurs de cloud.

4. Composants

Spinnaker se compose essentiellement de deux parties: une couche d'abstraction au-dessus de divers fournisseurs de cloud et un outil de livraison continue.

4.1. Déploiements cloud traditionnels

Quand on regarde les fournisseurs de cloud, ils offrent tous plus ou moins les mêmes services. Ces services incluent des éléments tels que la prise en charge des instances, sans serveur et des conteneurs.

Cependant, la configuration de ces services varie considérablement entre les fournisseurs. Cela rend plus difficile le passage d'un fournisseur à l'autre. Il faut un certain temps pour passer à un autre fournisseur de cloud et apprendre tous les détails, ce qui signifie que nous avons essentiellement un verrouillage du fournisseur avec notre fournisseur de cloud.

Netflix voulait avoir la possibilité de basculer facilement entre les fournisseurs de cloud, plutôt que de dépendre d'un seul. C'est pourquoi ils ont construit une couche d'abstraction au-dessus des fournisseurs de cloud.

4.2. Couche d'abstraction

Lorsque nous utilisons Spinnaker, c'est la même chose sur tous les fournisseurs de cloud. Nous pouvons l'utiliser sur Amazon Web Services, Microsoft Azure, Google Cloud Platform, OpenStack, Google App Engine ou Kubernetes. Cela nous permet de passer à un autre fournisseur de cloud si les prix sont plus compétitifs.

De plus, nous pouvons choisir de déployer sur plusieurs fournisseurs en même temps. De cette façon, nous pouvons exécuter notre application sur deux ou plusieurs fournisseurs pour une redondance supplémentaire.

Un autre avantage de la couche d'abstraction est qu'elle se concentre sur les applications plutôt que sur les ressources. Normalement, les fournisseurs de cloud nous montrent les ressources que nous utilisons actuellement. Cependant, nous devons déterminer nous-mêmes quelle application utilise quelles ressources.

Mais les ressources ne sont pas intéressantes pour nous. Nous voulons exécuter notre application sans perdre de temps à suivre les ressources. Spinnaker a une vue centrée sur l'application. Ainsi, lorsque nous l'examinons, nous voyons d'abord l'application, puis nous voyons les ressources utilisées par l'application.

4.3. Livraison continue

En plus de la couche d'abstraction, Netflix a construit une plate-forme de livraison continue. Cette plateforme nous permet de déployer notre application sur un ou plusieurs fournisseurs de cloud. Cela ressemble un peu à Jenkins, mais il offre une meilleure intégration avec les fournisseurs de cloud et nécessite moins de configuration.

Nous pouvons déclencher le pipeline de livraison continue à partir de Jenkins, d'une image Docker téléchargée ou d'un git push, par exemple. Après cela, nous pouvons simplement créer une image ou un conteneur avec notre application et le démarrer en production.

Cependant, de nombreuses autres options sont disponibles, telles que des tests automatisés et des approbations manuelles avant le déploiement en production.

Nous pouvons même décider quelle stratégie nous voulons suivre lors du déploiement d'une nouvelle version d'une application existante. En tant que tel, il est possible de remplacer simplement l'ancienne version par la nouvelle version. Cependant, une meilleure stratégie serait de les exécuter côte à côte en premier. De cette façon, nous pouvons vérifier automatiquement ou manuellement si la nouvelle version fonctionne et, le cas échéant, supprimer l'ancienne version.

5. Le modèle cloud de Netflix

Chaque application se compose d'un ou de plusieurs groupes de serveurs. La même version de l'application s'exécute sur toutes les instances du groupe de serveurs. La convention de dénomination suivante est utilisée: ---. Le champ de pile (facultatif) est utilisé pour spécifier si le groupe de serveurs est destiné au test, à la production ou à d'autres fins. Le champ de détail facultatif est utilisé pour des informations supplémentaires.

Enfin, nous avons le concept d'un cluster qui contient un ou plusieurs groupes de serveurs avec le même nom, la même pile et le même détail. Cependant, la plupart du temps, chaque groupe de serveurs du cluster exécute une version différente de l'application. Les instances défaillantes seront remplacées par une nouvelle instance.

Il est également possible d'ajouter automatiquement des instances à un groupe de serveurs pour s'adapter à l'augmentation de la charge.

6. Stratégie de déploiement

Lorsque nous déployons une nouvelle version d'une application, la stratégie «rouge / noir» est normalement choisie. Tout d'abord, un nouveau groupe de serveurs contenant la nouvelle version de l'application est déployé sur le cluster. Après le déploiement de l'application, une vérification est effectuée pour vérifier si le nouveau groupe de serveurs est sain.

Désormais, le groupe de serveurs est activé et disponible pour nos clients. Enfin, l'ancien groupe de serveurs est désactivé.

Dans ce scénario, il est facile de revenir en arrière si quelque chose ne va pas avec le nouveau serveur d'applications. Nous pouvons simplement réactiver le groupe de serveurs avec l'ancienne version et le rendre disponible à nos clients.

7. Pourquoi Spinnaker

Avec Spinnaker, nous pouvons nous concentrer sur notre application plutôt que sur les ressources cloud que nous utilisons. Cela facilite le déploiement et la maintenance de nos applications.

De plus, Spinnaker permet de s'exécuter sur plusieurs fournisseurs de cloud en même temps. De plus, nous pouvons facilement passer à d'autres fournisseurs de cloud en fonction de leur stratégie de tarification et des fonctionnalités disponibles.

8. Conclusion

Spinnaker s'appuie sur l'expérience de Netflix. Nous pouvons utiliser leurs connaissances et travailler de la même manière avec un minimum d'effort. Sur la base de ces outils, nous pouvons facilement implémenter un pipeline de déploiement pour déployer nos applications en production.

Pour en savoir plus sur Spinnaker, téléchargez l'ebook gratuit Continuous Delivery with Spinnaker.