Programme du cours
Introduction
-
Avantages de la programmation non-bloquante
-
Techniques de programmation asynchrones en Java : callback, (completable) future, Rx
-
Architecture par thread pool contre architecture par event-loop
-
Champs d’utilisation : Web, IoT, microservices
Premiers pas
-
Définition d’un verticle
-
Démarrage d’un serveur Web
-
Gestion des erreurs
-
Interactions avec l’event bus
Architecture d’une application
-
Threads et exploitation des processeurs
-
Installation et configuration d’un verticle
-
Verticles et découpage métier
-
Intégration de services bloquants avec les service workers
-
Simplification des interactions avec les service proxies
-
Déploiement local ou déploiement distribué
RxJava
-
Programmation par callback contre programmation réactive
-
Principes de l’API RxJava
-
Amélioration de la qualité de service : timeout et retry
Développement Web
-
Serveur HTTP, options avancées
-
Organisation des routes
-
Client HTTP
Intégration
-
Interaction avec le système de fichiers
-
Principaux protocoles : HTTP/1, HTTP/2, WebSocket, MQTT,…
-
Base de données relationnelles avec JDBC
-
Cas particuliers de PosgreSQL et MySQL
-
MongoDB, Kafka
Tests
-
Test unitaire et mock
-
Test d’intégration, par service
Préparation au déploiement
-
Health check
-
Publication de métriques avec Vert.x metrics et Prometheus
-
Service discovery, circuit breaker
-
Déploiement avec Docker, prise en compte des contraintes mémoire et processeur