Articles

Mise en œuvre de la découverte de services avec Spring Cloud (2e partie)

Dans cette deuxième partie, nous allons voir comment mettre en œuvre la découverte de services avec Spring Cloud. Préparez-vous à apprendre comment configurer et déployer vos services !

Partie 2 de l’Article Spring Cloud: Comment Implémenter le Service Discovery (Partie 1)

Dans la première partie de cet article, Spring Cloud: Comment implémenter le service de découverte (Partie 1), nous avons vu les bases du Service Discovery dans le contexte de Spring Cloud. Nous avons vu que la composante Netflix OSS Eureka est toujours le choix principal. Dans ce post, nous allons discuter de certains sujets supplémentaires liés à Eureka, tels que :

API Java Client

API REST

Sécuriser le serveur de découverte et les services clients

Combiner le Service Discovery avec la Configuration Distribuée

Service Discovery : API Java Client

Dans les exemples de la première partie de cet article, l’enregistrement et le récupération des fonctionnalités étaient exécutés sous le capot et nous avons seulement vu les résultats des tests de l’architecture entière en appelant un point de terminaison REST client. Il existe également une manière d’interagir avec l’API Eureka de manière programmatique, en utilisant des appels de méthodes Java. Un choix possible serait d’utiliser la classe EurekaClient. Par exemple, si nous voulons obtenir toutes les instances d’un service identifié par un ID particulier, nous pourrions écrire le code suivant, supposant que nous avons un client implémenté comme une application Spring Boot exposant des services REST :

EurekaClient eurekaClient = new EurekaClient.Builder().build();

Applications applications = eurekaClient.getApplications(« SERVICE_ID »);

List instances = applications.getInstances();

Une fois que nous avons obtenu la liste des instances, nous pouvons parcourir cette liste et récupérer les informations dont nous avons besoin, telles que l’adresse IP et le port sur lesquels le service est en cours d’exécution. Nous pouvons également effectuer des opérations supplémentaires sur les instances, telles que la mise à jour des informations ou la suppression d’une instance.

Service Discovery : API REST

Eureka fournit également une API REST qui peut être utilisée pour interagir avec le serveur de découverte. Cette API est très similaire à l’API Java client, mais elle est plus adaptée aux scénarios où nous devons interagir avec le serveur de découverte depuis un environnement non-Java ou depuis un script. Par exemple, si nous voulons récupérer toutes les instances d’un service spécifique, nous pouvons appeler l’URL suivante :

http://:/eureka/apps/

Cette URL retournera une réponse JSON contenant toutes les informations relatives à ce service et à ses instances. Nous pouvons également effectuer des opérations supplémentaires sur les instances, telles que la mise à jour des informations ou la suppression d’une instance, en appelant des URL spécifiques.

Service Discovery : Sécurisation du serveur et des services clients

Enfin, il est important de noter que le serveur Eureka et les services clients doivent être sécurisés pour éviter toute attaque malveillante. Par exemple, nous pouvons configurer Eureka pour utiliser HTTPS pour sécuriser les communications entre le serveur et les clients. Nous pouvons également configurer Eureka pour authentifier les clients et leurs requêtes en utilisant un système d’authentification basé sur des jetons. De plus, il est possible de configurer Eureka pour

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

Une vulnérabilité a été découverte dans VMware Spring Cloud Gateway. Elle permet à un attaquant de forger une requête malveillante spécialement conçue afin de provoquer une exécution de code arbitraire à distance.

Les applications utilisant Spring Cloud Gateway sont vulnérables à une …
Source de l’article sur CERT-FR

When we build a microservice architecture and the number of services keeps growing, we face the problem of debugging and tracing requests through our entire system. What happened when a user got a 500 error on his request? What service incorrectly processed his request? All these questions can be solved by the Distributed Tracing System. Let’s take Spring Cloud Sleuth as an example.

How Spring Cloud Sleuth Works

To trace a request through a distributed system, the concepts TraceID and SpanID are introduced. TraceID is generated when a request enters our system and remains unchanged throughout its path. SpanID changes as the request passes from one service to another. If necessary, it is possible to generate new spans within one service to distinguish business processes.

Source de l’article sur DZONE


Infographic.

Add Sleuth, RabbitMQ, and Zipkin in Spring Cloud Project

This article assumes that you know how to set up a spring cloud or spring boot project; also, the RabbitMQ and ElasticSearch servers are ready.

Add the dependencies in maven pom.xml:

Source de l’article sur DZONE

As we all know the Cloud-based systems are becoming the most popular architecture in the software engineering world, and the most famous and beloved Cloud platform among developers is Spring Cloud.

Spring Cloud has some important features which are given in the following parts and the feature part does a specific job:

Source de l’article sur DZONE


Introduction

While developing applications using Spring batch, especially in a micro-service project, we sometimes face one or most of the following cases:

  • The necessity of getting the security context inside the batch items to call methods that require authorizations inside the same micro-service or perform remote processing by calling other micro-services using Feign Client (HTTP) or  Spring Cloud Stream (broker like Kafka, RabbitMq …)
  • Propagating Sleuth trace Id and span Id in order to enhance logs traceability inside all the application components including other micro-services so the trace will not be lost if we use Job.
  • Getting the connected user Locale (i18n) in order to generate internationalized output otherwise, all the Job outputs will be generated in the default server language.
  • Retrieving objects stored inside Mapped Diagnostic Context  (MDC) for tracing purposes.

The following schema illustrates remote calls that can be performed in a micro-service-based application and the context information that String Batch items can propagate.

Source de l’article sur DZONE

The microservice architecture pattern, which is used widely across tech companies large and small, enables businesses to distribute functionality between many small applications, instead of larger monolithic portions. Each piece has a specifically defined task, along with communications and other services, usually via a REST API channel. The benefits of utilizing a microservice architecture include, but are not limited to: 

  • Simple development and maintenance of applications: developers and teams are able to focus on one application rather than multiple, with the benefit of faster development, and fewer hitches (such as bug and easy to miss errors) in the larger project. 

    Source de l’article sur DZONE

Today I am going to provide you an example of a small microservices based application, where I am going to implement a Eureka discovery server to register all the microservices application in it, so that each of these services can be accessible from all the microservices applications registered with Discovery Server. 

For this example, we are going to create total four microservices applications/services. 

Source de l’article sur DZONE