ALOM Architectures Logicielles Orientées Microservices

Introduction

Salut 👋
Moi c’est Julien

- freelance solution & software architect 🏗
- teacher 🎓 @univ-lille
- associate 🟩 @ekite

- speaker 🎙 (DevOxx - DevFest Lille - Sunny Tech)
- team ☁️ @cloudnord
- writer 📔 @eni

I like

I like

I like

I like

Proud owner of

I like

About You

🍎 IPhone vs Android 🤖

🐱 Cats vs Dogs 🐶

☕ Coffee vs Tea 🍵

Java vs Node

ALOM - Objectifs 🎯

  • Vision du développement Java/JEE en entreprise
  • Principes fondateurs, besoins, contraintes, architectures
  • Comment ça fonctionne ?
  • Déploiements distribués, cloud
  • Frameworks
  • Outils / Middlewares

Planning du cours (prévisionnel)

  1. Introduction
  2. Handcrafting everything - 💙 servlets
  3. Java 5 to 23
  4. Spring Boot
  5. Persistance des données
  6. GUI
  7. Intéropérabilité
  8. Traitements asynchrones - Kafka
  9. Clean Architecture - Hexa
  10. Patterns avancés/Cloud/Containers...

Planning du TP

  1. Setup
  2. Handcrafting everything - 💙 servlets
  3. Java 5 to 21
  4. Spring Boot
  5. Persistance des données, relationnel, NoSQL
  6. Spring MVC, JSP
  7. Web services
  8. Intéropérabilité
  9. Traitements asynchrones - Kafka
  10. Clean Architecture - Hexa
  11. Patterns avancés

Outils

  • IDE : IntelliJ IDEA conseillé 😃
    • Eclipse, Netbeans, VSCode sinon
  • Tomcat (Embedded)
  • Maven
  • Git - GitLab
  • Java
    • Java 17 (release sept. 2021)
    • Java 21 (release sept. 2023)

Références

  • Cours de CAR
  • spring.io -

Notation

Projet + Démo

🗓️ présentation le 11 décembre, rendu le mercredi 10 janvier

Besoin de me contacter ? 🗂️

📧 julien.wittouck [at] gmail.com

📧 julien.wittouck [at] univ-lille.fr

🐦 @CodeKaio

🟦 @codekaio.bsky.social

🔗 https://alom-2024.gitlabpages.univ-lille.fr/cours/

Besoins et contraintes

  • 💾 Gestion de session/persistance de données
  • 🔐 Sécurité
  • ⛑️Gestion d’erreur, de transactions 💳
  • 💪 Montée en charge (scalabilité)
    • Déploiement distribués
    • Load-balancing
  • 🤝 Interopérabilité avec les partenaires
  • 🚂 Intégration aux systèmes existants (legacy)
  • ☁️ Compatibilité avec les produits cloud (Cloud Native)

Notions de framework

Fournit des services pour répondre aux besoins & contraintes.

JEE (Jakarta EE) est un framework, Spring est un framework

  • Inversion de contrôle, injection de dépendances
  • Configuration
  • Pools d’objets, montée en charge, gestion de session
  • Transactions
  • Web services
  • Messaging
  • Sécurité

Hardware / OS / Middleware / Software

  • Hardware : Couche physique (CPU/RAM/Disque), virtualisé ou bare-metal
  • OS : Système d'exploitation. Primitives d'usage de la couche physique (POSIX)
  • Middleware : Environnement d'exécution d'applications, et services (Java / Tomcat)
  • Framework : Support du développement
  • Software : c'est nous ! 🖈

Ecriture d'applications

🥊 Monolith Vs Micro-services 🥊

Monolith

Application "tout-en-un"

  • IHM (web)
  • Services
  • Un seul "package"

Ecriture d'applications

🥊 Monolith Vs Micro-services 🥊

Micro-services

  • IHM
  • Services métiers découpés
  • Plusieurs "packages"

Ecriture d'applications

  • Développement de composant séparés
    • Composants métiers : EJB/Services
    • Composants IHM : JSP/Web
    • Web services
  • Construction d’une application par assemblage de composants
    • Composants métier/IHM
    • Services middleware

Assemblage d'application

TP - Setup de vos postes !

Fin du cours