Wednesday, August 17, 2022

Modèle C4 et ArchiMate


Si vous lisez la description du modèle C4 (et je vous encourage vraiment à le faire), vous remarquerez que chaque type de diagramme est en fait une définition agnostique de métamodèle et d'outil d'un point de vue d'architecture : vous pouvez utiliser n'importe quelle solution que vous voulez pour créer un tel diagrammes, y compris stylo et papier et outils de dessin. 

Mais que se passe-t-il si vous travaillez dans un contexte où certains architectes utilisent ArchiMate ? Eh bien, dans ce cas, vous pouvez facilement tirer parti d'ArchiMate pour prendre en charge le modèle C4. Cela nécessite simplement un mappage entre le métamodèle C4 et ArchiMate :

  • La personne (Person) peut être associée à un acteur metier  (Business Actor)
  • Le système logiciel (Software System) et le conteneur peuvent être mappés au composant d'application (Application Component)
  • Le composant peut être mappé à la fonction d'application (Application Function)
  • L'élément de code (Code Element) est peut-être trop fin pour être utile dans ArchiMate, mais pourrait également être mappé à la fonction d'application (Application Function)
  • La relation peut être mappée sur la relation de déclenchement (la convention est que les déclencheurs vont de l'appelant à l'appelé)

Tuesday, August 16, 2022

HATEOAS (Hypermedia as the Engine of Application State) Une introduction



  • C'est un composant de l'architecture d'application REST qui la distingue des autres architectures d'application réseau. "Hypermédia" est un terme faisant référence à tout contenu contenant des liens vers d'autres formes de médias tels que des images, des films et du texte.
  • Il facilite la création facile de représentations REST par certaines API qui suivent le principe HATEOAS lorsqu'elles travaillent avec Spring et en particulier Spring MVC.
  • Dans le style architectural REST, nous pouvons utiliser les liens hypermédias dans le contenu de la réponse. Cela signifie qu'en traversant les liens hypermédias, le client peut naviguer dynamiquement vers les ressources appropriées.
  • La navigation dans les liens hypermédias fonctionne sur le concept similaire d'un internaute parcourant des pages Web en cliquant sur les liens hypertextes pertinents pour atteindre un objectif final.
Prenons un exemple. En supposant que nous ayons un service REST qui fournit différentes descriptions de produits ; pensez à certains sites de commerce électronique. Si nous obtenons une réponse JSON avec un produit de ce site Web avec l'aide de HATEOAS, cela pourrait ressembler à ceci:

========


{
    "productId": 123
    "productName": "Telé XYZ",
    "description": "La meilleure télé de la planète."
    "links": [{
        "rel": "self",
        "href": "http://localhost:8080/magasin/api/produits/123"

    }, {
        "rel": "details",
        "href": "http://localhost:8080/magasin/api/produits/123/details"

    }, {
        "rel": "ajoutPanier",
        "href": "http://localhost:8080/magasin/api/AjoutPanier/123"

    }]
}
Bon, alors, c'est du JSON avec des attributs qui sont des liens. Ça change quoi? La sémantique: rel et href

rel-
Il signifie « relation » et explique comment le lien se rapporte à l'objet que nous avons demandé. 
  • self – ce qui signifie que ce lien nous amène à l'objet, 
  • details – signifie que des informations détaillées sont disponibles, 
  • ajoutPanier – indique le processus d'ajout de ce produit à un panier.
href –
Une URL complète qui montre comment l'action peut être effectuée.

HATEOAS réduira le besoin de configurer les points de terminaison d'URL, ce qui est une bonne chose. Toutes ces URL (dans l'exemple) nous indiquant :
  • comment rechercher les détails du produit ? 
  • Comment ajouter un produit au panier ? 

Nous n'en avons pas besoin codés en dur ou dans certains fichiers de configuration. Ils sont fournis par l'application. Si nous voulons vraiment avoir quelque chose dans nos fichiers de configuration, nous pouvons y placer les relations rel–. Dans toute application, nous avons différents appels d'API REST. Cela en fait un véritable avantage en quelque sorte.

Empaquetage et déploiement avec Spring Boot

 


Les options d’empaquetage flexibles de Spring Boot offrent un grand choix lorsqu’il s’agit de déployer votre application. Vous pouvez déployer des applications Spring Boot sur une variété de plates-formes cloud, sur des machines virtuelles/réelles, ou les rendre entièrement exécutables pour les systèmes Unix.


Ce document issue de la documentation officielle couvre certains des scénarios de déploiement les plus courants : Deploying Spring Boot Applications


En particulier pour K8s Spring Boot détecte automatiquement les environnements de déploiement Kubernetes en vérifiant la présence de variables « *_SERVICE_HOST » et « *_SERVICE_PORT » dans l’environnement. Vous pouvez remplacer cette détection par la propriété de configuration spring.main.cloud-plateforme.

Spring Boot vous aide à gérer l’état de votre application et à l’exporter avec http Kubernetes Probes à l’aide d’Actuator, l'outils de surveillance de SpringBoot.

Domptez l'IA : Mon guide personnel pour mieux parler à Gemini

On a tous vécu ce moment. Vous ouvrez Gemini, vous tapez une question rapide... et la réponse est "mouais". Pas fausse, mais pas t...