Articles

Guide O11y : Sans observabilité, ce n'est que du code

« Comprendre et améliorer la qualité et la performance de votre code est essentiel. Guide O11y vous aide à atteindre cet objectif en vous fournissant les outils nécessaires pour une observabilité optimale ! »

Bienvenue à un autre chapitre de la série en cours que j’ai commencée pour couvrir mon voyage dans le monde de l’observabilité cloud-native. Si vous avez manqué l’un des articles précédents, revenez à l’introduction pour une mise à jour rapide.

Après avoir établi les bases de cette série dans l’article initial, j’ai passé du temps à partager qui sont les acteurs de l’observabilité, j’ai examiné la discussion en cours autour des piliers de surveillance versus les phases, j’ai partagé mes pensées sur les choix de niveau architectural qui sont faits et j’ai partagé les normes ouvertes disponibles dans le paysage open source. J’ai continué avec quelques-uns des défis architecturaux que vous pourriez rencontrer lorsque des applications monolithiques plus anciennes et des outils de surveillance font toujours partie du paysage d’infrastructure d’une organisation. Enfin, je vous ai guidé à travers le projet de visualisation et de tableau de bord open source appelé Perses en introduisant mon atelier pratique.

Bienvenue à un autre chapitre de la série en cours que j’ai commencée pour couvrir mon voyage dans le monde de l’observabilité cloud-native. Si vous avez manqué l’un des articles précédents, revenez à l’introduction pour une mise à jour rapide.

Après avoir établi les bases de cette série dans l’article initial, j’ai passé du temps à partager qui sont les acteurs de l’observabilité, j’ai regardé la discussion en cours autour des piliers de surveillance versus les phases, j’ai partagé mes pensées sur les choix de niveau architectural qui sont faits et j’ai partagé les standards ouverts disponibles dans le paysage open source. J’ai continué avec quelques-uns des défis architecturaux auxquels vous pourriez être confrontés lorsque des applications monolithiques plus anciennes et des outils de surveillance font toujours partie du paysage d’infrastructure d’une organisation. Enfin, je vous ai guidé à travers le projet de visualisation et de tableau de bord open source appelé Perses en introduisant mon atelier pratique.

Aujourd’hui, je vais parler du logiciel d’observabilité cloud-native que j’utilise pour collecter, stocker et analyser les données. Je vais également partager mon expérience personnelle et mes pensées sur la façon dont je me suis retrouvé à utiliser ce logiciel et ce que je pense qu’il fait bien.

Le logiciel d’observabilité cloud-native que j’utilise est appelé Prometheus. C’est un système open source qui a été créé par SoundCloud pour surveiller leur infrastructure cloud. Il est maintenant maintenu par la communauté open source et est largement utilisé par les entreprises pour surveiller leurs applications et leurs services. Prometheus est conçu pour collecter des métriques à partir de sources de données telles que des applications, des services et des systèmes d’exploitation. Il stocke ces métriques dans un format compact et peut être interrogé pour obtenir des informations sur la performance et la disponibilité des applications et des services.

Prometheus est un outil très puissant qui peut être utilisé pour surveiller tous les aspects d’une infrastructure cloud-native. Il peut être utilisé pour surveiller les performances des applications, les performances des services, la disponibilité des services et bien plus encore. Il peut également être utilisé pour surveiller les performances des conteneurs et des microservices. Il offre une variété d’options de visualisation et de tableaux de bord pour afficher les données collectées par Prometheus. En outre, il offre une API REST qui peut être utilisée pour intégrer Prometheus à d’autres outils d’observabilité tels que Grafana ou Kibana.

J’utilise Prometheus depuis plusieurs années maintenant et je suis très satisfait de son fonctionnement. Il est très facile à configurer et à gérer, ce qui en fait un excellent choix pour les développeurs qui souhaitent surveiller leurs applications et leurs services. Il est également très flexible et peut être facilement intégré à d’autres outils d’observabilité. Enfin, il est open source, ce qui signifie qu’il est gratuit à utiliser et qu’il bénéficie du soutien de la communauté open source.

