 Par curiosité qui c'est qui connaît corcus qui c'est qui fait du spring boot ça va encore et tu dans les conférences je fais qui c'est qui fait les corcus et il y a 5 mains qui se lavent je fais qui c'est qui fait du spring boot il y a toutes les mains qui se lavent et tout et là j'en fais oh pas bien et tout mais du coup. Du coup j'ai juste encore un slide juste pour me présenter et après on attaque en live coding ok donc je m'appelle Sébastien blanc vous pouvez me suivre sur twitter cb 27 0 6 je fais des vidéos marrante. Et mes dm sont ouverts donc vous pouvez m'envoyer un message privé si vous voulez sinon vous pouvez m'envoyer un mail à s blanc à radat.com alors j'ai un petit trompeau pompeux là de directeur de la développeur expérience en fait je suis un développeur advocate donc moi mon rôle c'est de rendre les développeurs heureux. Et je fais ça en faisant des talks comme aujourd'hui en organisant des workshops des 4 longues je suis java champion j'organise ma propre conf dans le sud de la France je j'habite dans le sud de la France. Riviera d'oeuvre miar conf de tous les temps et je me considère comme un passion de développeur donc pendant très longtemps j'ai voulu être instit comme mon père en fait. Et en fait j'ai préféré les ordinateurs à un moment donné donc je suis devenu ingénieur j2f. Mais aujourd'hui en faisant des présentations je peux. Enfin faire un peu comme si j'étais un instit et moi j'adore partager avec le public les choses qui me passionnent et du coup on va parler de. Quarkus et c'était mon dernier slide et on va attaquer le live calling. On regarde un petit peu si tout se passe bien côté stream. Regardez un peu trop tard si tu veux y aller avoir du coup. Quarkus qu'est-ce que c'est si je vais sur quarkus.io je vois super sonics. Ça c'est la ligne qui claque un peu quoi. Mais qui est correct on va faire du java. Super rapide super petit super petit en mémoire et on avait pas trop l'habitude avec java surtout quand on va aller dans le cloud on a envie d'avoir des workloads. Qui démarre rapidement qui ne somme pas trop de rames et jusqu'à maintenant java c'était pas en fait en aide c'était pas le meilleur le meilleur choix technologique pour aller dans le cloud. Les choses ont changé et aujourd'hui je vous montrerai qu'avec quarkus on va pouvoir bâtir des applications sur une stack java qui sont faites pour devenir des bonnes citoyennes du cloud. Alors là on a la petite haïtine. Marketing a Kubernetes native de la stack donc il y a l'application que tu vas faire avec quarkus elle sera parfaite pour aller sur Kubernetes c'est vrai. Mais si vous faites pas encore du cube il n'y a pas de soucis vous pouvez déployer votre genre à l'ancienne sur une vm ou sur une machine sur du bar métal il n'y a aucun souci. Mais c'est vrai que si vous allez sur du cube on a des petites facilités des petites optimisation qui font vraiment que votre workload se comportera très très bien sur du cube. Alors pour faire du quarkus on a besoin de quoi c'est facile on a besoin d'une jdk et de maven c'est tout. Si on va aller plus loin qu'on veut compiler en natif et ce matin on a vu de la compilation native et je vais en refaire aussi de la compilation native il vous faudra graal vm que vous pouvez télécharger sur GitHub. Oracle propose une version commune communautaire que vous pouvez télécharger ok mais à part ça il vous faut juste. Java enfin jdk. Maven et un idee pour coder ok moi je vais utiliser visual studio code parce que je l'aime bien c'est très léger il a un très bon support pour quarkus mais si vous préférez un DJ ou eclipse on a aussi du support pour ça du coup la première chose c'est comment démarrer un nouveau projet. Parce qu'on va vraiment partir de zéro alors il y a plusieurs solutions on pourrait la première solution on pourrait aller sur code point quarkus.io. Et ça ça nous emmène sur cette interface web si pour ceux qui font du spring vous vous vous dites ah mais ça ressemble beaucoup à start dot.io oui on l'a totalement copié. Et d'ici en fait on peut se cas folder un nouveau projet donc je donne mon groupe id mon aspect et je choisis mes extensions donc les features que je rajoute à mon projet et je préfère générer l'application et je peux même si je veux le pousser directement par un repos guide ou le télécharger en zipe ok ça c'est une première solution la deuxième solution c'est si je suis sur ma console mon terminale il est là. Si je suis sur mon terminale et que j'ai mis à veines je peux utiliser. J'ai pas la complétion je peux faire quelque chose genre il y a au point quarkus j'ai le plugin sur lequel je vais pouvoir se cas folder aussi un projet. Troisième possibilité je peux aussi utiliser la la si à l'aille de quarkus en a une qui s'appelle quarkus. Et là je pourrais faire quarkus create app et ça me créer un nouveau projet. Vous voyez pas super bien vous inquiétez pas sur le son mon idée c'est en blanc ok la dernière possibilité c'est d'utiliser son idée pour créer un nouveau projet c'est ce que je vais faire donc là en gros si on va dans le les extensions que j'ai installé sur mon studio code on peut voir que j'ai le support pour quarkus du coup ça me permet de ramener ma palette ici de faire démarrer un nouveau projet. Quarkus donc je choisis ici mon bill tout je peux faire du mavent ou du grudel on vient de sortir de l'un je vous êtes un peu fatigué donc on va rester sur du mavent. Je choisis ma version je choisis mon groupe ID de mon artefact mavent donc là on va rester sur du or point cb de vox polo et c'était la fin de dernière la c'est definition. Live. Live. On va l'appeler comme ça le projet. C'est une snapchat. Laine demande un nom de package parce qu'il va me générer un petit peu du code au départ pour que je puisse rapidement qu'on s'accorder et voir mon appli qui tourne donc là je lui dis or point cb c'est très bien. Je veux du start or code. Il va me créer une ressource reste il va m'exposer un point d'accès reste. Qui s'appellera et l'eau ressource ok. Live on me demandait quels sont les features que tu veux rajouter les extensions que tu veux rajouter à ton projet alors on va rester très simple pour l'instant on va juste faire du reste. Donc je vais faire du reste easy reste easy c'est une implementation de jacks rest ok. Et je vais faire du réactif même si ce n'est pas sur le réactif mais par nature. Quarkus et réactif non bloquant donc autant en profiter. Je prends juste cette extension là et je lui dis je vais créer ça dans. Un. Je me semble un bon endroit pour faire ça et je lui demandais. Comme un grand il a fait ça tout seul ok donc si on regarde. Ça ça va être intéressant je sens ok alors. Peut-être ouvert sur la mauvaise version de l'intellité on va voir on va voir ce que ça. Ça va pas le faire ça va pas le faire attendez. Deux secondes tout tout tout tout vous inquiétez pas les demagogues ils sont toujours très méchants avec moi. Au bout d'un moment je m'en sors toujours. Ça devrait fixer le problème normalement. Later. On va donc ça y est c'est bon hop. Back tout normal. Donc on regarde un peu ce qui m'a généré donc c'est un un projet maven classique vous voyez ici j'ai mes sources ma main. J'ai le code qui m'a généré donc je vous ai dit il crie un petit point d'accès reste très simple qui coûte sur le. Le passe et l'eau et si je fais une recette http de type. Et bien je rentre dans cette méthode et je retourne ce stream relativement simple. Il m'a créé aussi. Dans ressources ce fichier application dot pro parties c'est là où je vais pouvoir mettre toute ma config. Et à un moment donné je vais vouloir faire de la config et surtout si je vais dans le cloud. Je vais vouloir extraire mes mes données de connexion à ma base de données tout ça dans la config je vais pas vouloir. Arcoder ça dans dans mon code ici. Imaginer des tests. On peut regarder ce test notamment qui teste donc le point d'accès et l'eau donc là il va tester et l'eau. Et le retour il teste le status code et le body de la méthode. Il m'a généré aussi parce qu'à un moment donné mon application je vais la packer en conteneur et je vais la déployer sur du cloud. Il y a la forte chance que je fasse ça. Et pour faciliter la tâche, Quarkus m'a généré des docker files. Il y a d'autres façons de continueriser l'application on verra peut-être un peu si on a le temps. Et en gros c'est bon du coup on peut démarrer notre application on va démarrer notre application. Je vous vois un terminal ici. Et je vais faire un maven. Quarkus je vais utiliser le plugin Quarkus. Et je voulais dire écoute démarre le projet en mode développement en mode dev comme vous pouvez voir. Donc il me compile l'appli il me la démarre. Elle est là elle est prête et je peux commencer à travailler dessus. Et on va tester d'abord si tout va bien donc je vous remets juste cette source là tout tout tout tout. On va vérifier que ça fonctionne bien donc j'ouvre notre terminal ici je fais un curl local. 80 80 slash et l'eau. Et ça me retourne et l'eau. Parfait ça fonctionne. Par contre sur mode dev donc en fait ce que je peux faire c'est je peux faire et l'eau. Changer le stream ici. Et l'eau dev nation des France. Et je fais un petit save. Je refais mon curl. Et là vous voyez. Il prend en compte directement le changement que j'ai fait. Et vous allez dire c'est pas très impressionnant de changer un string et tout. Ok on va aller un peu plus loin du coup je vais rajouter une méthode. Rajouter une nouvelle méthode ici on va lui rajouter un sub pass. Qui va écouter sur fr on va l'appeler bonjour. Ok et là on va retourner. Bonjour. Dev nation des France. Ok je sors et maintenant je refais mon je refais mon curl et l'eau slash fr. Bonjour. Et donc vous avez eu et j'ai pas redémarré mon application. Donc en fait je peux rajouter des méthodes je peux rajouter des classes je peux rajouter des dépendances je peux changer la configuration. Je n'aurai jamais besoin de d'arrêter mon application et de la redémarrer. Ok ça c'est la vraie expérience de de la livre reloading. Quelle est la magie derrière ça en fait il n'y a pas de magie. Si on regarde mon projet la crocus. Tac tac tac chaque fois que je fais un save. Je fais contrôle save en fait crocus est tellement rapide. Qui peut se permettre de stopper et de redémarrer. Et je ne m'en rends même pas compte. Ok donc c'est ça la magie il n'y a pas de magie en fait on stop et on redémarre. Ça va tellement vite il change juste le delta et je ne m'en rends pas compte. Ok donc ça c'est le live reload et vous allez voir. Normalement quasiment toute ma présentation je ne vais pas avoir besoin d'éteindre mon application. Il y aura peut-être deux trois moments où faudrait-je le faire. On continue. Parce que j'ai plein plein de choses à vous montrer on va parler de configuration. Je vais parler de ce fichier là ok. Donc on va s'imaginer qu'on veut en fait le elo là. On veut l'extrère se string et en faire une config proportie. Un attribut de configuration donc comment on peut faire ça. Je vais aller là je vais faire config. Pas confoq. Il n'y a pas. Je donne le nom de ma de ma propriété de configuration. On va appeler gritting. Et là je mets un string que j'appelle gritting. Et du coup maintenant ici ce que je pourrais faire ici c'est. Per gritting plus ok. Donc ça ça devrait fonctionner. Ok non ça ne fonctionnera pas si je le fais on va on va le tesse pour vous montrer ça ne fonctionne pas. Je vais le faire et je vais avoir une grosse tax trace normalement. Pourquoi parce que ma config n'a pas été définie. Donc si je le souhaite je pourrais faire ici je pourrais faire un default value. Je veux dire que c'est un default value. Donc si je le souhaite je pourrais faire ici je pourrais souvent faire un default value. Je veux dire que c'est élo. Ok et du coup là ça devrait marcher maintenant. Pardon. Là ça devrait fonctionner ok. Mais du coup j'ai une config maintenant et je peux aller dans mes applications de proportise. Et là un truc cool avec le support dans visual studio code si je tape juste gr. Il me dit ah bah regarde tu as une propriété gritting tu n'as pas encore cété. Donc tu peux l'accepter donc là mais ici et on va mettre par exemple au la. Ok je mets au la la un petit clear si je refais un carl et l'eau voilà ça y est j'ai de la config. Je peux exciter ce que je veux et encore une fois je n'ai pas eu à stopper mon application et la redémarrer. Ok on va parler de ah oui je vais vous montrer ça. Il y a une chose comme je vous ai dit là en fait ce que fait carcus il stop l'application et la redémarre. Ça veut dire que si on a un état dans notre application par exemple un compteur. Chaque fois qu'on va modifier le compteur il va retomber à zéro. Je peux vous le montrer si par exemple si je rajoute ici je fais un atomique. Et d'ailleurs je l'appelle atomique et c'est un new atomique. Et là je fais et l'eau je fais un espace et après mes deux points et j'affiche mon atomique. Je fais une crise incrementing. Ok donc si je fais ça très bien je refais mon carl. J'ai fait 1 2 3 ok jusque là rien de surprenant. Par contre si je change quelque chose à mon code que je mets ça par exemple. Et que je recommence et vous voyez que je reviens un j'ai perdu l'état de mon application. Alors pour beaucoup le cas c'est peut-être pas un souci si c'est vraiment important pour vous de maintenir l'état. Ce qu'on peut faire c'est là où j'ai juste besoin de stopper l'application. Merci mon collègue m'a dit que normalement maintenant on pouvait le faire aussi en live. Ce que je voulais dire en fait je voulais dire. Utilise l'instrumentation de la jvm mais ça se retrouve. Ok. Je redémarre l'application. Je nettoie un petit peu ici pour que vous voyez quand même. Je refais mon curl donc je suis à 1 2 3. Je viens ici je modifie quelque chose je fais égal égal. 4 5 6. Voyez j'ai l'état qui est maintenu. Donc si vous avez besoin de maintenir l'état pensez à mettre cette propriété. Du coup je l'enlève parce que j'en ai plus besoin pour la suite. Et ça marche aussi si vous rajoutez des métriques par exemple. Il y a une très bonne extension pour les métriques. Elle va aussi maintenir l'état de vos métriques. Je stopp ici j'aurai des marres et on va regarder ensemble ce qui se passe quand on démarre l'application. Est-ce que vous avez vu ? Regardez ça. Test. C'est tout en bas vous le voyez. Qu'est-ce que ça veut dire ? En fait dans Quarkus on peut lui dire de tourner nos tests unitaires en continu. Au lieu de faire ça dans son IDE comme on fait en classique. Ou stopper son application et faire un MVN test. On peut demander à Quarkus. Écoute, teste-moi tous mes unités pendant que tu codes. Chaque fois que tu fais save je veux que tu fasses tourner mes tests unitaires. Du coup on va tester. Et rappelez-vous quand j'ai généré mon projet. Imaginez ce test là. Oui il va tester sur ELO, sur ELO Reactive. Donc normalement mes tests vont péter. On essaye. Et on voit que le test il est faillé. Parce que si on va en haut on va regarder. Il dit. Je remonte. Il fait expected. Je m'attendais à ça. Mais à la place je reçois ça. Du coup, qu'est-ce que je peux faire ? Je peux faire deux choses. Je peux effacer mes tests parce que tester c'est douté. Je peux fixer mon test. On va fixer mon test. Donc on va revenir ici. Et on va coller ça. On va les dire ça. Et regardez bien, je vais revenir juste en bas. Je vais faire juste un save. Normalement. Vous voyez mon test repasse en vert. Et du coup je peux aussi rajouter à la volée des tests. Vous savez, j'ai rajouté mon point d'accès à bonjour. On va le tester aussi. J'appelle ça test bonjour endpoint. Et c'est quoi que je retourne encore ? Je retourne bonjour definition day France. Je prends ça. Je crée un nouveau test. Je le rajoute là. Je sauvegarde. Et normalement, regardez, maintenant je passe à deux tests. Deux tests qui sont vers. Imaginez, pendant que vous codez. Même si je modifie. Et pareil, si je modifie quelque chose ici dans ma méthode. Ah ben moi, ta siropette. Donc j'ai vraiment du feedback en continu de mes tests unitaires. On va les remettre en vert. On va aller là. Donc ça, mes tests, on continue ce testing. Je peux le voir d'ici. Il y a un autre endroit où je peux le voir. J'ai démarré en mode dev. Si je vais dans mon terminal que j'appuie sur la touche D. Ça m'emmène sur ma console dev UI de Quarkus. Là, j'ai plein d'infos sur les extensions que j'ai. Mais j'ai aussi. Allez. Je peux voir mes tests d'ici. Ok, donc si je fais péter un test. Ils sont mes tests. On refait péter un test ici. On le voit ici. Donc ça, c'est super utile si vous travaillez avec deux écrans. Sur un écran, vous avez votre IDE. Sur le deuxième écran, vous avez votre dev UI qui est ouvert. Et vous pouvez avoir du feedback instantanément. Ok, très bien. Donc ça, c'est le. Continues testing. On va refixer mon test. Et on va. Qu'est-ce qu'on va faire maintenant? On va parler un peu de. De cloud et tout. J'ai plein d'autres choses à vous montrer. Mais on va se dire que cette application-là. Au final, je vais la packadier en tant que container. Je vais la mettre dans un pod. Et ce pod, il va tourner dans un cluster. Et ce serait pas mal si cette expérience développeur que j'ai en local. Donc ce live reload. Ce serait quand même génial. Si je pouvais avoir exactement le même comportement. Mais avec mon workload. Donc mon application qui tourne. Dans un pod qui tourne dans un cluster. Et on va essayer de le faire. Et vous voyez, on peut le faire avec. Attention. Je stop mon application. J'ai quelques petits trucs à faire. Tout simplement au départ, pour que je lui dise. Quand tu vas packager mon application. L'application. C'est pas un jar normal. Packaging. Quand ça s'appelle encore. Packaging type. Pourquoi je le trouve pas là? Package type type. Voilà. Là, je vais lui dire. Quand je fais un Maven Clean install. Créé-moi un jar mutable. C'est un jar spécial. On peut lui envoyer à ce jar des points classes. Et ça va mettre à jour. Le jar. Et ça va beaucoup nous aider pour ce qu'on veut faire. Après, il faut faire un peu de sécurité. Alors. Password. Alors là, ferme les yeux. Là, il faut que j'établisse un secret entre. Mon environnement local. Et l'endroit où je vais. Déployer mon pod. Qui contiendra mon application. Donc, c'est juste pour se mettre d'accord. Dans l'image, il y aura ce secret. Et en local, quand je démarre, il va juste mâcher que le secret est le bon. Du coup, je suis pas trop mal là. Il me faut. Qu'est-ce que je dois faire? Je dois créer une image de conteneur de mon application. Je pourrais faire ça de pleine façon différente. Mais on va utiliser Docker. Vu qu'ils nous ont créé des Dockerfiles. Non, merci, j'ai pas besoin d'extension. Et je suis super flemmard. Moi, et c'est trop bien parce que dans les commentaires, il me met la commande exacte que je veux à taper. Faire mon image de Docker. Donc, on va prendre ça. On va se le faire dans le terminal ici. On va faire un petit clear. Alors, ça fait deux fois que je me fais avoir. Là, si je la tape la commande, elle va pas marcher parce que je n'ai pas encore de jar. J'étais en mode dev. Donc, on va se faire un petit jar. Je fais mes install package. Ok, ça devrait être relativement rapide. Rapide, mes tests devraient passer parce que j'avais le continuous testing. J'avais tout repassé en vert. Ok, j'ai mon jar. Très bien, super. Et du coup, maintenant, je peux faire mon image de conteneur. Donc, je fais un Docker build classique. Je pointe vers mon Dockerfile. Et là, je vais juste changer une chose ici. Je vais changer ça et pointer vers mon repos d'image conteneur. Moi, je suis sur kway.io, qui est une autre solution à redhat pour hoster les images de conteneur. Et mon username, c'est bastien blanc, zéro parce que, oui, parfois, on se plante quand on crée nos comptes et tout. Ça arrive. Ok. Du coup, je prends le VGM. Il va me créer mon image de conteneur. Ça devrait être relativement rapide. Voilà. Et maintenant, j'ai mon image de conteneur qui est encore en local. Et je vais la pousser vers ma registrie. Et c'est là que je n'ai pas du tout testé le réseau ici. J'ai aucune idée du upload. On va le découvrir ensemble dans quelques instants. Ça va être formidable. Donc là, je vais le pousser. C'est moyen, moyen moins. Ça va, ça va le faire. J'ai 35 magas à pousser là. Si je compte jusqu'à 6, j'arrive. 1, 2, 3. 4, 5, 6. Parfait. C'est exactement les 6 secondes. Donc mon image, elle est là-bas. Et ici, on va sur Quay.io. Quay.io. C'est ici. Donc d'ailleurs, vous pouvez créer un compte gratuitement. Si vous créez un compte... Je suis sur la mauvaise... Je suis sur Momo avec Chrome. Ça ne va pas le faire. On va aller ici. Et là, normalement, je suis connecté. Donc c'est comme Docker Hub. C'est exactement pareil. Je suis là. Je vais sur Sébastien Blanc. Et si je fais Last Modify, vous voyez definition live. C'est celui qu'on vient de pousser. Par défaut, dans Quay, un repos, il n'est pas public. Donc il faut juste que je le rende public. Ça y est, maintenant, il est public. Si il est public, n'importe qui peut y accéder. Et si n'importe qui peut y accéder, mon cluster peut y accéder. Ok, donc très bien. On va regarder un petit peu le TAC que j'ai créé ici. On regarde ça comme ça. Alors du coup, je peux maintenant déployer mon application sur mon cluster. J'ai plein de façons de faire ça dans Quarkus. Je pourrais générer les ressources Kubernetes, un déploiement, un service et tout ça. On a des extensions qui font ça. Je pourrais utiliser... Il y a vraiment plein de solutions différentes. Mais comme c'est notre propre event et qu'on peut se faire de la pub, moi, je vais utiliser OpenShift pour déployer mon application. Et je vais utiliser la OpenShift Sandbox. D'ailleurs, je vous en parlais un petit peu rapidement. Si vous voulez vous amuser avec OpenShift, qui est donc une distribution de Kubernetes, gratuitement, vous tapez juste developer.redat.com Developer Sandbox. Vous créez en compte. C'est gratuit. On vous demande pas de carte de crédit, rien du tout. Et en plus de toutes les choses merveilleuses que vous aurez, blog post, documentation, des e-books gratuits, vous avez aussi accès à la Sandbox, qui est donc un environnement OpenShift, une instance OpenShift rien que pour vous pendant 30 jours. Il y a quelques petites limitations. Vous ne pouvez pas installer des opérateurs par exemple, mais on vous fournit déjà tout un set d'opérateurs. Et au bout des 30 jours, vous pouvez renouveler à l'infini. Et encore une fois, on ne vous demandera pas de carte de crédit. On vous demande juste un numéro de téléphone. Ça, c'est juste pour la histoire que vous n'allez pas faire du mining de Bitcoin. Et du coup, j'ai une vue développeur ici et pour déployer un workload, une image de conteneur, c'est ce truc super cool qui s'appelle conteneur image. Et je peux juste pointer vers mon image de conteneur que j'ai créée. Il me la valide. Là, j'ai dit que c'est une application Quarkus. Et j'ai juste une chose à faire. Je dois céter une variable d'environnement qui s'appelle Quarkus. Launch Dev Mode. Donc là, en gros, je lui dis au conteneur, à mon déploiement, je lui dis quand tu vas démarrer le pod avec mon conteneur, s'il te plaît, démarre-le en mode Dev, comme on a fait en local tout à l'heure. Là, je fais trop. Je fais Create. Il va me démarrer. Mon workload. Il va le télécharger. Il est en train de créer. Il est déjà running. On peut être sûr qu'ici, ça fonctionne. J'ai mon application qui a démarré. Elle a démarré en 6 secondes. Mais ce n'est pas un jarme mutable. Normalement, c'est beaucoup plus rapide. Mais surtout, maintenant, je vais pouvoir faire, c'est le but du début de ma démo, faire du remote Dev. Tout ce que je vous ai montré en local, on va pouvoir le faire avec ce pod qui tourne sur le cloud. Je ne vous montre pas s'il est là. Je peux même vous le mettre comme ça. Si vous scannez, vous allez arriver sur cette application. Elle fonctionne. Ce que je vais pouvoir faire, c'est modifier cette application. En live, ça va se reproduire sur mon application qui tourne dans le cloud. Du coup, la seule chose dont j'ai besoin, c'est l'URL de mon application. Elle est là. Et je retourne ici dans mon IDE. Et je vais lui dire, Maven Quarkus, cette fois, Remote Dev. Et là, il faut juste que je change l'URL. Là, c'était de Voxpaulon. C'est la semaine dernière. Je sais qu'on peut effacer plus vite, mais on ne va pas plus. Voilà. Donc là, il va démarrer mon application en local. Pareil. Il a compilé tout. Il va se connecter à mon workload que j'ai déployé ici. Ok. Et normalement, ce que je vais pouvoir faire, ici, je vais retourner dans mon code. Et je vais lui dire, On va changer ici là. On va lui dire From the cloud. Comme ça. Je sauvegarde. Et normalement, on devrait voir des choses qui se passent ici. Et le parenthèse. Ah oui. C'est pour savoir si vous étiez attentifs. Alors, normalement, là, on est bon. Là, j'ai un petit effet de... Qu'est-ce qui me dit ? Et je pense que ça n'a pas marché. Ah, c'est dit, ça a marché. Alors, je n'ai pas d'exception, mais regardez, pareil, si vous y allez là, vous verrez le update. Je ne sais pas ce qui s'est passé. On va voir si ça me le fait encore. Je reteste. Je reteste. On va voir. Là, il ne me dit plus rien. Je reteste. Je vais là. Je vais rafraîcher. Donc, je peux faire du remote dev. Maintenant, tout ce que je vous ai montré tout à l'heure au début, je peux le faire aussi avec mon appli qui tourne dans un pod, qui tourne dans le cluster. Et pareil, je peux rajouter des dépendances, changer la config. Là, j'ai juste changé un string. Je vais faire tout ce que je vous ai montré en local. On peut le faire avec un workload qui tourne en remote. Donc, si vous voulez vraiment tester en live le comportement de votre workload dans un cluster, vous pouvez le faire maintenant. Honnêtement, c'est quelque chose que je ne savais pas jusqu'à il y a un mois. C'est un collègue à moi qui m'a montré ça. Il a fait bœuf. Tu connaissais un écho? C'est excellent. J'ai dit, maintenant, je le montre à tout le monde. Du coup, ça fait un mois que je le montre à tout le monde. Parce que je trouve ça génial. Du coup, quelle heure il est? C'est ma propre compte. Je ne sais même pas combien de temps j'ai. C'est jusqu'à quelle heure? Je reviens. Je prends mon agenda. J'ai jusqu'à 14 heures. Et il est... Ah, j'ai 6 minutes. Eh bien, j'ai 6 minutes. Alors, je n'ai pas beaucoup. 6 minutes. Qu'est-ce qu'on va faire en 6 minutes? Je ne vais pas vous montrer la compilative parce que Guillaume vous a montré ça ce matin. On va faire de la persistance en 6 minutes. Pourquoi pas? Ça devrait le faire. Parce que là, je vous ai montré du Hello World. C'est rigolo. Mais dans la vraie vie, on va persister des choses. Du coup, en 6 minutes, ça devrait le faire. Il n'y a pas une petite pause après? C'est qui après? Ah non, après, c'est la tableau. Ah oui, c'est la tableau ronde avec moi-même et tout le monde. Donc, oui, oui. On va prendre une minute de plus. Ok. Du coup, je vais faire de la persistance. Je vais persister. Moi, j'aime bien hibernate. J'ai l'habitude de faire de l'hibernate. Mais, je peux faire de l'hibernate un peu plus facile avec Quarkus, qui s'appelle hibernate with Panache. Il me faut une base de données auxquelles je vais me connecter et je vais faire du Postgres. Postgres, je me rajoute un petit driver Postgres. Je vais marcher des objets en JSON, en objets Java et vice-versa. Donc, il me faut un petit truc pour ça. Je vais utiliser JSON B. Il est où? REST easy, classique JSON B. Le réactif, voilà. Il me faut du small oreille pour tester un peu mes points d'accès. J'ai ça avec OpenIPI. Je vais me rajouter ça avec OpenIPI. Je crois que je suis plutôt bon. On va voir. Si je n'en ai oublié, ce n'est pas trop grave. On le rajoutera. Du coup, je peux commencer ma couche de persistance. Je vais créer une entité que je vais persister. On va créer une entité de type developer. Ok? C'est une classe. Et du coup, je vais la noter avec Entity. Ok? C'est du JPA classique. Là, je pourrais rester en JPA classique. Mais j'utilise Apache. Donc, je peux lui dire l'instant, la classe Panache Entity. Qui va gérer pour moi l'ID, les fonctions de crud, les finders, etc. Et je peux me concentrer uniquement sur les champs que je veux persister. Donc là, je peux faire un public string name et un public string, pas un string, un int age. Ok? Un developer, il a un nom, il a un âge. Ok? J'ai fini, quasiment. Là, on me dit ça, mais c'est une très mauvaise pratique. Il faudrait faire private avec des gâteurs et des setters. Non, je m'en fous. Non, c'est pas que je m'en fous. C'est que Quarkus, à la compile, lui, il va me changer le scope de tout ça. Il va me les mettre en private. Et partout dans le code où je les appelle, il va me la remplacer avec les gâteurs et les setters. Ok? Du coup, je peux faire une... Ok? Je peux me faire un petit ressource developer. Developer ressource. Point Java. Ok? Où je vais exposer mes développeurs. Donc, on va faire un petit passe comme ça. Style developers. Et en gros, je vais faire de choses pour pouvoir rapatrier tous mes développeurs ou créer un développeur. On va commencer par rapatrier tous les développeurs. Ok? Donc, c'est un public list. Je renvoie une liste de quoi? Une liste de développeurs. Ok? Je l'appelle comme ça. Et là, regardez, avec Panache, c'est tellement facile. Je fais juste developers. Point list all. Ok? J'ai juste à faire ça. Un petit return. Un point... Oui, c'est pas du gov. Hop. Donc, là, j'ai fini. Et maintenant, je peux aussi créer des développeurs. Donc, là, je fais un post. Comme je vais écrire dans la base de nez, je veux que ce soit transactional, s'il y a quelque chose qui merdouille au moins, j'ai un rollback. Je n'ai pas fait l'import. Hop. Et là, on va appeler ça public. Là, j'ai la flamme. Donc, on va faire un void. Et on va dire create dev. Et ça prend quoi en paramètre? Ça prend un développeur. Ok? Developer. Et là, je peux faire developer.persist. Ok? Normalement, je suis bon. Ah oui, j'avais pas démarré mon application. J'aurais pu la garder qui tourne. On va refaire un Quarkus dev. Il me reste une minute. Ça devrait le faire. Du coup, je me suis fait avoir. Je pensais vous montrer plein d'autres choses. Oh là. Je suis vous là. Terminale. Alors, ah oui. Ce que je vais vous montrer, regardez. Dans mes properties, il n'y a que plus que ça. J'ai rien mis sur Postgres, sur une base de données. J'ai rien mis du tout. Malgré ça, Quarkus, lui, en démarrant, il a fait, ah, tu veux faire de la persistance. J'ai vu que tu as rajouté le driver Postgres. Si ça te dit, je démarre pour toi un conteneur Postgres. Moi, je lui dis merci. Si on vérifie ici, si on fait un petit docker PS, on voit qu'il m'a démarré un Postgres. Ok? Donc ça, ça s'appelle les dev services. J'ai rien configuré. J'ai un vrai Postgres qui tourne maintenant où je vais pouvoir tester mon application. Si je rouvre la console de développeur ici, on va fermer ça. Peut-être qu'on peut voir ici que j'ai mon Spotloreille, qui m'offre Sougar. J'ai toutes mes ressources ici. Et je dois pouvoir créer mon développeur. On va tester, hop. Je n'ai pas besoin de l'ID. Le name, c'est bi, l'âge, hop. Il y en a qui l'ont vu. Et là, du coup, j'ai créé mon développeur, mais je l'ai vraiment créé dans ma base de données. Si je essaye d'ici que je fais un petit execute, ça me retourne mon utilisateur. Ok? Et encore une fois, je suis vraiment sur la vraie base de données. Donc ça, on appelle ça les dev services ici. Ça existe aussi pour, si on fait de la sécurité, avec qui cloque, si on fait du Kafka. Si on fait du Kafka, par exemple, et on n'a pas besoin de se créer un cluster Kafka, Quarkus va démarrer lui-même un contenant avec du Kafka dedans. Du coup, voilà, j'ai dépassé de 1 minute. Comme vous pouvez imaginer, je suis encore là toute l'après-midi. Et c'était tout pour moi. Je pourrais passer la journée à vous montrer du Quarkus tellement que je kiffe. Si vous avez des questions, ce sera plutôt après, du coup, ou alors pendant la table ronde. Merci beaucoup. Il est où mon live stream? Le son est à nouveau faible? Ah non, c'était ce matin, ça, pardon. On reprend dans 3 minutes. Ça va. Les gens, est-ce que... Ah, bonjour. Près de Rotterdam, des pays bas. Super. Il y avait des questions. On va tomber. C'est Emmanuel en plus. Il travaille pour Adat. Je le répondrai plus tard. Du coup, on reprend dans... Chaque fois, je me fais avoir par cette vitre. On reprend dans 4 minutes. On va se faire une table ronde. Alors, il y aura un peu tous les speakers qui veulent. On va se retrouver là. On s'assoit. Et on va discuter de pourquoi et comment... Enfin, comment et pourquoi je suis devenu un dev. Mais ça va être vraiment table ronde. Donc, si vous avez des questions à poser sur la carrière, sur la communauté, sur l'open source, ce sera l'occasion. Ok? Je vous retrouve dans... Dans 3 minutes, du coup.