Intro à Spinnaker

Introduction au spinnaker

1. Vue d'ensemble

Dans ce didacticiel, nous allons examinerSpinnaker, une plateforme open-sourcecontinuous delivery créée par Netflix. Nous pouvons l'utiliser pour déployer nos applications sur plusieurs fournisseurs de cloud.

Le système repose surSpring Boot et prend en charge de nombreux fournisseurs de cloud.

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

2. Contexte

Jetons un œil à l’histoire du développement logiciel. Premièrement, nous avons eu la cascade avec des rejets peu fréquents.

Après cela, nous avons commencé à travailler Agile et avons fourni des fonctionnalités à chaque sprint. However, we still didn’t deploy to production every 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 pour 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 aux erreurs humaines.

De plus, certaines personnes pensaient que déployer plus souvent signifiait plus de risques de problèmes potentiels. Nowadays, we mostly agree that deploying small changes means less risk for big mistakes. Même ainsi, s'il y a une erreur, nous pouvons rapidement la localiser dans le petit changement et publier une nouvelle version qui résout le problème.

3. Spinnaker

With Spinnaker, we can use continuous delivery or continuous deployment to release our application on production automatically. Une livraison continue signifie que tout est préparé pour une version 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. All steps are executed, including the deployment to production. Nous envoyons simplement notre code d’application vers un système de contrôle de version et c’est tout.

De pousser 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, le déployer dans 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 diffusion continue.

4.1. Déploiements en nuage traditionnels

Lorsque nous examinons les fournisseurs de cloud, ils offrent tous plus ou moins les mêmes services. Ces services incluent des éléments tels que des instances, des serveurs sans serveur et des conteneurs.

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

Netflix souhaitait avoir la possibilité de changer facilement de fournisseur de cloud plutôt que de dépendre d'un seul. C'est pourquoi ils ont créé une couche d'abstraction au-dessus des fournisseurs de cloud.

4.2. Couche d'abstraction

When we use Spinnaker, it’s the same on all cloud providers. 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.

Even more, we can choose to deploy to multiple providers at the same time. De cette façon, nous pouvons exécuter notre application sur deux ou plusieurs fournisseurs pour une redondance supplémentaire.

Another benefit of the abstraction layer is that it focuses on the applications instead of the resources. 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 à faire le suivi des 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

On top of the abstraction layer, Netflix built a continuous delivery platform. 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, une image Docker téléchargée ou 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 les tests automatisés et les approbations manuelles avant le déploiement en production.

Nous pouvons même décider de la stratégie à 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 de nuage Netflix

Every application consists of one or more server groups. 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: - - <(détail facultatif)> - . Le champ de pile (facultatif) permet de spécifier si le groupe de serveurs est utilisé à des fins de test, de production ou autres. Le champ de détail facultatif est utilisé pour des informations supplémentaires.

Finally, we have the concept of a cluster that contains one or more server groups with the same name, stack, and detail. 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 faire face à l’augmentation de la charge.

6. Stratégie de déploiement

When we deploy a new version of an application, the ‘red/black' strategy is normally chosen. 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.

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

In this scenario, it’s easy to roll back if something goes wrong with the new application server. Nous pouvons simplement réactiver le groupe de serveurs avec l'ancienne version et le rendre disponible à nos clients.

7. Pourquoi Spinnaker

With Spinnaker, we can focus on our application instead of the cloud resources that we use. Cela facilite le déploiement et la maintenance de nos applications.

De plus, Spinnaker permet de s’exécuter simultanément sur plusieurs fournisseurs de cloud. 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 builds on the experience of 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 mettre en œuvre un pipeline de déploiement pour déployer nos applications en production.

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