Source de l’article sur DZONE

Partie 2: Microservices avec Apache Camel et Quarkus

Dans cette partie, nous allons apprendre à créer des microservices avec Apache Camel et Quarkus. Nous verrons comment les deux outils peuvent être utilisés ensemble pour créer des applications modernes et performantes.

Exécution locale d’une application microservices basée sur Apache Camel et AWS SDK

Dans la première partie de cette série, nous avons vu une application de transfert d’argent simplifiée basée sur les microservices, mise en œuvre à l’aide des outils de développement Java Apache Camel et AWS SDK (Software Development Kit) et de Quarkus comme plate-forme d’exécution. Comme indiqué, il existe de nombreux scénarios de déploiement qui pourraient être envisagés pour exécuter la production d’une telle application; le premier et le plus simple consiste à l’exécuter localement de manière autonome. C’est le scénario que nous examinerons dans ce nouveau post.

Quarkus est capable d’exécuter vos applications de deux manières: en mode JVM (Java Virtual Machine) et en mode natif. Le mode JVM est la manière classique standard d’exécuter des applications Java. Ici, l’application en cours d’exécution n’est pas exécutée directement sur le système d’exploitation, mais dans un certain milieu d’exécution où des bibliothèques et des API Java sont intégrées et enveloppées. Ces bibliothèques et API peuvent être très volumineuses et elles occupent une partie spécifique de la mémoire appelée Resident Set Size (RSS). Pour en savoir plus sur le RSS et Quarkus (par opposition à la façon dont Spring Boot le gère), voir ici.

Lorsque vous exécutez votre application avec Quarkus en mode JVM, vous pouvez utiliser un outil appelé GraalVM pour compiler votre application en code natif. GraalVM est un outil open source qui permet de compiler des applications Java en code natif. Il prend en charge plusieurs langages, dont Java, JavaScript, Ruby, Python et R. GraalVM est capable de compiler votre application Java en code natif très rapidement, ce qui permet à votre application de s’exécuter plus rapidement et avec moins de consommation de mémoire. Il est également possible d’utiliser GraalVM pour compiler votre application en code natif et l’exécuter directement sur le système d’exploitation, sans passer par le mode JVM. Cela permet à votre application de fonctionner plus rapidement et avec une consommation de mémoire minimale.

Ainsi, grâce à l’utilisation du logiciel Quarkus et de GraalVM, vous pouvez facilement déployer votre application microservices-based money transfer sur votre système local. Vous pouvez également utiliser GraalVM pour compiler votre application en code natif et l’exécuter directement sur le système d’exploitation, ce qui permet à votre application de fonctionner plus rapidement et avec une consommation de mémoire minimale. Cela peut être très utile pour les applications qui nécessitent une exécution rapide et une consommation minimale de mémoire. De plus, vous pouvez également déployer votre application sur des plates-formes cloud telles que AWS ou Azure afin de bénéficier des avantages supplémentaires offerts par ces plates-formes.

Source de l’article sur DZONE

Créer une architecture de microservices avec Java

Créer une architecture de microservices avec Java est une tâche complexe, mais qui peut offrir des avantages considérables. Découvrons comment le faire !

« Approche de l’Architecture des Microservices »

En premier lieu, l’architecture des microservices est une approche où un système logiciel est décomposé en services plus petits et indépendants qui communiquent entre eux via des API. Chaque service est responsable d’une fonction commerciale spécifique et peut être développé, déployé et mis à l’échelle indépendamment. Cela facilite la maintenance et la modification du système, car les modifications apportées à un service n’affectent pas l’ensemble du système.

Les avantages de l’architecture des microservices sont nombreux. Tout d’abord, elle permet une plus grande flexibilité et une plus grande évolutivité. Les services peuvent être développés, déployés et mis à l’échelle indépendamment les uns des autres, ce qui permet d’ajouter ou de supprimer des fonctionnalités sans affecter le reste du système. De plus, les microservices sont plus faciles à tester et à maintenir car ils sont isolés et peuvent être testés individuellement.

