Un guide complet pour créer un diagramme de déploiement UML pour le système simple de commande de nourriture en ligne

1. Objectif d’un diagramme de déploiement UML

Un diagramme de déploiement montre l’architecture physique/en temps réel d’un système :

  • Nœuds matériels (serveurs, périphériques, instances cloud)
  • Artifacts logiciels déployés sur ces nœuds
  • Environnements d’exécution (conteneurs, runtimes)
  • Chemins de communication entre les nœuds (protocoles, connexions)

Pour un système simple de commande de nourriture en ligne, il visualise comment :

  • Les interfaces web des clients et des restaurants sont servies
  • La logique métier s’exécute
  • Les données sont stockées
  • Les services externes (paiement, notifications) sont intégrés

Il aide les développeurs, les équipes DevOps et les parties prenantes à comprendretopologie de déploiement, les points d’évolutivité, les frontières de sécurité et les dépendances.

2. Éléments UML clés dans les diagrammes de déploiement

Élément Notation UML (PlantUML) Signification / Quand l’utiliser Exemples de stéréotypes
Nœud node « Nom » Ressource de calcul (physique ou virtuelle) pouvant héberger des artefacts <<device>>, <<cloud>>
Périphérique nœud « Nom » <<périphérique>> Matériel physique ou virtuel (serveur, mobile, routeur) <<périphérique>>, <<serveur>>
Environnement d’exécution nœud « Nom » <<environnement d’exécution>> Environnement d’exécution logiciel/container (Tomcat, Node.js, Docker, JVM) <<environnement d’exécution>>, <<conteneur>>
Artéfact artefact « filename.war » Unité déployable (exécutable, .jar, bundle .js, schéma de base de données, fichier de configuration) <<exécutable>>, <<fichier>>, <<base de données>>
Composant composant « Nom » Unité logicielle (facultatif dans les diagrammes de déploiement ; souvent réalisé par des artefacts) <<web>>, <<service>>
Chemin de communication –, –>, ..> Connexion réseau entre nœuds (peut avoir une étiquette de protocole) HTTP/HTTPS, WebSocket, RMI
Dépendance / Appel ..>, –> Utilisation/dépendance (par exemple, frontend appelle backend) <<appelle>>, <<accède>>
Manifestation / Réalisation ..> avec <<réalise>> ou ..> Artéfact réalise / est déployé en tant que composant <<réalise>>, <<manifeste>>
Système externe nœud « Nom » <<externe>> Service tiers à l’extérieur de votre contrôle <<externe>>, <<SaaS>>

3. Meilleures pratiques pour les diagrammes de déploiement (en particulier pour les systèmes web)

  • Gardez-le simple et lisible — évitez le surpeuplement ; un diagramme par environnement majeur (dev/staging/prod facultatif)
  • Utilisez des groupements significatifs groupement de nœuds (imbriquer des nœuds à l’intérieur de nœuds) pour montrer les clusters/régions cloud
  • Préférez notations concises — affichez les noms de fichiers/configurations uniquement lorsqu’ils sont pertinents ; ignorez les stéréotypes redondants
  • Montrez clairement frontières — cloud interne vs services externes
  • Étiquetez protocoles sur les chemins (HTTP/HTTPS, WebSocket, TCP, etc.)
  • Utilisez direction de gauche à droite pour les systèmes web (le flux client → serveur → base de données semble naturel)
  • Différenciez appareil (matériel) vs environnement d’exécution (runtime)
  • Montrez réalisation uniquement lorsqu’elle apporte de la valeur (artefact → composant)
  • Utilisez skinparam dans PlantUML pour de meilleures couleurs/lisibilité
  • Pour les systèmes petits/moyens : 4 à 8 nœuds maximum

4. Structure recommandée pour un système simple de commande de nourriture en ligne

Une mise en page propre et moderne pour ce système :

  • Côté client → Navigateur (implicite) communique avec Serveur web/CDN
  • Serveur web/CDN héberge les artefacts statiques + SPA pour le site client et le tableau de bord restaurant
  • Serveur API (environnement d’exécution) exécute la logique du serveur
  • Serveur de base de données héberge PostgreSQL
  • Externe Services de paiement et de notification

Nœuds typiques :

  1. Serveur web / CDN <<device>>
  2. Serveur API <<environment d’exécution>>
  3. Serveur de base de données <<environment d’exécution>>
  4. Passerelle de paiement <<externe>>
  5. Service de notification <<externe>>

5. Diagramme généré par le chatbot AI de Visual Paradigm

