Le cours se décline en différentes thématiques, qui regroupent certains éléments spécifiques (protocoles, cadriciels, technologies, etc.). La planification tentative est la suivante:
- Introduction aux systèmes distribués (2 heures)
- Plan de cours et introduction au cours
- Définition d'application et système distribué
- Exigences des applications et systèmes distribués
- Transparence dans les applications et systèmes distribués
- Examples d'applications distribuées
- Gestion des données: objets locaux et distribués, sérialisation, représentation des données (5 heures)
- Différences entre objets locaux et objets distribués
- Représentation de données externes, normes et cadriciels, JSON, Protobuf, Thrift, Avro
- Mini-quiz 1 (0.5 heure)
- Appels de procédures distantes (RPC): appels, erreurs, synchrone vs asynchrone (4 heures)
- Technologies RPC: RMI, SOAP, REST, JSON-RPC, gRPC
- Mini-quiz 2 (0.5 heure)
- Intergiciels de messagerie et intergiciels orientés-événements (6 heures)
- Modèles de communication (synchrone, asynchrone, files d'attente)
- Protocoles et intergiciels de files d'attente: publication-souscription, AMQP, RabbitMQ, MQTT
- Publish/Subscribe orienté contenu
- Kafka
- Examen intra (3 heures)
- Intergiciels de traitement des données massives (7 heures)
- Traitement Big Data: MapReduce, Spark
- Traitement continu de données (stream processing): Storm, Flink
- Mini-quiz 3 (0.5 heure)
- Intergiciels dans un contexte d'infonuagique et d'informatique en périphérie (3 heures)
- Architectures en microservices
- Fonctions lambda
- Docker, Kubernetes
- Sécurité (TLS, HTTPS, JWT)
- Informatique en périphérie
- Systèmes décentralisés (4 heures)
- Réseaux pair-à-pair: tables de hachage distribuées
- Applications pair-à-pair: Skype, Spotify, BitTorrent
- IPFS / libp2p
- Mini-quiz 4 (0.5 heure)
- Tendances et paradigmes émergents (contenu exact à déterminer) (3 heures)
- Examen final (3 heures)
Notes:
[1] Les durées indiquées pour chaque thématique sont des heures approximatives d’enseignement. Ces heures sont sujettes à varier selon le déroulement du cours.
[2] Puisque le cours est en évolution, il est possible qu'il y ait des variations au niveau de certains des éléments et des thématiques secondaires présentés (par exemple, protocoles, cadriciels, technologies) ainsi que de l'ordre de présentation.