Java est un excellent choix pour la construction de microservices. Java est une plate-forme très populaire et très répandue, ce qui signifie qu’il y a une grande communauté de développeurs qui peuvent aider à résoudre les problèmes. De plus, Java est très bien adapté pour la construction de microservices car il prend en charge les tests unitaires et intégrés, ce qui permet aux développeurs de tester facilement leurs services. Enfin, Java est très flexible et peut être utilisé pour construire des services basés sur des conteneurs ou des machines virtuelles.

En résumé, l’architecture des microservices est une approche moderne pour construire des systèmes logiciels flexibles, évolutifs et faciles à maintenir. Les avantages de cette approche sont nombreux, notamment une plus grande flexibilité et une plus grande évolutivité. Java est un excellent choix pour la construction de microservices car il prend en charge les tests unitaires et intégrés et est très flexible.

Source de l’article sur DZONE

Création de code de transaction de compensation pour Saga Participant

La création d’un code de transaction de compensation pour les participants à Saga est une étape importante pour assurer une expérience de jeu équitable et sécurisée.

La saga Pattern est utilisée pour fournir une intégrité des données entre plusieurs services et le faire pour des transactions potentiellement à long terme. Il existe de nombreux blogs, superficiels car ils tendent à l’être, sur les sagas et les transactions à long terme. Dans cet article, je ne rentrerai pas dans les détails en comparant les avantages et les inconvénients des sagas avec le protocole XA deux phases (2PC), le verrouillage distribué, etc., et je dirai simplement que XA et 2PC nécessitent des verrous distribués (inconvénient) qui gèrent les propriétés ACID de sorte que l’utilisateur puisse simplement exécuter un rollback ou un commit (avantage) alors que les sagas n’utilisent que des transactions locales et n’ont donc pas besoin de verrous distribués (avantage) mais nécessitent que l’utilisateur implémente la logique de compensation, etc. (inconvénient). Comme l’a dit Teddy Roosevelt, «Rien de bon ne vient facilement».

Ce que je ferai, c’est montrer un exemple de code complet d’une application microservices impliquant une saga, y compris la logique de compensation des participants, qui peut être trouvée dans ce dépôt.

La saga pattern est utilisée pour assurer l’intégrité des données entre plusieurs services et pour effectuer des transactions de longue durée. Il existe de nombreux blogs, superficiels, sur les sagas et les transactions de longue durée. Dans cet article, je ne vais pas entrer dans les détails en comparant les avantages et les inconvénients des sagas avec le protocole XA à deux phases (2PC), le verrouillage distribué, etc., et je dirai simplement que XA et 2PC nécessitent des verrous distribués (inconvénient) qui gèrent les propriétés ACID de sorte que l’utilisateur puisse simplement exécuter un rollback ou un commit (avantage), alors que les sagas n’utilisent que des transactions locales et ne nécessitent donc pas de verrous distribués (avantage) mais nécessitent que l’utilisateur implémente la logique de compensation, etc. (inconvénient). Comme l’a dit Teddy Roosevelt : «Rien de bien ne vient facilement».

Ce que je vais faire, c’est montrer un exemple de code complet d’une application microservices impliquant une saga, y compris la logique de compensation des participants, qui peut être trouvée dans ce dépôt.

L’utilisation des sagas pour gérer les transactions de longue durée est une pratique courante dans le développement d’applications microservices. Les sagas sont un moyen efficace de garantir l’intégrité des données entre plusieurs services et de gérer les transactions à long terme. Les sagas sont une bonne alternative aux protocoles XA à deux phases (2PC) et au verrouillage distribué car elles n’utilisent que des transactions locales et ne nécessitent pas de verrous distribués. Cependant, elles nécessitent que l’utilisateur implémente la logique de compensation, etc., ce qui peut être complexe et prendre du temps.

