Aller au contenu

Simplifier le développement d'applications avec Dapr

Dans cet article, nous allons explorer le déploiement de Dapr pour la gestion des événements avec Kafka. Nous allons configurer Dapr en tant que sidecar pour notre application, séparant ainsi la logique métier de la gestion des événements.

Photo by David Tostado / Unsplash

Développer des applications modernes, qu'elles soient destinées au cloud, à l'edge computing ou à d'autres environnements, peut être un défi de taille. Entre la gestion de l'état, la communication entre microservices, la scalabilité et la tolérance aux pannes, de nombreux aspects doivent être pris en compte. C'est là que Dapr entre en jeu.

Introduction

Dapr, acronyme de Distributed Application Runtime, est un event driven runtime qui facilite la création d'applications résilientes, qu'elles soient stateless ou stateful, s'exécutant sur un environnement cloud ou non. Il fournit un ensemble de services abstraits permettant aux développeurs de se concentrer sur la logique métier grâce aux avantages d'une architecture de type sidecar.
Dans cet article, nous allons explorer comment déployer une application Java sur Kubernetes, utilisant Dapr pour la gestion des événements Kafka.

Configuration de l'environnement

La première étape consiste à installer Dapr, dans cet exemple nous allons utiliser Helm:

  • Assurez-vous d'avoir Helm installé sur votre système.
  • Ajoutez le référentiel Dapr Helm.
helm repo add dapr https://dapr.github.io/helm-charts/
helm repo update
  • Créez un fichier de configuration values.yaml pour personnaliser la configuration Dapr. Vous pouvez consulter les options de configuration disponibles dans la documentation officielle de Dapr.
  • Installez Dapr avec Helm en spécifiant le fichier values.yaml
install dapr dapr/dapr -f values.yaml
Vous pouvez consulter la documentation officielle de Dapr pour trouver d'autres options d'installation et de configuration.

Création de l'application Java

Nous allons créer une application simple qui expose un endpoint HTTP et utilise Dapr pour publier des messages sur un topic Kafka.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class SimpleApplication {

    public static void main(String[] args) {
        SpringApplication.run(SimpleApplication.class, args);
    }

    @PostMapping("/publish")
    public void publishMessage(@RequestBody String message) {
        // Logique de publication du message sur Kafka
        System.out.println("Message kafka reçu: " + message);
    }
}

Configuration de Dapr

Afin que Dapr puisse interagir avec Kafka, nous devons créer un composant de type pubsub.kafka. Voici un exemple :

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: kafka
spec:
  type: pubsub.kafka
  metadata:
  - name: brokers
    value: "kafka.kafka.svc.cluster.local:9092"
  - name: version
    value: "2.8.0"

Assurez-vous d'adapter les valeurs selon votre configuration Kafka.

Déploiement sur Kubernetes

Nous allons maintenant déployer notre application Java et configurer Dapr en tant que sidecar.

  • Création des fichier deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: simple-app
spec:
  selector:
    matchLabels:
      app: java-app
  template:
    metadata:
      labels:
        app: simple-app
    spec:
      containers:
      - name: simple-app
        image: <votre-image-docker>
        ports:
        - containerPort: 8080
      - name: dapr-sidecar
        image: "dapr/placeholder:latest"
        ports:
        - containerPort: 3500

Remplacez <votre-image-docker> par le chemin de votre image que vous avez déjà créée et déployée dans votre registre docker.

  • dapr.yaml
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: dapr-config
spec:
  tracing:
    samplingRate: "1.0"

Dans le cas où vous ne souhaiter pas avoir un fichier de configuration Kafka séparé, vous pouvez ajouter la partie configuration du composent pubsub dans le fichier dapr.yaml:

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: dapr-config
spec:
  tracing:
    samplingRate: "1.0"
  components:
    - name: kafka
      type: pubsub.kafka
      metadata:
        - name: brokers
          value: "kafka.kafka.svc.cluster.local:9092"
        - name: version
          value: "2.8.0"


Votre application Java est maintenant prête à être déployée sur Kubernetes avec Dapr configuré en tant que sidecar pour la gestion des événements avec Kafka

Conclusion

Dans cet article, nous avons exploré comment déployer une application Java sur Kubernetes, utilisant Dapr en tant que sidecar pour la gestion des événements avec Kafka. En utilisant Dapr, nous avons pu séparer la logique de gestion des événements de notre application principale, ce qui rend notre application plus modulaire et facile à maintenir.

Dernier