Pourquoi choisir une architecture microservices au lieu d'une architecture monolithique ?
Session du 07 mars 2024 à 18h30
Bases du Langage
DevOps & Environnement
Pourquoi choisir une architecture microservices au lieu d'une architecture monolithique ?
L'idée est de voir comment les deux types d'architecture diffèrent. Nous essayerons de comprendre l'intérêt des microservices qui permettent de gagner en flexibilité, d'évoluer plus facilement et mieux résister aux pannes.
Voici les différents documents partagés durant la session :
-
https://github.com/tdameros/42-transcendence
-
https://42.shiftcode.fr/
-
https://www.youtube.com/watch?v=3c-iBn73dDE&pp=ygUadGVjaHdvcmxkIHdpdGggbmFuYSBkb2NrZXI%3D
-
https://threejs.org/
-
https://www.youtube.com/c/TechWorldwithNana
00:00:00 :Ok, du coup, pour me présenter très rapidement, moi je m'appelle Tom, je suis étudiant à l'école 42,donc je préfère mettre un petit warning sur la présentation que je vais faire parce que tout ce que j'ai appris là,je l'ai appris en autodidacte et je ne suis pas un professionnel, je suis vraiment encore étudiant.
00:00:16 :Donc tout ce que je vais vous présenter, c'est tiré de mon expérience et de mon apprentissage,donc ce n'est pas forcément fiable à 100%, mais le but justement c'est qu'on puisse en discuter ensembleet d'avoir le retour d'expérience de chacun là-dessus.
00:00:30 :Et l'architecture en microservice, c'est quelque chose que j'ai découvert assez récemment,que j'ai mis en place sur un projet, je ne vais pas dire gros parce qu'il est moyen,mais pour quelqu'un qui débute, ça peut être un gros projet.
00:00:44 :Je vous en parlerai après quand je vous montrerai 2-3 slides sur des exemples.Et donc, voilà.Très rapidement, n'hésitez pas à me couper pendant la présentation si vous avez une question.
00:00:55 :Je préfère que vous me coupiez, que je réponde, ça peut même aider à éclaircir d'autres personnes,plutôt que vous gardiez la question pour la fin et qu'au final vous l'oubliez et que ce ne soit pas intéressant.
00:01:07 :C'est mieux de poser la question sur le moment et il n'y a pas de questions bêtes.Ok, petit sondage là très rapidement.Est-ce qu'il y en a qui connaissent déjà le principe d'architecture en microservice ou pas du tout ?
00:01:19 :N'hésitez pas potentiellement à mettre un petit message dans le chat ou à vous démuter.Pas du tout, pour ma part.Ok.Pour ma part aussi, pas du tout.
00:01:29 :Ok.Ok, donc je vais essayer de vraiment tout expliquer en détail depuis le début,comme ça au moins tout le monde pourra bien comprendre.Donc, pour comprendre une architecture en microservice,ce qu'il faut déjà comprendre, c'est qu'est-ce que c'est qu'une architecture monolithique ?
00:01:48 :En fait, une architecture monolithique, c'est ce qu'on fait par défautquand on débute en programmation et quand on fait des applications.Qu'est-ce qu'on va avoir en fait ?
00:01:58 :On va avoir un seul logiciel qui va représenter, enfin une seule application,qui va être le grand cercle en rouge.Et dans cette application, qu'est-ce qu'on va avoir ?
00:02:06 :On va avoir notre interface utilisateur, notre logique mécanique,notre gestionnaire de données, et il va être connecté à potentiellement une base de données.Ok.Et tout ça, en fait, toute cette application, c'est un seul programmequi va être géré par un langage qui est unique.
00:02:23 :Je prends un petit parallèle.Ici, vu que c'est une communauté qui fait beaucoup de pythons,admettons qu'on souhaite faire un site web.Et bien, qu'est-ce qu'on a en pythons ?
00:02:33 :On va avoir Django.Django, c'est un site web.Un site web.Et bien, qu'est-ce qu'on a en pythons ?On va avoir Django.Django, c'est quoi ?
00:02:40 :C'est un programme qui est capable de gérer à la fois l'interface utilisateuravec tout ce qui est les views,donc qui nous permet de faire du HTML, d'avoir un site web, ainsi de suite.
00:02:50 :Il nous permet de gérer notre logique métier avec...Alors, pardon, c'est pas les views, c'est plus les gabarits.Et après, notre logique métier qui va être au niveau des views.
00:03:02 :Donc là, ça va être quoi ?Qu'est-ce qui se passe quand j'appuie sur tel bouton ?Qu'est-ce que ça va faire ?Si, par exemple, je fais une application de blog,ça va poster un article de blog,ça va lui mettre un titre, ainsi de suite.
00:03:18 :Et ensuite, ça va venir y stocker dans notre base de donnéesavec, par exemple, les modèles qu'on retrouve en Django.Donc ça, c'est vraiment si, par exemple, on fait un site webqui est capable de gérer, admettons, n'importe quoi,ça peut être très bien un site d'un blog,on va vraiment tout avoir, notre application qui va être
00:03:38 :dans un seul et même langage.Donc l'idée, c'est de comprendre les microservices.Les microservices, c'est un petit peu l'opposéd'une architecture monolithique.On va plus avoir une seule grosse application,mais cette fois-ci, on va être divisé en plusieurs microservices.
00:03:59 :Donc à gauche, on retrouve notre application monolithiquequ'on a eue tout à l'heure.Et à droite, on a notre application en microservices.Donc qu'est-ce qui se passe cette fois-ci ?
00:04:10 :On a toujours notre interface utilisateurqui va, par exemple, être notre site web.Mais notre site web va pouvoir être connectéà plusieurs microservices.Donc là, on peut se demander, très bien,mais qu'est-ce que ça va être nos microservices ?
00:04:25 :On va essayer de découper la logique de notre application.Admettons qu'on fait un site qui permet de gérerdes articles de bugs.Qu'est-ce qu'on va avoir ?
00:04:36 :On va avoir un microservice qui va être...Pardon ?J'ai une question, tu avais dit qu'on t'arrête au cas où.Oui, oui, pas de souci, dis-moi.
00:04:44 :Je voudrais savoir c'est quoi un microserviceavant de continuer.C'est ce que je suis en train d'expliquer,le principe de microservices.Je vais y venir, il n'y a pas de souci.
00:04:54 :Du coup, la logique, c'est de se dire,au lieu d'avoir tout dans une seule et même application,je vais découper ma logique en plusieurs microservices.
00:05:02 :Techniquement, qu'est-ce que ça peut être un microservice ?Si je reprends l'exemple de notre site de blog,qu'est-ce qu'on va avoir ?On va avoir un microservice qui va être dédiéet qui va gérer toute l'authentificationde notre site de blog.
00:05:16 :On va avoir un microservice qui, lui,va être dédié à gérer, par exemple,le fait de pouvoir poster des articles,supprimer des articles de blog.
00:05:24 :Et ensuite, on peut très bien avoirun troisième microservice qui, lui,pourrait être dédié à la gestionde pouvoir ajouter des personnes en amieou non sur notre blog,pour pouvoir potentiellement leur écriredes messages, et ainsi de suite.
00:05:38 :L'idée, c'est vraiment de ne plus avoirune seule et même application,mais de diviser notre applicationen plusieurs programmes.Ça ne va plus être un seul serveur Djangoqui va faire tournernotre application globale,mais ça va être plusieurs sous-programmesqui vont faire fonctionnernotre projet.
00:05:58 :Jusque-là, je pense que ce n'est pas très clairpour tout le monde, mais on va prendre un exempleassez simple.Admettons que vous souhaitez faire un jeu.
00:06:08 :Un jeu qui va êtresur un site web.Qu'est-ce qu'on pourrait avoir comme exemplede microservice ?On retrouve notre interface utilisateur,qui va être notre site web,et on peut avoir différents typesde microservices.
00:06:24 :On va avoir notre microservice qui est à gauche,qui va gérer toute l'authentification,le fait que la personne puisse se connecteravec une adresse e-mail, un mot de passe,et qu'elle ait les bons credentials.
00:06:34 :Ensuite,dans notre jeu, on va justementgérer des utilisateurs, parce qu'on veutque ces utilisateurs puissent avoir des amis,qu'ils puissent changerleur pseudo, ainsi de suite.
00:06:46 :C'est un microservice qui va être dédié à ça.On peut également avoirun autre microservice qui permetd'avoir des notifications, parce qu'effectivement,dans mon jeu, quand je vais ajouterquelqu'un en ami, j'ai envie que ça lui envoieune notification, qu'il le sache tout de suite que je l'ai demandé
00:07:00 :en ami.Et ensuite, comme je fais un jeu,je vais pouvoir lancer des parties.Qu'est-ce qui va se passer ? Je vais pouvoirlancer des parties avec un système de matchmaking.
00:07:10 :Techniquement,je m'inscris dans unefile d'attente en matchmaking.Dès que ça trouve un autre adversaire,qu'est-ce qui va se passer ?On va avoir un microservice qui, lui, va gérernos serveurs de jeu et qui vacréer des serveurs de jeu pour qu'on puissedirectement se connecteret faire nos parties ensemble.
00:07:30 :Pareil, on pourrait très bien imaginer un autremicroservice qui, lui,va s'occuper de toute la partietournoi et qui vafinalement être connecté, lui aussi,au microservice qui gèrenos serveurs de jeu.
00:07:44 :Donc ça,c'est un exemple de commentest-ce qu'on peut prendre une grosse applicationque, d'habitude, on fait dansun seul langage, avec un seul framework,et bien, on vient l'éclater en pleinde sous-modules.
00:07:58 :Et on va voir que ça a des avantageset ça a des inconvénients.Est-ce que, pour le moment,c'est assez clair pour tout le monde ? Est-ce qu'il y a des questions ?
00:08:08 :...Ok, je vais passer à la suite.........................C'est ça, exactement.On vient vraiment, en fait, si je reviensà ma première slide, qu'est-ce qu'on a ici ?
00:08:34 :On a un gros cube qui représentenotre projet, et on vient le découpleren plein de petits modules, en plein de petitscubes, en fait. C'est vraiment ça l'idée,
00:08:42 :pour avoir quelque chose qui estplus facilement modulable et plusfacilement adaptable. Et on va voir justementtous les avantages que ça nous apporte.Ok ?
00:08:52 :D'accord.Donc, si on regarde très rapidement les avantages,on va avoirpas mal d'avantages au niveau de la scalabilité.Pourquoi ?Parce que, dans une application classique,en fait, toute notre charge,quand nos utilisateursvont se connecter,ils vont tous surcharger la même application.
00:09:12 :Ok ? Si, par exemple,on a notre site de blog qui est en monolithique,qui est en une seule application,par exemple, une seule application Django,quand ils vont se connecter, ils vont tous surchargercette même application.
00:09:24 :Par contre,si on est en microservice,ils vont solliciter uniquement les modulesdans lesquels ils ont besoin.Ok ?Et donc là, vraiment, on vapouvoir avoirune gestion de la charge qui est plus optimisée,notamment au niveau des bases de données.
00:09:42 :Pourquoi ? Parce que si onrevient très rapidement, alorstac, si on revient ici,et bien en fait, en monolithique,on a une seule interfacequi gère tout, et on a une seulebase de données. Et en général,
00:09:56 :ce qui pose problèmeen termes de performance, ça va être l'interactionavec la base de données. Pourquoi ? Parce que pluson a d'utilisateurs qui font des requêtes, plusnotre base de données va être surchargée.
00:10:06 :Et donc là, en général,beaucoup de problèmes de performancesont liés à ça. En revanche,si on est en microservice, qu'est-ce qui va se passer ?
00:10:14 :Chaque module va gérer sespropres données. D'accord ?Donc, si on revient ici,lorsqu'un utilisateurva vouloir se connecter, il va impacterque cette partie-là, que ces deux modules-là.
00:10:26 :Il ne va pas venirsurcharger nos autres modules qui, par exemple,vont gérer la gestion du jeu ou des notifications.Ok ?Donc ça, c'est le premier avantage qu'on aà faire une architectureen microservice.
00:10:42 :Ensuite, on va gagner en flexibilité.Pourquoi ? Parce qu'on va pouvoir avoirdes équipes qui vont venir travailler de manièreplus agile sur des projets en parallèle.
00:10:50 :Effectivement, c'est plus simplede se répartir les microservicessi, par exemple, on est à 3-4 sur le projet,se dire, un tel,il va gérer les notifications,un tel, il va gérer le serveur de jeu,tel autre personne va gérerl'authentification.
00:11:06 :Qu'est-ce qui va se passer ?On va être sur des bouts de code qui sont totalementséparés, sur des programmes différents,donc ça va être beaucoup plus simplede partager le travailet de travailler, justement, en parallèle.
00:11:18 :Plutôt que d'être tous sur la même codebase.Ok ?Un avantage qui est également présent,c'est qu'on va pouvoir choisir des technologiesadaptées. Pourquoi ?
00:11:30 :Parce que, si on revientici, dans notre application monolithique,et qu'on choisit, par exemple,de faire du Django parce qu'on aime bien le Python,c'est super. Par contre,
00:11:40 :on a choisi de faire notre application en Django,on l'aura de A à Z en Django.Alors que si on fait des microservices,qu'est-ce qui va se passer ?
00:11:48 :On pourrait très bien décider de se dire,ma gestion des utilisateurs,je vais la faireen Django, parce que j'aime bienle système de gestion de usersavec Django, c'est pratique, c'est simple.
00:12:00 :Mais en revanche,je suis en train de faire un jeu, là, quand même.Et un jeu, j'ai besoin de performance.Qu'est-ce qui va se passer ? Est-ce que Python,
00:12:08 :c'est une technologie qui est adaptée pour faire des performanceset se faire un jeu ?Peut-être pas. Ce que je peux me dire, c'est que
00:12:14 :mon microservice de serveurde jeu, je vais pouvoir très bienle faire en Rust, en C,en C++, parce que, admettons, j'ai besoin de performance.
00:12:22 :Idem pour mon front.Je peux dire,si je n'ai pas envie de faire mon front avecdu Django, avec le langage de gabaritet ainsi de suite, je peux très bien faire mon frontavec du JavaScript,avec un framework tel que React,Angular ou Vue.
00:12:40 :Et donc ça, c'est mêmebeaucoup plus simple, parce que quand on va travaillerà plusieurs, on va pouvoirse répartir les tâches.Une personne qui ne gère quepar exemple un langage précis,elle va pouvoir faire les modulesqui lui correspondent dans son langageet ensuite venir se connecter aux autres.
00:12:58 :Ensuite,qu'est-ce qui se passe au niveau du déploiement ?Le déploiement, ça nous aide beaucoup.Pourquoi ? Parce qu'on va pouvoir mettreà jour un service sansimpacter les autres.
00:13:12 :On en revient ici.Admettons, mon application,elle est en ligne depuis deux ans. J'ai envie de faireune mise à jour sur monsystème de gestion de tournois dans mon jeu.
00:13:22 :Qu'est-ce qui va se passer ?Est-ce que je suis obligé d'éteindre tout le reste ?Est-ce que je suis obligé de couper les gensqui sont connectés sur le site ?
00:13:30 :Non, je vais pouvoir juste venir éteindremon micro-service qui gère mes tournois,le mettre à jouret le relancer.On gagne du coupen maintenabilité.
00:13:42 :Effectivement, dans le casoù on a des applications un peu sensibles tellesqu'une banque, on est né aux banqueset on aimerait bien mettre à journotre système juste devirement uniquement, mais sanséteindre tout le reste. On veut quand même que les gens puissent
00:13:56 :continuer à se connecter et voir combien ils ontd'argent sur leur compte en banque parce que sinonils seraient un peu stressés de voir que toute l'applicationest éteinte. On peut vraiment
00:14:04 :cibler uniquement certainesparties de notre projet à mettre à jour.OK.Etavec ça, on a une meilleure résilience.Pourquoi ? Parce que si on a un crash
00:14:16 :sur une partie de notre application,ça n'impacte pas nécessairementtout le reste de l'application.L'idée, c'est que vraiment, nos modules,nos micro-services, ils sontle plus possible indépendantsles uns des autres. On va voir que
00:14:30 :dans certains cas, c'est un peu problématique parce queeffectivement, ils doivent communiquer un petit peu entre eux.Des fois, il y en a qui sont quand même un petit peudépendants d'autres micro-services.
00:14:38 :Mais l'idée globale, c'estvraiment de se dire,j'essaye d'être le plusindépendantet de fonctionner de manièreautonome.OK.Maintenant, on va passer un peuaux inconvénients parce que là, on a vu pas mald'avantages et on pourraitse dire, c'est trop cool, pourquoi tout le monde ne fait pas
00:15:00 :une architecture en micro-services ?Pourquoi ? Parce que déjà, c'est compliqué.On va avoir une gestion qui va êtreassez compliquée au début du projetparce qu'on va avoir beaucoupd'interactions entreplein de modules.
00:15:14 :Donc, la mise en place du projet,au début, c'est assez long.Par contre, une fois que c'est mis en place,c'est plutôt bien. Chacun travaille sur
00:15:22 :sa partie et c'estun peu plus simple.On a aussidifférents inconvénients au niveau du réseau.Pourquoi ? Parce qu'on va avoir desproblèmes de latence. Effectivement,
00:15:34 :on n'est pas centralisé sur une seule et mêmecommunication. Parfois, il va falloirpasser par plusieurs intermédiaires.Si on y revient très rapidement,ici,de notre client,qui est notre site web, à la créationd'un serveur de jeu, ça peut passerpar plusieurs micro-services.
00:15:52 :Qui dit passer par plusieurs micro-servicesdit faire des communicationsen réseau et doncavoir potentiellement un petitpeu de latence sur ce sujet-là.Donc, il faut quand même essayer de faireun petit peu attention là-dessus. Si jamais
00:16:06 :on a besoin d'avoir zérolatence, on peutprivilégier potentiellement d'autres architectures.On a également une grossedifficulté sur se direcomment est-ce qu'on va communiquerentre nos micro-services.
00:16:22 :C'est-à-dire qu'il va falloir se mettred'accord sur comment est-ce qu'on s'envoie les messages.Si, par exemple, une personne a développéla partiegestion d'utilisateurs et l'autre personnea géré la partiestatistique des matchs.
00:16:36 :Il va falloir qu'ilsse concentrent entre eux pour se dire comment est-ce qu'ons'échange des données, comment est-ce qu'on discuteensemble.Etce qui est lié à ça, c'estproblème de consistance des données.
00:16:50 :Je vous donne un exemple très simple.Là, c'est super cool.Dans l'architecture,on aun micro-service qui gèreles utilisateurs.Donc, admettons, une personnefait une partie, elle s'inscrit en matchmaking,elle trouve une partie, ça lui lanceun serveur de jeu, elle arrive ici.
00:17:10 :Elle a fini sa partie,on récupère des statistiques.On calcule son élo, son nombre degames qu'elle a fait, le nombre de ballesqu'elle a touché, ainsi de suite.
00:17:20 :Comment est-ce qu'on va lierdes statistiquesà un joueur ?Parce qu'admettons, notre utilisateurchange son pseudo.Est-ce que ça ne va pas impacterles données qui sont dansle micro-service notification, ou ailleurspotentiellement, dans les tournois,dans les notifications.
00:17:40 :Là, il faut faire attention à ça au niveau des données qu'ons'échange. Il faut se mettre d'accord surqui possède les donnéeset comment on se les échange.
00:17:48 :Dans le cas que j'ai pris,comme exemple, une technique qui peut être bien, c'est de se direil n'y a personnequi détientles pseudos des personnes. Parce que les pseudos des personnes
00:17:58 :peuvent être modifiés à tout moment.Chaque personne peut, admettons, choisirde changer son pseudo. Donc on pourrait très biense dire, on va travailler uniquementavec des identifiants.
00:18:08 :Et donc, en fait, les statistiques,le micro-service de statistiques, il vastocker des statsuniquement avec les User IDdes personnes.Parce que les User ID, on sait quedans notre application, ils ne vont jamais changer.
00:18:22 :Globalement.Un autre exemple qui peut poser problème.Au niveau des données,qu'est-ce qu'il se passe si, par exemple,quelqu'un décide de supprimer son compte ?
00:18:32 :Parce que si quelqu'un supprime son compte,très bien, ça va arriver sur le micro-servicede gestion des utilisateurs.Mais il va falloir répliquer la donnée.
00:18:40 :Dire aux notifications de supprimertoutes les notifications de la personne.Dire aux statistiques de supprimer toutes les statistiques.Éventuellement, éteindre des serveursde jeux qui sont liés à cette personne.
00:18:50 :Et donc, en fait, là, on se rend compte qu'on a parfoisquelques problèmesau niveau de l'échange de données.Donc ça, c'est vraimentles trois gros inconvénientsqu'on a. C'est mettre en place
00:19:04 :l'infrastructure,les communications réseau qui peuventavoir un peu plus de latenceet difficulté au niveau des choixde la manière dont on communique.Et, dans certains cas, problèmede consistance des données.
00:19:18 :Il faut bien réfléchir qui détient les donnéeset où elles sont stockées.Ok ?Donc, pour céder,on a quand même plusieurs techniquespour communiquer entreles microservices, si on en revient notammentà la partie réseau.
00:19:34 :On peut choisir différentes techniquesde communication.En général, on va passer par des API REST.L'idée des API REST, c'estde passer par le protocole HTTPet de pouvoir faire des requêtesassez simples pour venir modifierune ressource, ajouter une ressourceou supprimer une ressource.
00:19:52 :Ok. En revanche, dans certains cas,si on reprend l'exemplede notre jeu là,on va vouloir garder une communicationsur le long terme,notamment lorsqu'on est sur notre serveurde jeu. On va vouloir s'envoyer les positions
00:20:06 :des joueurs, admettons.Donc là, on ne pourra pas utiliser du HTTP.Pourquoi ? Parce quesi on utilise une API REST full,pour ceux qui connaissent,l'idée c'est que la communication est établiepour une demande et ensuite elle est fermée.
00:20:20 :Elle n'est pas bidirectionnelle.Donc le client et le serveur ne peuvent pass'échanger des données dans les deux sens.Le client fait une demande au serveur,le serveur lui répond.
00:20:30 :Lorsqu'on fait un jeu, ça peut poser problème.Qu'est-ce qu'on peut utiliser ?On va pouvoir utiliser notamment des sockets.Avec Socket.IO,qui peut nous permettre de gérerune communication bidirectionnelleet de la laisserouverte pendant quelques temps.
00:20:46 :Notamment durant le temps d'une partie,durant le temps d'envoyerdes notifications ou je ne sais quoi.Et après, on peut utilisernotamment des messageries asynchronescomme RabbitMQ.
00:21:00 :L'idée c'est de se direqu'est-ce qui se passesi la personne a créé un compteet qu'on doit lui envoyer un email ou un SMS.
00:21:08 :On ne va pasbloquer sa requêtele temps qu'on envoie son email ou son SMS.On y met dans unsystème de queue, dans un système d'attente.
00:21:18 :Et ce sera le microservicequi sera dédié à envoyer les emailsqui lui va venir recevoirla demande et la traiter quand il sera prêt.
00:21:26 :Quand il sera prêt, tout simplement.Donc ça c'est, on va dire, les troisgrandes manièresqui nous permettent de communiquer au niveau des microservices.Et ensuite,quelques tips au niveau de la gestion d'infrastructures.
00:21:42 :Qu'est-ce qu'on peut faireici ? C'est vraimentessayer d'y automatiser au maximumet d'avoir une gestion assez claire.Parce que là,quand on fait ce genre de projet, on aplein d'applications, plein de programmes à lancer.
00:21:56 :Donc c'est bien de ne pas le faire à la main.C'est bien d'avoir des systèmes qui nous automatisentça et qui nous sécurisent ça.Donc première idée, c'est d'utiliserDocker, forcément.
00:22:06 :Parce que comme ça, on a des environnementsqui sont propres pour chaque microservice.Si on veut un environnement qui est dédiéà faire du Python, on prend un containerqui fait du Python. Si on veut un environnement
00:22:16 :qui nous fait du JavaScript, on aura un containerJavaScript. Et ensuite,on va pouvoir venir les orchestreravec Docker Compose.Docker Compose qui va nous permettrede venir gérertout ce qui est la partie network.
00:22:30 :Donc pour faire en sorte qu'ils soient sur des réseauxet qu'ils puissent communiquer ensemble.Et puisgérer toute la partie des volumes,des images, tout ça.
00:22:40 :Et après,la plus grosse partie,c'est si on veut déployer du coup notre applicationen microservice sur des serveurs séparés.Donc si on veut venir déployerun microservice,par exemple A surtel serveur, je sais pas,Londres, microservice B sur tel serveuren Allemagne,et bien qu'est-ce qui va se passer ? On pourra utiliser
00:23:02 :du coup Kubernetesqui va venir nous permettre de venirscaler notre infra en cas de surchargeet de déployer du coupnotre application sur plusieurs autres.
00:23:12 :Voilà globalementce qu'on peut utilisercomme outils qui nous permettent de facilementmettre en place une architecture en microservice.Voilà, je sais pas si vous avez des questions,je suis peut-être allé un peu assez vite sur la fin.
00:23:26 :En tout cas, moi j'ai finipour ma partie.Je vois que c'est écrit dans le chat,n'hésite pasà prendre le micro directement,c'est plus simple.
00:23:44 :Alors je voulais savoirles microservices seront-ilsliés par des API, c'est ce que tu as dit ?Ouais, ça peut être lié par des API,effectivement,je parlais des API REST là,juste ici, ça peut communiqueravec des API REST, c'est ça dont tu parles.
00:24:00 :Après API c'est un mot très vaste,ça peut désigner beaucoup de choses.D'accord.Est-ce que vous êtes motivé du coupà faire votre prochaine application en microservice ?
00:24:22 :Est-ce que les avantagesvous ont motivéou pas du tout ?En fait, de mon côté, personnellement,je suis très intéressé à l'idéede créerun projet avecmicroservice, vu quedéjà dansmon équipe de développement,c'est pas tout le monde qui pratiquele même langage.
00:24:52 :Il y a ceux qui font du Dart,il y a ceux-làqui font du JavaScript,d'autres qui font du Python,et ça peut s'avérer assez complexequand on voudraitconcevoirun projet ensemble.
00:25:08 :Et alors, je me posela question,pourquoi ça pourrait ressemblersur le codeen fait, avec Docker ?Ben là, après,ce sera plus...Tu veux gérer la communicationjustement entre plusieurs langages,chaque personne du coupaura un containerDocker qui lui est propre, un ou plusieurs,que chacun peut avoir
00:25:34 :besoin de plusieurs containers.Et après, là, c'est vraiment, je sais pas si t'asdéjà fait du Docker Compose,mais Docker Compose, c'estun orchestrateur qui vajustement te permettre de diretel containeret tel container, ils peuventdiscuter ensemble, ils sont sur le même réseau.
00:25:52 :Ok ? Et doncaprès, qu'est-ce qui va se passer si tu veux communiquerentre un programme qui est en Pythonet l'autre qui est en Dart, comme tu m'as dit ?
00:26:00 :Et ben en fait, il va falloir que tu utilisesdes communications, des moyens de communicationqui sont un petit peu universels.Donc c'est ceux qui sont affichés à l'écran là, typiquement.
00:26:08 :Donc soit pardes requêtes HTTP que tu vas pouvoir fairedans les deux sens, soit si tu veuxmaintenir une connexion qui estbidirectionnelle et qui est constante,là tu peux te tourner vers des sockets.
00:26:20 :Et en fait, il y a pleinde manières universellesde communiquer entre desapplications qui sont dans différents langages.C'est vraiment...C'est à toi de regarder après et de choisirla manièrede communiquer qui est le plus adaptéepar rapport à tes applications,ce que tu veux faire, est-ce que t'as besoin de temps réel, est-ce que t'as pas besoin
00:26:40 :de temps réel, parce que tu vois,ça se joue vraiment là-dessus.D'accord,je comprends carrément.Mais je te laisse regarder du coup au niveau desAPI REST,comment est-ce qu'on en fait, ça tu peux en faire dans tous leslangages, les sockets, pareil, tu peux en faire dans tous les
00:26:56 :langages.Donc voilà.D'accord.Vraiment des méthodes qui sontuniverselles, qui permettent de fairela passerelle entre tes applicationsqui sont dansdifférents environnements.Et on peut aussigérer la partie front-endde la même façon ?
00:27:18 :Ouais, bah la partie front-end,là du coup, ça va dépendre.Ça va vraiment dépendre aussiparce que dans ton front,tu peux très biendécider d'avoir des communications temps réellescomme des sockets,comme tu peux décider de ne pas avoirune communication temps réelle et juste de faire des requêtes
00:27:36 :quand on a besoin avecl'API REST. C'est vraiment la même chose.Le front-end, c'est un micro-service.Tu peux le voir comme ça.En réalité, c'est un micro-service,le front, qui vavenir communiquer avectous les autres, potentiellement.
00:27:52 :Certains micro-services, des fois, sont dédiéssi on vient surle graphisme. Nos serveurs de jeu,par exemple, ils ne sont pas accessiblesdirectement au pull front.
00:28:02 :Il va falloir passer par un intermédiairequi va être notre gestionnaire de serveurs de jeu.Parfois,tous les micro-services ne peuvent pas discuterensemble. On peut les mettre sur des
00:28:12 :réseaux séparés et venirfiltrer un peu tout çaet organiser nos micro-services.Sur quoi, toi,tu fais quoi comme type d'application,par exemple ?Actuellement,je suis plus arrivé sur une applicationdegestiond'items,d'items de fin d'année.
00:28:42 :On a un sérieuxproblème de communicationentre les développeurs de mon équipeet c'est un peu ça.Je me suis dit, suivrecet événementpourrait être une bonne chose pour moi.
00:29:02 :Après, c'est vraimentassez long à mettre en place.Je ne te cache pasqu'il faut une équipe qui est déter.Mais en réalité, après, une fois que toutest mis en place, c'est un gain de tempset c'est du pur bonheur pour tout le monde.
00:29:20 :Une fois que toute la partieinfrastructure est gérée,tu peux communiquer comme tu veuxet c'est beaucoup plus simple.Chacun fait sa partie, chacun fait son langageet c'est trop cool.
00:29:32 :D'accord.Et pour ça, je dois plusaller vers Docker, c'est ça ?Pour une nouvelle structure.Ouais, ouais, Docker,franchement, c'estassez indispensable, même sansfaire des microservices.
00:29:50 :Docker, c'est vraimentun outil qui est super puissant.Je ne sais pas si tu connais un petit peu ou pas du tout.J'ai déjàfait du Docker, mais je pense queje seraistenté carrément, parce quej'ai vu quelques personnes en faireet c'est très intéressantdu côté gestion des projets.
00:30:10 :Ouais. En gros, pour ceux qui ne savent pas exactementce que ça fait Docker, l'idée, c'est de sedire, on a un problème qui est communentre tous les développeurs,c'est qu'on a tous des machinesqui sont différentes. On développe tous sur des machines
00:30:22 :qui sont différentes, qui ont des versionsdifférentes, qui ont des systèmes d'exploitation différents.Des gens qui ont codé sur macOS, des gens qui ont codé surLinux, sur Windows.
00:30:30 :Il y en a qui vont utiliser la version3.11 de Python et en fait, ils vont avoir un autre trucdans leur ordi qui va être différent.
00:30:36 :L'idée, c'est qu'on enlèvetoutes ces contraintes, toutes ces frictions qui sontcommunes, et on va utiliserce qu'on appelle des containers.Des containers, c'est quoi ? C'est comme des boîtes
00:30:46 :qui ont un environnementqui est programmé à l'avance.On va pouvoir le programmeret cet environnement va être fixe.Chaque personne qui va développer va pouvoirlancer des containers sursa machine, des sortesde boîtes avec un environnement isolé.
00:31:02 :Au moins, on est sûr quechaque développeur aurale même comportement,quel que soit son ordinateur.Quand on va passer notre application en productionsur des serveurs, on aura le même comportement.
00:31:14 :Pourquoi ? Parce qu'en container,on est sûr de ne pas avoir ce souci.Par contre, ce qu'il faut,ce qui est un peu difficile, c'est de venirles orchestrer, de dire que j'ai mon container Aavec mon container B. Ils vont
00:31:26 :pouvoir communiquer sur tel réseau,ils vont pouvoir avoir tel codeen commun, et ainsi de suite.C'est ça la partie qui est un peu pluscompliquée. Après, ça s'apprend
00:31:36 :en réalité.Mais voilà.Du coup, pour répondre à tes questions,Docker, Docker Compose,pour faire des microservices,je pense que c'est assez indispensableen réalité.
00:31:50 :Sans ça, c'est compliquéde mettreen place des microservices.Si ce n'est pas Docker,tu vas devoir lancer les commandes à la main,lancer chaque serveur manuellement,toutes tes applications, téléchargertous tes environnements.
00:32:06 :Si tu fais du Python et que tu as ton pote qui est deven JavaScript, qu'est-ce qui va se passer ?Tu ne sais peut-être pas trop ce qu'il faut installerpour faire du JavaScript sur ta machine.
00:32:14 :La personne qui fait un microserviceen JavaScript, elle fait son container,elle met tout sonenvironnement, tout ce qu'il lui faut.Toi, tu as juste à récupérerson image, tu lances le container,ça marche sur ta machine et tu es tranquille.
00:32:28 :Donc, ouais.Container pour l'architecturemicroservices, pour moi, c'est vraimentsuper utile.Voilà, voilà. Est-ce qu'il y a d'autres questions ?Est-ce qu'il y a d'autres personnesqui sont motivées par faireleur prochaine application microserviceou pas du tout ? Ou au contraire, il y a des choses
00:33:00 :qui vous font peur ? Est-ce qu'il y a des chosesque vous n'avez pas compris ?Ok, ok, ok.Bon, s'il n'y a pas de questions...
00:33:18 :S'il n'y a pas de questions, je peux couper mon partage.Et puis...Et puis, voilà.Ah, si, peut-être Pierre.Eh bien, écoute, pas de soucis.
00:33:42 :Merci à toi d'avoir été présent,en tout cas. C'est super cool.Merci, Tommy. J'ai arrêté l'enregistrement,c'est bon. Tu as dit que c'étaitterminé. Eh bien, merci. C'était super.
00:33:54 :Ok, ok.Pas de soucis.De mon côté aussi, c'était assezsuper.J'ai une idée là-dessus,mais je ne peux pas dire si je vais faire çadans une applicationou pas.
00:34:10 :Ça va dépendre de la suite, en fait.En tout cas, c'était super de savoirqu'on peut faire ça de cette manière.Après, c'est un sujetqu'il faut quand même assez creuser.
00:34:20 :En réalité, là, je vous ai présentéles grandes parties de comment est-ce que ça fonctionne.Après, c'est à vous d'aller creuser les sujets,de vraiment comprendreen détail comment est-ce queça marche. Parce que le but, c'est pas non plus que je
00:34:32 :montre de A à Zcomment ça fonctionne. Sinon, on en aurait pour des heures et des heures.Mais voilà.Au moins, vous savez que çaexiste. La prochaine fois
00:34:42 :qu'on vous parlera de microservices,vous aurez une petite idéede ce à quoi ça ressemble.Je crois que j'avais unepetite question avant depasser.
00:34:58 :Dis-moi.Le microservicen'influence pasles design patterns qu'on achoisi au départ pour le projet ?Non,je pense pas. Parce qu'en réalité, les design patterns,
00:35:12 :je penseque c'est plus régi en internedans tes applications.Moi, comme je voisles choses, c'est que les design patterns, je les voisplus dans toncode, concrètement,que plus dans lesservices qui font tournerton application en global.
00:35:32 :Je sais pas si tu vois ce que je veux dire.Mais non,honnêtement, je pense pas. Après, oui, ça peut s'adapter.Forcément,c'est des design patterns spécifiques.
00:35:42 :Tu peux avoir un microservicequi peut répondre à tondesign pattern, mais en réalité, je pense que c'est plusau niveau de ton codeet dans ton microserviceque tu vasinstaurer tes design patterns, concrètement,que plus à l'extérieur.
00:35:58 :D'accord. Je comprends.Merci carrémentpour ce partage.Et ça m'a vraiment aidé.Pas de souci.Il y en a qui restentet qui peuventdes conseils ou de l'aide sur leur projet.
00:36:18 :Je peux potentiellement un peu aider.Il y en a qui sont bloquéssur des trucs en Python ou autre.On peut éventuellementchecker un œil tous ensemble.
00:36:28 :Il y a des personnes qui veulent présenterleur projet actuel.Pas de souci.Ce que je peux faire, c'est queje peux vous partager un repo github.
00:36:48 :En réalité, le projet que je vaisvous expliquer là, c'est un projet que je fais actuellementen études.Je peux partager le repopour que vous voyez un petit peu à quoi ça ressembleen termes de structure,de microservice qu'on a,etc.
00:37:06 :Je vous mets le lien du repo en voc.Si vous voulez jeter un petit coupd'œil,notre application est en full pythonavec quelques microservicesqui sont en Django.
00:37:22 :On a un frontend qui est faiten javascript Vanilla.Et après on utilise du Docker Composepour tout ce qui est la communicationentre nos microservices.
00:37:32 :Avec des API RESTet du Socket.Est-ce que tu es à l'école 42 ?Ouais.Je suis à l'école 42.C'était dit au tout début, mais je ne sais pas si c'est encore arrivé.
00:37:52 :On est à quelle année là ?Là, ça faitun an et demi que je suis dans l'école à peu près.Je crois qu'il y en aune bonne vingtaine.
00:38:10 :Ouais, il y en a un peu plus que 20 en réalité.Il y en a maintenant 50 dans le monde.Moi je suis à Carne de Lyon du coup.
00:38:18 :Tu connais un peu le concept et tout ?Ouais, je sais qu'à la piscine ils font du C++.Ça dépend des écoles.Ils font un an et demide tronc généralet après ils font des spécifications.
00:38:36 :Le langage c'est communà toutes les écoles, enfin à tous les campus.Du coup je fais beaucoupde C++.La petite presse que j'ai fait sur les microservicesc'est notamment sur le dernier projetqui n'a rien à voir et qui est du web.
00:38:54 :On doit faire un jeu Pongcompétitif.C'est une application webavec un jeu Pongqu'on a fait.Et du coupon l'a architecturé en microservicesparce qu'on trouvait ça cool en réalité.
00:39:10 :Et voilà.Je vais ensuite pratiquementà la fin du temps commun dès qu'on aura validéce projet. Et même pour ceux qui veulenttester, il y a même le sitequi est en ligne. Il est encore un peu
00:39:22 :buggé, notamment au niveaudu système de game.J'ai fait 3 rollbacks pour les gens qui auraient une mauvaise connexion.Maisle reste est à peu prèsgood.
00:39:34 :Si il y a des gens qui trouvent des bugs, n'hésitez pasà me le dire.Mais typiquementl'application qui est làest complètement faite en microservices.
00:39:44 :Derrière on aplein d'applications qui tournentet qui permettent de gérer tout ce que je vousai montré juste avant.Un instant.Euh...Non, c'est vraimentcool le jeu en fait.
00:40:16 :De quoi?C'est vraiment cool le jeu.Je pense que je t'ai pu avoir vue endéveloppement. La dernière partietu étais...Ouais, je connais là-dessus, effectivement.
00:40:29 :Ouais.D'accord.J'essaye de m'abonner.Oui, si tu veux tester,tu peux créer un compte.Tu peux créer un compte...Alors, le site with Github, il est actuellementdormant, on ne peut pas créer un compte avec Github,il faut créer un compte à la main avec une e-mail.
00:40:47 :Alors, on est en train de régler des problèmesjustement là-dessus. Mais voilà, si tu veuxtester l'application,tu peux tester.Il y a encore 2-3 bugs sur certains trucs,on est encore en dev dessus.
00:40:59 :Comme vous voyez sur le repo, il y a genreune douzaine d'issues encore ouvertes.Mais voilà, on aura bientôtfini.Ok.Et ouais, la dernière fois,j'étais en train de coder sur les notificationsdes amis et tout,t'étais là. Il me semble qu'on avait pu échanger
00:41:17 :un petit peu.On avait quand même puéchanger sur ces notes.Yes.Et c'est d'ailleursça aussi qui m'a intéressésur Docker en fait.Ouais, franchement,Docker pour moi, c'esttellement... Quand tu découvres
00:41:37 :ça, c'est vraiment une magiepour le coup. Et c'est trop bien.Peu importe que tu fassesde X ou Y langage et que tu développesdans X ou Ydomaines. Franchement,
00:41:49 :Docker, c'est la vie. Les mecsqui ont créé ça sont gigas chauds. En plus, c'est desFrançais. Donc, coucouet quoi.Et ouais, c'est trop bien.
00:41:59 :Il faudrait que je motiveThibaut d'ailleursà faire une petite formation Docker.Ça pourrait être cool.Mais d'ailleurs, si ça intéresse des gens,j'ai pas mal de liens pour apprendre Docker.
00:42:15 :Notamment sit'es habitué un petit peu au contenu anglais.Il y a unesuperpersonne qui fait des vidéos YouTubede DevOps.Elle s'appelle TechWorldwith Nana. C'est une
00:42:31 :femme qui est vraiment incroyable. Ses vidéos sonttrop bien. Je peux vous envoyer des vidéosjustement où elle parle de Docker.Elle apprend tout de A à Z.
00:42:39 :Et franchement, c'estincroyable.Il y a moyen d'apprendre énormément de choses.Je vous ai mis le lien de la vidéo. Alors, c'est une vidéoqui dure 2h46.
00:42:49 :Mais vraiment, elle expliqueles bases de la théoriede Docker, comment ça marche,à quoi ça sert, tout ça.Et ensuite, elle montre avec des lignes de commandejustement comment installer Docker,comment faire fonctionner ses premiers Dockers, ainsi de suite.
00:43:03 :Et ouais.Je vous conseille vraiment cette chaîne YouTubemême pour toute la partie DevOps.Si vous voulez apprendre du Kubernetes,même je crois qu'elle a fait une vidéo surMicroservice aussi.
00:43:15 :Elle a fait plein de choses qui sonttrop cool au niveau du DevOps.Donc, je vous conseille de vraiment checker sa chaîneYouTube. Elle est incroyable.
00:43:23 :Est-ce que c'est toi qui as fait le design sur ton sitepong ?Ouais.C'est moi qui suis le développeur frontend.Pourquoi ?Parce quele thème obscurité et clair, là,c'est dur.
00:43:43 :Non, en réalité,c'est pas super dur.En fait, si tu veux,déjà, j'ai utilisé du Bootstrap.Donc, en fait, je me sers des thèmes un peu par défautde Bootstrap. Et après, pour tout
00:43:55 :ce qui est la homepage que tu vois,l'île qui change, là,on utilise une librairie qui s'appelle TriVS.Je ne sais pas si tu en as déjà entendu parler.
00:44:03 :Ouais, mais c'estmoderne. Enfin, mais Bootstrap,c'est très critiqué pourle codeCSS généré.Ouais, alors, pour être honnête,déjà, c'est quelque chose qui nous a imposépar notre école. Donc, on n'a pas eu le choix de prendre du Bootstrap.
00:44:21 :Et en fait,au début, j'étais un petit peu...C'était un petit truc du même avis.J'entendais les gens qui faisaient du frontqui disaient que c'était pas ouf et tout. Alors, je suis sûrement pas un expert en front.
00:44:31 :Et voilà. Mais de l'expériencede ce que j'en ai eu, en réalité,je trouve ça super pratique.Il y a beaucoup de choses qui sont très utiles.
00:44:39 :Après, les gensqui vont te dire quele code généré, il est super groset que ça te fait importer beaucoupde choses dans ton application Webalors que tu ne vas t'en servir qu'une partie,ça, je suis assez contre. Pourquoi ?
00:44:53 :Parce que maintenant, on a ce qu'on appelledesbundlers.En fait, qu'est-ce que ça vient faire, un bundler ?Ça vient prendre toute ton applicationavec tous tes fichiers HTML, CSS,et ça vient les compresser.
00:45:07 :Ça les compresse totalementdans un seul et même fichier.Ça rename toutes les variables pour que ce soit tout petit.Le plus petit possible.Et finalement, quand tu faisun bundler avec Bootstrap,ton site, il est quasiment tout petit.
00:45:21 :Et en plus, la première foisque la personne va se connecter,elle va stocker en cachele CSS de Bootstrap.Et du coup,mon CSS de Bootstrap qui était« lourd », il est chargé qu'une fois,il est déjà mimifié et il est en cache chez la personne.
00:45:37 :Donc,je pense qu'avant de se dire« je n'utilise pas de Bootstrap parce que... »il faut peut-être se direqu'il n'y a pas d'autre prioritéà optimiser sur mon site avantd'optimiser du Bootstrap ou autre.
00:45:51 :Ce n'est peut-être pas la plusgrosse priorité. Après, par contre, si tu fais dufrontend en tant que vraimentexpert, là, oui, tu pourras sans douteme défoncer et me dire que Bootstrap,c'est pas ouf et qu'il y a plein d'autres choses qui sont cool.
00:46:03 :Mais après, si tu es quelqu'un quiest plutôt début, tu veux faire une applicationassez tranquille,honnêtement, du Bootstrap, tu peux y aller,les yeux fermés, ça va.
00:46:13 :Ils sont quand même vachement mis à jour.Comparé à avant, il y avait certainesversions de Bootstrap qui n'étaient pas oufet qui utilisaient des fonctionnalités un peu obscures.
00:46:21 :Mais maintenant, si on regarde la doc de Bootstrap,ils implémentent toutes les dernières fonctionnalitésavec tout ce qui estles flexbox, les grids,tout ce qui estassez moderne.
00:46:33 :Franchement, en réalité, ça va.Après, oui, c'est mieux de se tournersur du Tailwind, par exemple.On peut faire plus de choses,c'est peut-être un peu moins lourd.
00:46:43 :Après,c'est quelque chose qui se discute.Mais je trouve que beaucoup de genscritiquent Bootstrap.Des fois, on peut vite s'en faire une idée, maisperso, moi,quand je m'en suis servi, finalement,j'ai un peu changé de point de vue là-dessus.
00:46:59 :Voilà, voilà. Et du coup, pour l'île qui estfaite, quand tu mets le dark modeou le light mode, c'est du 3DS.Le 3DS, ça permet de fairede la 3D dans le navigateur, ceux qui savent pas.
00:47:13 :Et ça permet d'utiliser notammentla carte graphiquedans le navigateur.Par exemple, notre jeu, il est en 3D complet.Donc on a d'autres homepages, et après,on a le jeu Pong qui est en 3D avec des lumières,une caméra qu'on peut bouger, tout ça.
00:47:27 :Donc ça, ça permet d'utiliserla carte graphique de la personneet de pouvoir facilement gérer de la 3D.En fait, il suffit de modéliser des objetssur Blender ou d'en téléchargeret ensuite, on peut les importer facilement,positionner des lumières, positionner des caméras,faire des animations, ainsi de suite.
00:47:43 :Donc c'est assez cool, le 3DS. Même s'il fautfaire attention, quand même,en termes de performance, parce quesi on a une bonne machine, on a tendance à faire des trucsqui consomment beaucoup, et au final,on se rend compte que ça tourne pascorrectement chez tout le monde. On a eu pas mal de problèmes
00:47:57 :un peu là-dessus, nous. On avait des jeuxqui étaient assez lourds, et au final,on a dû enlever quelques fonctionnalitéset les rendreun petit peu moins beauxen réduisant des éclairages, de la transparencesur certains objets ou quoi, parce quesur des petits appareils qui ont pasforcément un très bon GPU,
00:48:15 :ça lag assez rapidement.Sous-titres réalisés para la communauté d'Amara.orgSous-titres réalisés par la communauté d'Amara.orgVoilà. Écoutez, je pense que je vais vous laisser.Faites une bonne soirée à tous.
00:49:21 :Et puis,peut-être seulement à la prochaine,quand on se retrouvera.Ça marche. Merci pour ta présentation,Tom, et puis à la prochaine.Ouais, si jamais t'as le record, en vrai, je suis sûrque tu me l'envoies.
00:49:35 :Ouais, par contre, moi, j'ai pas eules questions à la fin. Je verrai avec Cams'il a tout pris. Parce queau moment où j'ai arrêté l'enregistrement, il y a d'autres questions qui sont parties.
00:49:43 :Donc, évidemment, j'ai pas tout.Je verrai si Cam il a tout. Et de toutefaçon, il y a Thibautqui va nous mettre à disposition un drive.
00:49:51 :Et puis, on va tout mettre dessus pour que ce soitaccessible pour tout le monde. Donc, tu pourras le récupérer,il n'y a pas de souci.
Aucune occurrence trouvée pour « ».
Bravo, tu es prêt à passer à la suite