Les sagas sont une excellente solution pour gérer les transactions à long terme car elles offrent une grande flexibilité et une bonne gestion des données. Les sagas sont particulièrement utiles pour les applications qui impliquent plusieurs services car elles peuvent garantir la cohérence des données entre ces services. De plus, les sagas peuvent être facilement mises en œuvre dans un environnement microservices car elles peuvent être facilement intégrées aux services existants. Enfin, les sagas peuvent être facilement mises à jour pour prendre en charge les changements dans le système et ainsi garantir la cohérence des données.

Les sagas sont un outil puissant pour garantir l’intégrité des données entre plusieurs services et pour gérer les transactions à long terme. Bien qu’elles nécessitent une implémentation complexe et prennent du temps, elles offrent une grande flexibilité et une bonne gestion des données. Elles peuvent également être facilement intégrées aux services existants et mises à jour pour prendre en charge les changements dans le système. Les sagas sont donc un excellent outil pour garantir la cohérence des données entre plusieurs services et pour gérer les transactions à long terme.

Source de l’article sur DZONE

REST vs. Messagerie pour Microservices

Les microservices sont devenus une technologie populaire pour le développement d’applications. REST et Messagerie sont des méthodes populaires pour communiquer entre les microservices. Voyons les avantages et les inconvénients de chacun.

Rapport des tendances en matière d’intégration de logiciels de DZone 2023 : lire le rapport

En tant qu’informaticien enthousiaste, je suis très intéressé par l’architecture microservices. Cette architecture est une tendance très populaire dans le développement logiciel et elle est de plus en plus utilisée pour construire des systèmes complexes. La principale raison de son succès est qu’elle permet de découper un système complexe en petits modules indépendants qui peuvent être gérés plus facilement.

Cependant, il est important de noter que l’utilisation d’une architecture microservices nécessite une planification et une conception minutieuses. Les développeurs doivent prendre en compte plusieurs facteurs, notamment le nombre de services à créer, leur interdépendance et la façon dont ils communiquent entre eux. De plus, les tests sont essentiels pour s’assurer que chaque service fonctionne correctement et qu’il n’y a pas de problèmes de compatibilité entre les services.

Pour tirer le meilleur parti de l’architecture microservices, les développeurs doivent également mettre en place des outils et des processus de test efficaces. Ces outils peuvent être utilisés pour tester chaque service individuellement et pour vérifier que tous les services fonctionnent correctement ensemble. Les tests peuvent également être utilisés pour vérifier la sécurité et la fiabilité des services. Enfin, les tests peuvent être utilisés pour s’assurer que les performances des services sont optimales.

En conclusion, l’architecture microservices est une tendance très populaire dans le développement logiciel et elle peut être très utile pour construire des systèmes complexes. Cependant, il est important de bien planifier et concevoir l’architecture et d’utiliser des outils et des processus de test efficaces pour s’assurer que chaque service fonctionne correctement et qu’il n’y a pas de problèmes de compatibilité entre les services.

Source de l’article sur DZONE

Fargate vs Lambda : Qui sera le vainqueur ?

Fargate et Lambda sont deux technologies très populaires parmi les développeurs cloud. Quel est le meilleur pour votre projet ? Découvrons qui sera le vainqueur !

## Comparaison Fargate vs Lambda dans l’espace sans serveur

Quelles sont les différences entre Fargate et Lambda ?

Fargate et Lambda sont deux options de calcul sans serveur populaires disponibles dans l’écosystème AWS. Bien que les deux outils offrent un calcul sans serveur, ils diffèrent en ce qui concerne les cas d’utilisation, les limites opérationnelles, les allocations de ressources d’exécution, le prix et les performances. Fargate est une moteur de calcul sans serveur proposé par Amazon qui vous permet de gérer efficacement les conteneurs sans les tracas de la mise en provision des serveurs et de l’infrastructure sous-jacente. Lambda, quant à lui, est une plateforme de calcul sans serveur qui vous permet d’exécuter du code sans avoir à gérer des serveurs. Lambda est conçu pour prendre en charge des charges de travail à courtes durées et à faible consommation de ressources.

