Tout ce que vous avez toujours voulu savoir sur les nouvelles pratiques.... ben on l'a fait!

29-01-2019 par Martin Lessard

DevOps, CI/CD, SPA, microservices, NoSQL, Event-driven architecture, CQRS, Agile, Cloud, IaC, PAAS, FAAS..... tous ces (plus ou moins) nouveaux concepts, on vient tout juste de les mettre en pratique afin de livrer une solution innovante qui permet à notre partenaire de faire un saut important dans le temps. D'avoir une solution qui se déploit rapidement, souvent, avec des coûts minimes (vive le cloud!). De mettre en place une solution qu'on pourra exploiter en mode SAAS. J'pense que c'est le projet de ma vie (pis rendu à mon âge, ça s'peut que ça soit vrai....). C'est rare comme consultant qu'on a la chance de développer des trucs en mode "produit".

Et évidemment, comme Levio est une entreprise "serverless", on a dû utiliser des outils cloud pour bâtir tout ça.  On a donc utilisé Azure DevOps (anciennement VSTS) pour faire ce beau projet qui implique entre autre des services bâtis en Java et des infrastructure virtuelles Linux; bon, j'imagine que c'est terminé le temps où les gens associaient Microsoft seulement à leurs propres technologies?  Plus besoin d'expliquer que c'est fini ce temps là.  C'est vraiment bien cette plateforme; t'as juste à sortir ta carte de crédit, pis ça se met à fonctionner (en fait pour une petite équipe, même pas besoin de carte).  Dernièrement, j'ai un collègue qui me pousse à utiliser GitLab; on commence la semaine prochaine à déporter une partie de la solution; en tant que consultant, j'aime bien essayer plusieurs trucs question de mieux conseiller nos clients; à première vue, le démarrage va être moins vite, plus de setup à faire mais ça devrait nous couter pas mal moins cher et on aura pas mal plus de contrôle et surtout de puissance.  Un sujet de billet pour le blog en réserve....

Le lecteur attentif aura peut-être remarqué un absent de taille dans l'énumération du début de ce billet; Docker! Ben non, y en n'a pas de Docker pis de Kubernetes dans cette solution là. Pis oui, on réussit à livrer rapidement, sans intervention humaine, dans le cloud. Mais j'ai dû résister; oui, je passe maintenant au "je" parce qu'il y avait tellement de partisans de Docker dans l'équipe et aux alentours et il semble que j'étais le seul (ou un des seuls) à combattre. À la moindre petite embuche, la solution facile c'était Docker. Les modules Java marchent pas au premier essais en PAAS? On prend Docker! Un jour on va aller on-prem? Tout dans Docker! Arrêtez avec les containers! Vous avez une vieille gimbarde qui date des années 90 à déployer de façon "moderne", ok. Votre entreprise a encore des ressources humaines techno ou de la quincaillerie encore utile à rentabiliser, ok. Ton boss a pas compris que les infrastructures cloud sont plus sécuritaires que tout ce qu'il pourra jamais se payer donc pas question d'aller dans le cloud, ok. Mais si tous ces obstacles sont levés, si vous faites du nouveau code, une application toute neuve .Net Core, une belle application Java, un p'tit truc Node.js pourquoi vous voulez utiliser la béquille Docker? Tous les outils sont en place pour permettre de déployer et exploiter ces nouveaux développements en mode PAAS ou FAAS sans avoir besoin de recourir aux containers (et souvent sans payer quoi que ce soit, 1 million d'exécutions de fonction gratuite dans Azure avant de commencer à débourser des micro-cents). Faite preuve de ténacité et résistez, trouvez les solutions qui existent et éliminez cet élément inutile. Un élément éliminé est un élément qu'on n'a pas besoin de gérer. Peut-être qu'un moment donné on en aura besoin (quand on va aller on-prem je crois), on évaluera rendu là. L'idée c'est d'utiliser la bonne technologie pour répondre au besoin, pas nécessairement la technologie la plus simple. Y en a qui disent que j'ai tort de persévérer avec PAAS et FAAS; peut-être, je demande juste à être convaincu autrement que par "tous les gros joueurs le font". Pis "tu vas te peinturer dans le coin avec un fournisseur cloud", ça tient pas non plus, on peut développer de façon à ne pas s'attacher à un fournisseur. BTW, on vient de passer de CosmosDB api Mongo vers Atlas en 3-4 heures environ (environ 100 fois plus rapide pour la même requête et environ 30 fois moins cher aussi.....).

Un autre groupe absent de cette réalisation, c'est les gens de technologie; y en n'a pas; que des développeurs, certains ayant quand même de bonnes connaissances technologiques mais aucun expert en montage de serveur, en exploitation, en salle de serveur, en SAN, en installation d'engin de recherche, en optimisation de base de données, rien, nada. C'est quand même fou. Avant la venue du cloud, ça aurait pris assurément 3 à 4 personnes (spécialistes, faut les trouver.....) pour supporter l'équipe de développement. Maintenant 0.

Quelques leçons dans ce merveilleux projet:

  • agile? oui mais..... pas au pied de la lettre. La modération a bien meilleur goût.
  • On utilise les microservices parce que c'est plus simple? Assurément non, y a plein de concept à ingérer et à mettre en place pour faire fonctionner tout ces beaux morceaux ensemble, l'équipe doit comprendre les tenants et aboutissants avant de se lancer. Je répète; c'est pas simple; ça apporte bien sûr des avantages, mais assurément pas celui d'avoir une solution plus simple.
  • GitFlow? Y a d'autres modèles, faut prendre le temps de les apprendre/comprendre et utiliser le modèle qui convient le mieux à l'équipe.

J'ai vraiment trippé dans les derniers mois à mettre tout ça en place. Et y a plein de défis qui s'en viennent; vendre cette solution à des clients qui voudront peut-être avoir ça dans AWS ou on-prem plutôt qu'Azure (on a bâti l'architecture pour ça), héberger plusieurs clients qui accepteront de partager l'infrastructure en mode SAAS (multi-tenant), exploiter ça de façon efficace (personne qui a accès en prod).

Si vous avez le goût de voir ça, pas seulement en entendre parler pis vous faire dire juste comment ça pourrais marcher, le voir pour vrai, faites moi signe. C'est toujours intéressant de partager des expériences (avec des partenaires de golf par exemple, hein Nico?).

Étiquettes : technologie

Comments powered by Disqus
back to top