1. Supports de cours
  2. Java Spring - Construisez vos applications réactives avec une architecture micro-services en environnement Java EE

Java Spring Construisez vos applications réactives avec une architecture micro-services en environnement Java EE

  • Accès illimité 24h/24, 7J/7
  • Tous les livres en ligne, les vidéos et les cours enregistrés ENI
  • Plus de 10 nouveautés livres et vidéos chaque mois
  • Les nouveautés disponibles le jour de leur sortie
  • Accès 100% en ligne
  • En stock
  • Expédié en 24h00
  • Livraison à partir de 0,01 €
  • Version en ligne offerte pendant 1 an
  • 1 h d'accès gratuit à tous nos livres et vidéos pour chaque commande
  • Accessible immédiatement
  • Version HTML
  • Accès illimité 24h/24, 7J/7

Présentation

Ce livre sur le développement d'applications réactives et de streaming s'adresse à toute personne (programmeur, tech lead, architecte…) amenée à travailler sur un projet basé sur Java Spring (en version 4.5 et 5.0 au moment de l'écriture). Il a pour objectif de donner les connaissances nécessaires pour appréhender les problématiques liées aux nouvelles architectures réactives avec la programmation asynchrone.

Pour profiter pleinement de la lecture de ce livre, il est nécessaire de bien comprendre les mécanismes de Java EE et de la programmation Java en général. Des connaissances de base sur le framework Spring sont également un plus.

L'auteur commence par présenter les architectures hexagonales basées sur le DDD (Domain Driven Design) et la gestion des événements d'une application CQRS utilisant l'Event Sourcing.

Après un rappel sur ZooKeeper et Kafka, le lecteur est amené à étudier la programmation fonctionnelle et les Streams ainsi que la programmation réseau asynchrone avec Netty. La programmation réactive est ensuite traitée à travers l'utilisation de RxJava, Akka et Reactor avant de détailler l'utilisation des bases de données SQL et Kafka avec Reactor.

L'auteur présente également la programmation des microservices et des applications dans le cloud en se basant sur des applications générées par jHipster.

Tout au long du livre, l'auteur s'appuie sur des exemples concrets d'utilisation. Les éléments nécessaires à la réalisation de ces exemples sont disponibles en téléchargement sur le site www.editions-eni.fr.


Les chapitres du livre :
Avant-propos – Architectures alternatives – ZooKeeper et Kafka – Programmation fonctionnelle et streams – Programmation réseau asynchrone avec Netty – Programmation réactive – Exemples d'applications avec une base SQL – Librairie Reactor Kafka – Applications web avec Spring WebFlux – Microservices Docker et DevOps – Exemples utilisant le générateur jHipster – Microservices et applications dans le cloud

Table des matières

  • Avant-propos
    • 1. Préambule
    • 2. Introduction
    • 3. Organisation du livre
    • 4. Public visé
    • 5. Pourquoi Spring ?
    • 6. Prérequis pour aborder Spring et Java EE
  • Architectures alternatives
    • 1. Évolution des architectures
    • 2. Domain-Driven Design
    • 3. Event storming
    • 4. Architecture hexagonale
    • 5. Cœur de métier
      • 5.1 Cas d’utilisation
      • 5.2 Couche de ports et d’adaptateurs
      • 5.3 Repository
      • 5.4 Couche d’anticorruption
      • 5.5 Sens des dépendances
    • 6. Découpage de l’hexagone sur deux axes
      • 6.1 Axe vertical
      • 6.2 Axe horizontal
    • 7. Respecter le modèle
    • 8. Hexagones multiples
    • 9. Modélisation événementielle et event sourcing
    • 10. Event store
    • 11. Reconstitution de l'état
      • 11.1 Dimension temporelle
      • 11.2 Problèmes
      • 11.3 Avantages
      • 11.4 Rebranchements
      • 11.5 Agrégats
    • 12. Points clés
  • ZooKeeper et Kafka
    • 1. Apache ZooKeeper
      • 1.1 Installation de ZooKeeper
      • 1.2 Lancement de ZooKeeper
      • 1.3 Connexion à ZooKeeper en ligne de commande
      • 1.4 Mode répliqué
      • 1.5 Arrêt de ZooKeeper
      • 1.6 Utilisation de ZooKeeper dans un programme Spring Boot
      • 1.7 Implémentations types
    • 2. Librairie Curator
    • 3. Apache Kafka
      • 3.1 Système de messagerie
        • 3.1.1 Système point à point
        • 3.1.2 Système publication-abonnement
      • 3.2 Particularités de Kafka
      • 3.3 Installation de Kafka
      • 3.4 Test en ligne de commande
      • 3.5 Fonctionnalités de Kafka
        • 3.5.1 Dépendances Maven
        • 3.5.2 Exemple Spring Boot
      • 3.6 Avro, un système de sérialisation de données
  • Programmation fonctionnelle et streams
    • 1. Introduction
    • 2. Streams
    • 3. Exemple de programmation fonctionnelle en Java
    • 4. Bibliothèque Vavr
    • 5. Pour aller plus loin
    • 6. Points clés
  • Programmation réseau asynchrone avec Netty
    • 1. Introduction
    • 2. Éléments de l’architecture de Netty
      • 2.1 Canal (channel)
      • 2.2 Interfaces Future et ChannelFuture
      • 2.3 Événements et handlers
      • 2.4 Encodeurs et décodeurs
      • 2.5 Serveur
    • 3. Exemples
      • 3.1 Serveurs et clients simples
      • 3.2 Client Netty
    • 4. Transferts basés sur des streams
    • 5. Arrêt de l’application
    • 6. Pour aller plus loin
    • 7. Points clés
  • Programmation réactive
    • 1. Flux réactifs (reactive streams)
    • 2. Programmation asynchrone historique
    • 3. API réactives
      • 3.1 Akka
      • 3.2 Modèle d’acteur
      • 3.3 Configurer un projet Akka
      • 3.4 Créer un acteur
      • 3.5 Configurer un acteur
      • 3.6 Interactions et communications entre acteurs
        • 3.6.1 Envoyer des messages
        • 3.6.2 Recevoir des messages
      • 3.7 Tuer un acteur
      • 3.8 Bonnes pratiques avec Akka
      • 3.9 Spring et Akka
        • 3.9.1 Dépendances Maven
        • 3.9.2 Récupérer des acteurs gérés par Spring
      • 3.10 Utilisation de Akka Streams
        • 3.10.1 Dépendances Maven
        • 3.10.2 Créer un flux Akka
    • 4. RxJava 1.3.4
      • 4.1 Observateurs et observables
      • 4.2 Opérations sur les observables
        • 4.2.1 Opérateurs de création
        • 4.2.2 Opérateurs de transformation
        • 4.2.3 Opérateurs de filtrage
        • 4.2.4 Combiner des observables
        • 4.2.5 Opérateurs de gestion d’erreurs
        • 4.2.6 Opérateurs de services utilitaires
        • 4.2.7 Opérateurs conditionnels et booléens
        • 4.2.8 Opérateurs mathématiques et agrégats
        • 4.2.9 Conversion d’observables
        • 4.2.10 Opérateurs de connexion
        • 4.2.11 Opérateurs de contre-pression
        • 4.2.12 Exemples d’utilisation d’opérateurs
        • 4.2.13 Chaînage des opérateurs
        • 4.2.14 Spécificités de l’observable Single
      • 4.3 Sujets (subject)
        • 4.3.1 AsyncSubject
        • 4.3.2 BehaviorSubject
        • 4.3.3 ReplaySubject
      • 4.4 Schedulers
        • 4.4.1 Schedulers avec RxJava 1.x
    • 5. Implémentation réactive avec Vert.x
      • 5.1 Vert.x avec RxJava
      • 5.2 Support des résultats asynchrones
    • 6. Prise en charge du scheduler
    • 7. JSON unmarshalling
    • 8. Déploiement d’un verticle
    • 9. HttpClient GET sur un abonnement
    • 10. API Rx-ified
      • 10.1 Intégration de Rx-ified Vert.x
    • 11. Exemples d’API
      • 11.1 Timers
      • 11.2 Requêtes de client HTTP
      • 11.3 Requêtes du serveur HTTP
    • 12. Client WebSocket
    • 13. Serveur WebSocket
    • 14. Reactor
    • 15. Mono et Flux
      • 15.1 Opérations sur les observables
        • 15.1.1 Opérateurs de création de Flux
        • 15.1.2 Opérateurs de transformation des éléments observables
        • 15.1.3 Opérateurs de filtrage des observables
        • 15.1.4 Opérateurs de combinaison des observables
        • 15.1.5 Opérateurs de gestion d’erreurs
        • 15.1.6 Opérateurs de services utilitaires
        • 15.1.7 Opérateurs conditionnels
        • 15.1.8 Opérateurs mathématiques
        • 15.1.9 Opérateurs de conversion d’observables
        • 15.1.10 Opérateurs de connexion
        • 15.1.11 Spécificités de l’observable Mono
    • 16. Contre-pression
    • 17. Chaud ou froid
      • 17.1 Reactor-test
      • 17.2 Tester un scénario avec StepVerifier
      • 17.3 Identifier les tests en erreur
      • 17.4 Manipuler du temps
      • 17.5 Exécuter des assertions post-exécution avec StepVerifier
      • 17.6 Tester le Context
      • 17.7 Émettre manuellement avec TestPublisher
      • 17.8 Vérifier le chemin d’exécution
      • 17.9 Réacteur de débogage
      • 17.10 Conclusion sur Reactor
    • 18. Conclusion sur la programmation réactive
  • Exemples d’applications avec une base SQL
    • 1. Introduction
    • 2. Isoler la partie JDBC
    • 3. Adapter un pilote JDBC réactif à Reactor
      • 3.1 Solution avec rxjava2-jdbc
      • 3.2 Solution avec vertx-jdbc-client
        • 3.2.1 Créer un client
        • 3.2.2 Obtenir une connexion
        • 3.2.3 Configuration
        • 3.2.4 Types de données
    • 4. Conclusion sur les pilotes JDBC asynchrones
    • 5. Pour aller plus loin
    • 6. Points clés
  • Librairie Reactor Kafka
    • 1. Introduction
    • 2. Producteur
    • 3. Consommateur
    • 4. Scénarios
      • 4.1 Flux d’entrée
      • 4.2 Flux de sortie
      • 4.3 Transformations internes
    • 5. Points clés
  • Applications web avec Spring WebFlux
    • 1. Introduction
      • 1.1 Types de endpoints
    • 2. Quand privilégier l’utilisation de Spring WebFlux ?
    • 3. Serveurs Spring WebFlux
    • 4. Organisation du framework réactif
      • 4.1 HttpHandler et adaptateurs de serveur
      • 4.2 Initialisation d’un HttpHandler
    • 5. HttpHandler des différentes implémentations
      • 5.1 Reactor Netty
      • 5.2 Undertow
      • 5.3 Jetty
      • 5.4 Tomcat
    • 6. Déploiement d’un war
      • 6.1 API WebHandler
      • 6.2 Beans Spring spécifiques
    • 7. DispatcherHandler
      • 7.1 Beans spéciaux pour le DispatcherHandler
      • 7.2 Configuration WebFlux
      • 7.3 Traitement d’un appel
      • 7.4 Gestion des valeurs de retour
    • 8. Exemple de service REST réactif avec WebFlux et la version réactive de MongoDB
    • 9. Endpoints fonctionnels
      • 9.1 HandlerFunction
      • 9.2 RouterFunction
        • 9.2.1 Exécuter une fonction sur un serveur
        • 9.2.2 HandlerFilterFunction
    • 10. Tests spécifiques à WebFlux
      • 10.1 Spring Security pour les méthodes réactives
      • 10.2 WebTestClient
      • 10.3 Tests d’authentification
    • 11. Tests sans Spring
    • 12. WebSocket
      • 12.1 HTTP ou WebSocket
      • 12.2 Quand utiliser WebSocket avec WebFlux ?
      • 12.3 API WebSocket
        • 12.3.1 WebSocketHandler
        • 12.3.2 WebSocket Handshake
        • 12.3.3 Configuration du serveur
      • 12.4 WebSocketClient
  • Microservices Docker et DevOps
    • 1. Introduction
    • 2. Docker et machines virtuelles
    • 3. Spring Boot avec Docker
      • 3.1 Utilisation de profils de Spring
      • 3.2 Débogage de l’application dans un conteneur Docker
    • 4. Conteneurs et écosystème Spring Boot
    • 5. Limites des conteneurs
    • 6. Pour aller plus loin
    • 7. Points clés
  • Exemple utilisant le générateur JHipster
    • 1. Introduction
    • 2. Génération d’une application avec Kafka
    • 3. Points clés
  • Microservices et applications dans le cloud
    • 1. Introduction
    • 2. Spring Cloud
    • 3. Spring Serverless
      • 3.1 Fonctionnement du FaaS
      • 3.2 Limitations du FaaS
    • 4. Spring Function
    • 5. Pour aller plus loin
    • 6. Points clés
    • Index

Auteur

Hervé LE MORVANEn savoir plus

Hervé LE MORVAN est aujourd'hui consultant DevOps pour de grands comptes de la Banque, de l'Assurance et des Telecoms. Durant ses vingt années d'expérience, il est principalement intervenu en tant que référent technique et formateur dans des équipes de Recherche et Développement ou d'Architectes et en tant que support au développement d'applications sur des missions de migration ou de modernisation de Systèmes d'Information. À ce titre, il est intervenu dans de nombreux projets de migration utilisant le socle Spring et connaît parfaitement les attentes des équipes dans ce domaine. C'est toute cette expérience qu'il partage volontiers tout au long des pages de ce livre.

Caractéristiques

  • Niveau Expert
  • Nombre de pages 302 pages
  • Parution juillet 2018
    • Livre (broché) - 17 x 21 cm
    • ISBN : 978-2-409-01449-9
    • EAN : 9782409014499
    • Ref. ENI : EPREAJASP
  • Niveau Expert
  • Parution juillet 2018
    • HTML
    • ISBN : 978-2-409-01450-5
    • EAN : 9782409014505
    • Ref. ENI : LNEPREAJASP

Téléchargements

En complétant ce formulaire, vous acceptez d'être contacté afin de recevoir des informations sur nos produits et services ainsi que nos communications marketing. Vous aurez la possibilité de vous désabonner de nos communications à tout moment. Pour plus d'informations sur notre politique de protection des données, cliquez ici.
  • Des fichiers complémentaires (1,50 Mo)