Quelle est la meilleure option pour l’architecture ?

Lorsqu’il s’agit de choisir entre Fargate et Lambda, il est important de comprendre leurs différences et leurs avantages. Pour les applications à longue durée et à haute consommation de ressources, Fargate est la meilleure option car il offre une gestion des conteneurs plus efficace et une meilleure performance. Cependant, pour les applications à courtes durées et à faible consommation de ressources, Lambda est la meilleure option car il offre une exécution plus rapide et une meilleure utilisation des ressources. En fin de compte, le choix entre Fargate et Lambda dépend des exigences spécifiques de votre application et de votre architecture. Il est important de prendre en compte le coût, la performance et les fonctionnalités avant de prendre une décision finale.

Quelle que soit l’application ou l’architecture que vous souhaitez mettre en place, Fargate et Lambda sont tous deux des outils puissants qui peuvent vous aider à atteindre vos objectifs. En tant qu’informaticien enthousiaste, je trouve que ces outils sont très utiles pour créer des applications modernes et évolutives. Fargate et Lambda offrent tous les deux des fonctionnalités avancées qui peuvent être utilisées pour créer des architectures robustes et flexibles. Les deux outils sont faciles à utiliser et peuvent être intégrés à d’autres services AWS pour offrir une expérience utilisateur optimale. En fin de compte, le choix entre Fargate et Lambda dépendra des exigences spécifiques de votre application et de votre architecture.

Source de l’article sur DZONE

Développement collaboratif de nouvelles fonctionnalités avec microservices

Le développement collaboratif de nouvelles fonctionnalités avec microservices offre une solution flexible et évolutive pour répondre aux besoins des entreprises.

Dans une architecture de microservices, le code est divisé en petites unités. Ces morceaux de code peuvent être développés en isolation et expédiés indépendamment en production, ce qui réduit les dépendances entre les équipes – le résultat: un développement de fonctionnalités rapide et un temps de mise sur le marché plus rapide.

Bien que l’architecture des microservices apporte de nombreux avantages, la réalité est que ces avantages tendent à diminuer à l’échelle. En particulier, plus un organisme a de microservices, plus il est difficile de s’assurer que les modifications fonctionnent ensemble dans leur ensemble.

En tant qu’informaticien enthousiaste, je sais que l’architecture microservices est une solution très populaire pour les développeurs. Cette architecture consiste à diviser le code en petites unités qui peuvent être développées et mises en production indépendamment, ce qui réduit les dépendances entre les équipes et permet un développement plus rapide des fonctionnalités et une plus grande rapidité sur le marché.

Cependant, il est important de comprendre que ces avantages diminuent à mesure que la taille de l’organisation augmente. Plus il y a de microservices, plus il est difficile de s’assurer que les changements fonctionnent ensemble. C’est pourquoi il est important d’utiliser une base de données pour gérer ces microservices. Une base de données permet d’organiser et de stocker les informations sur les microservices, ce qui facilite leur gestion et leur maintenance. Elle permet également aux développeurs de voir comment les différents microservices interagissent entre eux et comment les changements affectent le système dans son ensemble.

Enfin, une base de données peut également être utilisée pour surveiller et analyser l’utilisation des microservices. Les développeurs peuvent ainsi suivre l’utilisation des microservices et identifier les problèmes potentiels avant qu’ils ne deviennent trop importants. De plus, les données collectées peuvent être utilisées pour améliorer les performances des microservices et pour prendre des décisions basées sur des données. En bref, une base de données est un outil essentiel pour gérer et surveiller les microservices à grande échelle.

Source de l’article sur DZONE

Créer des microservices Micronaut avec MicrostarterCLI

Créer des microservices Micronaut avec MicrostarterCLI est une excellente façon de développer des applications modernes et robustes. Essayez-le dès aujourd’hui!

MicrostarterCLI : Outil de développement rapide

Premier Paragraphe

