Stack Labs Blog moves to Dev.to | Le Blog Stack Labs déménage sur Dev.to 🚀

6 novembre 2018 | Microservices | Kevin Davin

Retour de conf - VoxxedDays Microservices

Temps de lecture estimé : 7 minutes

Une partie de l’équipe a eu la chance de participer à la conférence Voxxed (dernier né de la famille Devoxx) dédiée au domaine des microservices. Nous allons vous faire un débriefing afin que vous puissiez rattraper tout cela, à l’écrit ou en vidéos !

DDD dans le monde des microservices

On commence avec Cyril Martraire qui nous explique comment délimiter la surface de nos microservices. Une présentation pleine d’énergie et d’idées importantes liées au monde du crafmanship et appliquées aux microservices. Je vous conseille vraiment de regarder cette présentation, même si vous l’avez déjà vue 🤩 ! Merci @cyriux ❤️

Kafka, base de données orientée évènement comme point central des architectures microservices

De nombreuses présentations tournaient autour du fameux event-broker Kafka. Ce système qui devient maintenant bien plus qu’un broker de message. Son but est de devenir le point central des infrastructures et de fournir l’intégralité de l’historique des opérations faites sur un système, et ce, de manière immutable.

Istio, avancée nécessaire pour le monde des microservices

Lorsque l’on se retrouve dans un monde distribué, nous sommes confrontés à de nouveaux problèmes. Les notions de circuit-breaker, de gestion de retry, de timeout, de blue-green deployment, A/B testing, pool-ejection… viennent remplacer nos anciens problèmes de monolithe. Au lieu de développer tous ces concepts dans chacun de nos microservices, il est intéressant de profiter d’un système qui sait gérer tout cela au sein d’un service mesh.

Inconsistence dans les data autorisées

L’utilisation de systèmes orientés “évènement” type Kafka permet de favoriser le découplage mais amène une problématique de cohérence de la donnée entre les microservices. Cependant, on constate qu’accepter une inconsistance est devenu quelque chose de courant ! On pondère le coût d’un système synchrone par rapport à l’importance de la donnée fournie de manière “inconsistante”… et souvent le jeu ne vaut pas la chandelle d’un système totallement consistant.

Les paradigmes des microservices côté front-end, est-ce possible ?

Lors d’une présentation de XXX nous avons parcouru les points forts d’un système orienté microservices et tenté de les appliquer au monde du front. Que l’on parle de l’aspect multi-technologie, de la partie event-bus ou encore de composition… tout est beaucoup plus complexe côté front où le poids de l’appli est souvent un frein.

Gestion des incidents dans un contexte microservices

Que l’on travaille sur un monolithe ou des microservices, il arrive inévitablement un moment où l’on rencontre des problèmes. Lorsqu’on admet cela, il devient important de faire attention à la manière dont on communique en cas de crise. Comment monitorer son application de manière à avoir des informations à transmettre, qui doit communiquer, à quel moment et de quelle manière… autant de questions auxquelles tente de répondre Serhat Can dans sa présentation.

Vos microservices sont-ils sécurisés ?

La quasi totalité des microservices (et des applications en général) utilisent des dépendances externes open-source (librairie de logging, API de sérialisation, etc.). Quels risques apportent ces nouvelles dépendances que l’on rajoute dans nos projets ?

Julien Topçu nous explique comment facilement lancer des vérifications sur sa base de code et ses dépendances en utilisant des outils qui sont capables d’aller lire les bases de vulnérabilités (NVD, CVE) et ainsi de construire un rapport trié par score en fonction de la sévérité de telle ou telle vulnérabilité (CVSS).

Cette présentation a le mérite de mettre en lumière un aspect du développement souvent oublié ou délaissé : la partie sécurité.

Évolution de la plateforme GCP “serverless”

Lorsqu’on parle de microservices, le serverless est une notion qui revient souvent. Le serverless, ce sont ces petites fonctions ou des applications de taille moyenne que l’on déploie sur des systèmes distants auto-managés, scalables et peu coûteux.

