Je suis un développeur qui se soucie profondément de la production. Mais je ne suis pas un DevOps et malheureusement, je suis assez mauvais pour ça. C’est pourquoi, lorsque j’ai entendu parler de Skaffold, cela a immédiatement piqué mon intérêt. Écrire des applications natives du cloud Kubernetes sans puits… Écrire des applications natives Kubernetes… Inscrivez-moi !
Malheureusement, comme nous le savons tous. Le moment d’acquérir une nouvelle technologie est celui où nous en avons réellement besoin et c’est alors qu’il est urgent de sortir quelque chose. Peu d’entre nous ont le temps de quitter leur journée bien remplie pour étudier quelque chose et apprendre quelque chose de nouveau. C’est pourquoi quand Ashish Choudhary, l’auteur du livre « Développement d’applications cloud-natives sans effort à l’aide de Skaffold” demandé des critiques dans le groupe slack foojay.io, j’ai sauté sur l’occasion. Je peux apprendre quelque chose d’intéressant et être productif (cette critique de livre).
Avant de passer à la critique du livre, j’aimerais clarifier les points suivants :
- Je ne connais pas Ashish Choudhary personnellement
- Je ne reçois rien pour cette critique et je ne fournis aucun lien d’affiliation ou ce genre de choses. C’est le seul lien vers le livre dans cet article, et il n’a pas de code d’affiliation !
- J’ai travaillé pour l’éditeur Packt dans le passé (un cours en ligne) – je ne pense pas que cela affecte mon jugement ici. ça fait un moment que je n’ai pas fait ce travail
Autre détail important : je n’ai pas exécuté le code ni parcouru les exemples. Je viens de lire le livre. Je l’ai aussi fait assez rapidement et j’ai utilisé la version PDF. En tant que tel, j’ai l’impression d’avoir perdu une partie de l’expérience de base du livre.
Qu’est-ce que Skaffold
Skaffold est un projet open source lancé par un ingénieur de Google après avoir souffert des déploiements de Kubernetes natifs du cloud. Il s’agit en fait d’un outil en ligne de commande qui automatise les étapes de création, de diffusion et de déploiement des applications Kubernetes.
Cela seul justifie une fiche d’information. Le système environnant s’intègre à Maven/Gradle/Spring, etc. pour créer une expérience de développement fluide. Cela rend la création/le débogage d’applications Kubernetes localement presque aussi simple que l’exécution d’une application Spring Boot standard.
Il y a évidemment une complexité et une configuration supplémentaires, mais l’idée de base est la même. Les développeurs doivent toujours comprendre les idées de base de Kubernetes, il n’y a aucun moyen de contourner cela. Mais vous pouvez supprimer certains des tracas que cela implique. Kubernetes est destiné au DevOps et beaucoup de ses fonctionnalités sont redondantes pour les développeurs. De cette façon, nous pouvons créer des microservices natifs du cloud sans tracas.
Le livre
Les livres Packt offrent une introduction rapide et pratique aux technologies actuelles. Ils ont l’avantage d’inclure beaucoup de détails actuels que d’autres livres pourraient manquer. Cependant, ces détails pourraient devenir obsolètes au moment où vous aurez besoin du livre. C’est un compromis que vous devez faire en fonction de votre expérience avec la publication.
Étant donné que le sujet est un outil très spécifique, je vois l’intérêt d’entrer dans des détails et des échantillons spécifiques.
Choudhary a divisé le livre en 3 sections :
- Le cauchemar de Kubernetes – Skaffold à la rescousse
- Premiers pas avec Skaffold
- Création et déploiement d’applications Spring Boot natives dans le cloud avec Skaffold
Dans la première section, nous avons un aperçu du « problème » de la création d’applications Kubernetes avec des chapitres tels que « Développer des applications cloud natives avec Kubernetes – Le cauchemar d’un développeur ».
Choudhary présente Skaffold dans la deuxième section. La troisième section aborde les points les plus fins du déploiement, les alternatives, etc.
Cloud natif
Le livre se concentre sur la séparation de la boucle interne/externe du cycle de développement. La boucle interne est l’environnement de développement local, tandis que la boucle externe est l’environnement de production/CI/CD. Ce qui rend ce style de développement « Cloud Native » est la similitude entre les boucles interne et externe.
Un accent similaire est mis sur la valeur fournie dans les tests d’intégration pendant le cycle CI et enfin sur la mise en production via des outils tels que GitOps. Ce qui est cool, c’est que nous utilisons un environnement assez proche de la production à toutes les étapes du développement.
Un autre aspect qui rend Skaffold natif au cloud est le déploiement instantané via jib. En conséquence, nous pouvons voir instantanément les changements dans notre environnement Kubernetes local lorsque nous enregistrons les modifications dans l’IDE. C’est plutôt cool, et cela vaut à lui seul le prix d’entrée à Skaffold (qui est certes gratuit).
Ce que j’ai aimé
Choudhary est un écrivain talentueux qui utilise un langage clair et des exemples. Les exemples n’étaient pas trop verbeux, comme c’est parfois le cas avec de tels livres. Il a écrit le livre ciblant les développeurs Kotlin/Java, ce qui est génial.
Les idées de base et les avantages de Skaffold sont abordés au début du livre et sont assez évidents. Il y a quelques schémas qui illustrent les gros coups de pied arrêtés.
Le livre couvre les concurrents de Skaffold et semble être raisonnablement objectif dans son traitement. C’est à la fin du livre, donc si vous avez des doutes sur Skaffold, je vous suggère de lire d’abord la fin.
Bien que quelque peu inutile (nous en parlerons plus tard), la mise en page des livres Packt est comme d’habitude assez bonne. Les livres Packt ont une excellente mise en page, une table des matières et un index. Cela rend le processus de lecture/référencement beaucoup plus fluide.
Ce que je n’ai pas aimé
Je pense que l’expression cloud-native a été cooptée par GraalVM et des frameworks tels que Quarkus. Je comprends l’objectif de Choudhary et je pense que cela a du sens pour le livre. Mais c’est une de ces phrases galvaudées qui perd un peu de son sens. Un livre natif du cloud est une déclaration assez vague, Skaffold la réduit mais seulement après que vous sachiez ce que cela signifie.
Il y a un chapitre entier sur GKE que j’ai entièrement ignoré pour cette raison. Ce n’est tout simplement pas pertinent pour moi.
Bien que j’aime les livres Packt, j’ai deux griefs. J’espère qu’ils s’amélioreront sur ceux-ci :
- Je n’aime pas le remplissage dans les livres. Le livre pourrait être plus court de 100 pages, cela est dû aux pages blanches, aux grandes marges, au surespacement, etc. Pensez au Packt de l’arbre (cela vaut aussi pour d’autres éditeurs !).
- Je souhaite que d’autres éditeurs reprennent le style d’annotation source de la dotation. C’est difficile à faire comme je l’ai découvert, mais la lisibilité est tellement meilleure…
Notez que les deux commentaires ne sont pas propres à Packt et s’appliquent à la plupart des éditeurs.
Dernier mot
J’ai aimé le livre. Je n’ai toujours pas pris ma décision à propos de Skaffold. En tant que retardataire dans le domaine du cloud natif, je sens que je dois éviter certains tracas. Cela le rend attrayant. Mais j’essaie de rester à l’écart des services Google en raison d’un traumatisme passé. Skaffold ne nécessite pas GCP et peut toujours être très utile sans lui, c’est donc quelque chose que j’ai l’intention d’essayer.
J’aime que Choudhary ait concentré le livre sur Java/Kotlin car je suis un gars de Java. Mais je fais beaucoup de travail polyglotte natif du cloud récemment, et cela pourrait être une limitation. J’ai vu une mention dans le livre du débogage NodeJS, mais c’est tout. Honnêtement, je ne sais pas si je peux utiliser Skaffold pour l’une de mes démos Polyglot. Ce serait vraiment cool pour ça.
Je suppose que cela n’est pas beaucoup discuté à cause d’une limitation dans Skaffold, pas à cause d’une omission dans le livre.