En tant qu’informaticien enthousiaste, je suis ravi de vous présenter MicrostarterCLI, un outil de développement rapide qui permet aux développeurs de générer des codes, des configurations ou des modèles standard réutilisables dont ils ont besoin dans leur application. Dans un article précédent, j’ai décrit un exemple de base pour créer des points de terminaison REST et GraphQL dans une application Micronaut. Cet article démontre un exemple de démarrage d’une application de microservices Micronaut à l’aide de MicrostarterCLI. L’architecture de l’application est la suivante:

Deuxième Paragraphe

Le processus de test commence par la génération des fichiers nécessaires à l’application à l’aide de MicrostarterCLI. Une fois ces fichiers générés, le processus de test peut commencer. La première étape consiste à tester le code généré pour s’assurer qu’il fonctionne correctement et qu’il est conforme aux spécifications. La deuxième étape consiste à tester les API REST et GraphQL générées par MicrostarterCLI. Pour ce faire, nous utilisons un outil appelé Postman. Postman est un outil très utile pour tester les API REST et GraphQL. Il permet de tester rapidement et facilement les API et de vérifier si elles fonctionnent correctement.

Troisième Paragraphe

Une fois le test des API terminé, nous pouvons passer à la dernière étape du processus de test, à savoir le test des performances. Pour ce faire, nous utilisons un outil appelé JMeter. JMeter est un outil très puissant qui permet de tester les performances d’une application en simulant des charges réelles. Il permet également d’analyser les performances de l’application et de repérer les problèmes potentiels. Une fois le test des performances terminé, nous pouvons être sûrs que notre application est prête à être déployée en production.

Source de l’article sur DZONE

Spring Cloud: Comment Gérer Config. Microservices (2e Partie)

Dans cet article, nous allons poursuivre notre exploration de Spring Cloud et voir comment gérer la configuration des microservices. Préparez-vous à découvrir les dernières fonctionnalités de Spring Cloud !

Dans la première partie de cet article, nous avons vu comment configurer un scénario simple avec un serveur Spring Cloud Config et son client correspondant. Le serveur était configuré avec un profil natif et la configuration était stockée dans le classpath, dans un sous-dossier nommé config. La démo était composée d’une seule instance de serveur et de client.

Dans la deuxième partie, nous allons montrer comment configurer Spring Cloud Config pour se connecter et utiliser un dépôt Git externe. Puis, dans les prochaines sections, nous parlerons du rafraîchissement des données de configuration sans redémarrage des services.

## Configurer Spring Cloud Config pour se connecter à un dépôt Git externe

En tant qu’informaticien enthousiaste, je suis très intéressé par les nouvelles technologies et leurs applications. Dans cet article, je vais vous parler de l’utilisation d’un logiciel de configuration de Spring Cloud Config pour gérer les paramètres de votre application.

Tout d’abord, nous allons voir comment configurer un scénario simple avec un serveur Spring Cloud Config et son client correspondant. Le serveur est configuré avec un profil natif et la configuration est stockée dans le classpath, dans un sous-dossier nommé config. La démo est constituée d’une seule instance de serveur et de client.

Ensuite, nous verrons comment configurer Spring Cloud Config pour se connecter et utiliser un dépôt Git externe. Dans les sections suivantes, nous parlerons du rafraîchissement des données de configuration sans redémarrer les services. Pour ce faire, nous utiliserons le logiciel Spring Cloud Bus qui permet de publier des messages sur un bus de messages et de les diffuser à tous les clients connectés. Nous verrons également comment configurer le client pour qu’il puisse recevoir et traiter ces messages.

Enfin, nous verrons comment le logiciel Spring Cloud Config peut être utilisé pour gérer les paramètres de votre application. Nous verrons comment le serveur peut être configuré pour lire la configuration à partir d’une source externe, comme un dépôt Git, et comment le client peut être configuré pour récupérer la configuration à partir du serveur. Nous verrons également comment le logiciel peut être utilisé pour mettre à jour la configuration sans redémarrer les services.

Source de l’article sur DZONE