Code PlantUML amélioré et nettoyé (avec explications)

@startuml

title Système simple de commande de nourriture en ligne – Diagramme de déploiement

direction de gauche à droite

skinparam {
CouleurFleche #424242
CouleurPoliceFleche #424242
TaillePoliceParDefaut 14
ombres false
stereotypeCBackgroundColor #ADD1B2
stereotypeIBackgroundColor #ADD1B2
}

‘ ── Nœuds ────────────────────────────────────────────────

nœud “Serveur Web / CDN” <<device>> comme WebServer {
[Site Web du Client HTML/JS/CSS] #..# (SPA Client)
[Tableau de bord administrateur Restaurant HTML/JS/CSS] #..# (SPA Restaurant)
}

nœud “Backend Cloud” <<device>> comme Cloud {
nœud “Serveur API” <<environnement d’exécution>> comme APIServer {
artefact “backend-api.jar / main.exe” comme BackendArtifact
}

nœud “Serveur PostgreSQL” <<environnement d’exécution>> comme DBServer {
bases de données “Base de données PostgreSQL” comme Postgres <<base de données>>
}
}

nœud “Passerelle de paiement” <<externe>> comme Payment {
[API de paiement] comme PaymentAPI
}

nœud “Service de notification” <<externe>> comme Notification {
[WebSocket / API de diffusion] comme NotifyAPI
}

‘ ── Relations ─────────────────────────────────────────

WebServer –> Cloud : HTTPS (appels API)

Cloud –> Payment : HTTPS (paiement)

Cloud –> Notification : WebSocket / HTTPS (mises à jour d’état)

‘ Artefact → réalisation de composant (facultatif mais clair)
(SPA Client) ..> BackendArtifact : <<appelle>>
(Restaurant SPA) ..> BackendArtifact : <<appels>>

BackendArtifact –> Postgres : <<JDBC / SQL>>

BackendArtifact –> PaymentAPI : <<appels HTTPS>>

BackendArtifact –> NotifyAPI : <<WebSocket / HTTPS>>

‘ Optionnel : afficher le protocole sur la base de données si souhaité
‘ BackendArtifact -droite-> Postgres : <<JDBC>>

note à droite de Cloud
Configuration typique pour petite/moyenne taille :
• Machine virtuelle unique ou petit cluster
• L’API et la base de données peuvent être sur la même machine (pour simplifier)
ou séparés pour un meilleur dimensionnement
fin de la note

@enduml

6. Étapes par étapes : Comment créer votre propre diagramme de déploiement

  1. Lister toutes les cibles d’exécution (serveurs, conteneurs, services externes)
  2. Lister les artefacts déployables (ce qui s’exécute réellement : bundle .js, .jar, base de données)
  3. Regrouper en nœuds (imbriquer quand logique — par exemple : API + base de données dans un même nœud cloud)
  4. Déterminer la direction (de gauche à droite fonctionne bien pour web → API → base de données)
  5. Ajouter les chemins de communication avec des étiquettes de protocole
  6. Ajouter les dépendances clés (<<appels>>, <<accès>>)
  7. Appliquer skinparam pour les couleurs/lisibilité
  8. Ajouter des notes pour les décisions importantes (instance unique vs multiple, notes de dimensionnement)
  9. Valider: Un ingénieur DevOps peut-il comprendre où déployer chaque composant ?

Résumé – Référence rapide pour le déploiement d’une commande simple de nourriture

Partie Type de nœud typique Exemple d’artefact Se connecte via
Interface utilisateur client Serveur web / CDN <<device>> Paquet SPA (HTML/JS) HTTPS → API
Tableau de bord du restaurant Serveur web / CDN <<device>> Paquet SPA administrateur HTTPS → API
Logique métier Serveur API <<executionEnv>> backend-api.jar / exécutable JDBC → BD, HTTPS → externe
Stockage des données PostgreSQL <<executionEnv>> Fichiers de données PostgreSQL + schéma
Paiements Externe <<SaaS>> Point de terminaison de l’API de paiement HTTPS
Mises à jour en temps réel Externe <<SaaS>> WebSocket / FCM / APNs WebSocket / HTTPS

Cette structure est réaliste pour les déploiements MVP ou à petite à moyenne échelle (1 à 3 serveurs + base de données cloud + Stripe/PayPal + Firebase/Pusher).

N’hésitez pas à ajuster le niveau d’imbrication, les protocoles ou à ajouter des notes d’évolutivité (par exemple, équilibreur de charge, réplicas) lorsque le système grandit.

🔗 Liste de références (format Markdown)