C’est en tout cas la promesse que fait GCP.

Tout d’abord, AppEngine s’offre de belles évolutions depuis la refonte du contexte d’éxécution. Java 8 est disponible depuis 1 an, Java 11 ne devrait pas trop tarder… Python est également disponible en version 3.7, Golang en 1.11 et NodeJS en version 10 le jour de sa mise en LTS.

L’autre évolution concerne les cloud-functions qui deviennent de plus en plus simples à utiliser, peuvent être couplées à différents évènements (création d’un objet dans un bucket, requête http, cron…). Dans ce domaine, la petite révolution s’appelle Knative et devrait permettre de faire du serveless en déployant des conteneurs plutôt que de simples fonctions, en se basant sur le framework Kubernetes.

Guillaume Laforge nous a présenté cela dans un talk où l’on peut même voir en exclusivité les data-centers de Google…

Les nouveautés de Spring présenté par Josh Long

Si nous devions citer un speaker qui fait le show et qui nous impressione toujours par ses compétences techniques, ce serait Josh Long.

Sa présentation “Cloud Native, part 2” met en avant la facilité d’utilisation du framework Spring pour développer vos microservices.

De plus, il a pu mettre en avant les nouveautés présentées lors de la dernière SpringOnePlatform.

Il nous a ainsi présenté rSocket, une réelle alternative réactive aux procoles de communication binaire (ex gRPC), mais aussi spring-gateway qui permet d’avoir une gateway 100% réactive. Josh Long a également présenté r2dbc, une alternative réactive à JDBC pour interragir avec vos bases de données SQL.

Le meilleur moyen de communiquer entre vos services est…

Le modèle de communication entre nos services est constamment remis en question. Le paradigme JSON/REST orienté ressources est mis à mal par des solutions alternatives.

La solution GraphQL facilite l’exposition de requêtes complexes quand gRPC met en avant la notion d’appel distant entre plusieurs systèmes.

Profitez de ces présentations pour vous faire vos avis 😍

Micronaut, le nouveau framework de la JVM orienté perf !

Dans le cadre des développement sur la JVM, nous utilisons le même framework pour déveloper un monolithe et un microservice.

Micronaut se pose comme une alternative aux solutions type Spring-Boot ou Eclipse Microprofile, mettant en avant une capacité à s’exécuter dans un environnement à mémoire très faible.

Le plus impressionant reste encore la compilation d’une application avec GraalVM qui permet d’avoir un binaire exécutable qui démarre en quelques millisecondes 😍

Du troll pour conclure 😱

Les microservices ont des avantages techniques, mais ils sont aussi souvent des solutions pour avancer dans des entreprises noyées par le middle-management… Dans cette présentation, on en prend tous pour notre grade ! Devs front, Devs back et architecte d’une part, mais aussi les Product Owners, les business Analysts et tant d’autres…

Si vous reconnaissez votre travail de tous les jours, cela va vous faire plaisir de savoir que vous n’êtes pas seul à souffrir 😉

Des dizaines de citations peuvent être faites de cette présentation, mais celle-ci nous a particulièrement marqué :

Conclusion

Cette première édition des VoxxedDays Microservices était très réussie. Nous avons particulièrement apprécié la variété des sujets qui permettait d’aborder bon nombre des spécificités des microservices : gestion de la donnée, communication entre les microservices, aspects sécurité, problématiques multi-technologies, performances et déploiements cloud

Ces 2 jours de conférences suivis d’une journée de workshop permettaient également de bien se rendre compte que les microservices, s’ils sont un choix architectural extrêmement intéressant dans de nombreux cas, ne se mettent pas en place en un claquement de doigts et demandent une certaine réflexion avant d’être développés. Par ailleurs, ils exigent une organisation et une communication toute particulière pour être menés à bien avec succès.

Si les microservices apportent de grands espoirs dans des contextes modernes agiles de plus en plus portés sur le cloud, ils ne doivent pas être implémentés à la légère pour suivre la mode, c’est pourquoi nous concluerons par cette citation de Benjamin Wootton :

Microservices are not a free lunch!