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.

Saturday, July 10, 2021

Pourquoi l'architecture logicielle est plus importante que jamais (réf: Continuous Architecture in practice)

L'amélioration continue vaut mieux que la perfection différée. -Mark Twain



L'objectif de l'architecture reste d'offrir une valeur ajouté commerciale, la vitesse de livraison croissante attendue des informaticiens (TIC) au sein des entreprises présente de nouveaux défis. Dans le même temps, la facilité d'utilisation et les attentes 24h/24 et 7j/7 des utilisateurs finaux sont dictées par l'expansion écrasante de la technologie dans la vie quotidienne : nous sommes passés des PC aux tablettes, aux smartphones et à la technologie portable. Les ordinateurs sont maintenant dans nos poches. Ils sont presque toujours connectés les uns aux autres et leurs capacités dépassent nos besoins! Les équipes de livraison de logiciels d'aujourd'hui doivent désormais fonctionner à l'heure et à l'échelle d'Internet et du cloud. Cela a considérablement accru les exigences des parties prenantes de l'entreprise et a entraîné l'adoption croissante de pratiques agiles, de livraison continue, de DevOps et même de DevSecOps.

Pour relever ces défis et atteindre l'objectif de création de valeur commerciale dans cet environnement en évolution rapide, il est plus important que jamais pour les activités d'architecture de permettre une livraison précoce et continue de valeur et de s'assurer que ce qu'elles font appuie cet objectif.
ON PEUT, PEUT-ÊTRE, SE POSER LA QUESTION, MAIS C'EST QUOI UNE ARCHITECTURE AU JUSTE?
Quand on parle d'architecture, on s'intéresse à l'architecture logicielle. Mais comment définir l'architecture logicielle ? Voyons quelques définitions courantes.
D'APRÈS INTERNATIONAL FEDERATION FOR INFORMATION PROCESSING (IFIP):
L'architecture logicielle fait référence aux structures fondamentales d'un système logiciel et à la discipline de création de ces structures et systèmes. Chaque structure comprend des éléments logiciels, des relations entre eux et des propriétés à la fois des éléments et des relations. L'architecture d'un système logiciel est une métaphore, analogue à l'architecture d'un bâtiment. Il fonctionne comme un modèle pour le système et le projet en développement, définissant les tâches nécessaires à exécuter par les équipes de conception.
L'architecture logicielle consiste à faire des choix structurels fondamentaux qui sont coûteux à modifier une fois mis en œuvre. Les choix d'architecture logicielle incluent des options structurelles spécifiques à partir des possibilités de conception du logiciel. . . .

La documentation de l'architecture logicielle facilite la communication entre les parties prenantes, capture les premières décisions concernant la conception de haut niveau et permet la réutilisation des composants de conception entre les projets
D'APRÈS INTERNATIONAL STANDARDS ORGANIZATION AND INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS (IEEE)
Architecture : Concepts ou propriétés fondamentaux d'un système dans son environnement incorporés dans ses éléments, leurs relations et dans les principes de sa conception et de son évolution.
AIE TOUJOURS PAS CLAIRE, VOYONS POURQUOI RÉALISER DES ARCHITECTURES
Au moins 4 raisons..
  1. Atteindre les exigences d'attributs de qualité pour un système logiciel. L'architecture concerne la mise en œuvre d'exigences d'attributs de qualité importantes, telles que la sécurité, l'évolutivité, les performances et la résilience.
  2. Définir les principes directeurs et les normes d'un projet ou d'un produit et développer des plans directeurs. L'architecture est une vision du futur et des outils de support pour aider à communiquer la vision. Les Blueprints permettent d'abstraire l'architecture à un niveau approprié pour prendre des décisions commerciales et techniques. Ils facilitent également l'analyse des propriétés et la comparaison des options.
  3. Créez des services utilisables (et peut-être même réutilisables). Un aspect clé de l'architecture logicielle consiste à définir de bonnes interfaces pour les services.
  4. Créez une feuille de route vers un état futur de l'informatique. L'architecture traite des activités de planification de la transition qui mènent à la mise en œuvre réussie d'un plan informatique.
Maintenant que nous avons une définition de travail de l'architecture logicielle, on peut aborder avec sérénité le parcours d'architecte logiciel 😉😇

Tuesday, July 6, 2021

Mentor, coach, tuteur, parrain quelles différences


Mentorat


Le mentoring, ou mentorat consiste à soutenir et à encourager les personnes à gérer leur propre apprentissage afin qu'elles puissent maximiser leur potentiel, développer leurs compétences, améliorer leurs performances et devenir la personne qu'elles veulent être. La relation 'mentorale' conjugue transferts et/ou partage de savoirs (savoir-faire et savoir être), bienveillance et confiance entre le mentor et le mentoré. Le mentor offre un soutien au mentoré en lui transmettant des connaissances et lui prodiguant des conseils dans le but de l’aider à progresser dans sa carrière, faire aboutir un projet, gagner en compétence… Le mentorat peut être formel ou informel. Dans un environnement informel, les mentorés se fixent des objectifs, mais ils ne sont généralement pas mesurables et les relations ne sont pas structurées. Dans une relation de mentorat formelle, il existe des objectifs réalisables et mesurables définis et fixés avec des exigences déterminées.

Pourquoi le mentorat est-il important ?

Un bon mentor peut aider le mentoré à devenir plus efficace au travail, à acquérir de nouvelles compétences, à développer une plus grande confiance en soi et à prendre de meilleures décisions pour la croissance globale de sa carrière.
Les mentors aussi acquièrent de nombreux avantages, notamment la satisfaction de voir les autres se développer ; perspectives générationnelles et culturelles élargies; renforcement des compétences techniques, de leadership et interpersonnelles; et continuer à expérimenter de nouvelles idées et perspectives

Comparons le mentorat au autres modes d'accompagnement:

 Le coaching a pour but d’aider un « coaché » à trouver ses propres réponses dans le cadre d’une démarche personnelle ou professionnelle grâce à un « coach » formé aux techniques de l’accompagnement. Le coach ne connaît à priori rien du métier du « coaché ». Alors que le mentorat vise avant tout la transmission de savoirs, le coaching est une relation qui permet d’atteindre un ou des objectifs de développement définis dans le temps.

Dans le tutorat, le « tuteur » transmet sa connaissance d’une tâche, d’un savoir, savoir faire ou savoir-être et accompagne le « tutoré » dans l’apprentissage d’un nouveau métier ou d’une nouvelle tâche. Il s’assure que les savoirs sont acquis à la fin de la mission. Il y a généralement évaluation du tutoré par son tuteur alors que cette notion n’existe jamais dans le mentoring.

Le « parrain » prend en charge les premiers pas de son « filleul » qu’il guide pour lui éviter des difficultés de parcours. Il répond aux questions mais il n’y a dans la plupart des cas pas d’objectif précis, de fin dans la relation, ni de contractualisation.


Si vous souhaitez être mentoré ou implémenter le mentoring dans votre institution ou votre entreprise, contacter mentor@pascal-fares.fr (micro-entreprise enregistré à Paris -900 438 227-) 




Monday, July 5, 2021

Architecture d'applications

Une architecture d'application est une modélissation de la manière dont les applications logicielles d'une organisation sont assemblées dans le cadre de son architecture d'entreprise globale et de la manière dont ces applications interagissent les unes avec les autres pour répondre aux besoins de l'entreprise ou des utilisateurs. Une architecture d'application permet de garantir que les applications sont évolutives et fiables, et aide les entreprises à identifier les lacunes dans les fonctionnalités.


En général, l'architecture d'applications définit la manière dont les applications interagissent avec les middleware, les bases de données et d'autres applications. Les architectures d'applications suivent généralement des principes de conception de logiciels qui sont généralement acceptés par le groupe, mais peuvent manquer de normes industrielles formelles.

Saturday, July 3, 2021

Le TOGAF Domaines d'architectures (partie 1): La norme TOGAF est un cadre pour l’architecture d’entreprise.

La série d'articles concernant le TOGAF est issue de l'opengroupe Réf: le TOGAF https://www.opengroup.org/togaf

Il peut être utilisé librement par toute organisation qui souhaite développer une architecture d’entreprise pour une utilisation au sein de cette organisation.

Domaines d’architecture

Il existe quatre domaines d’architecture :

L’architecture opérationnelle ou métier– définit la stratégie opérationnelle, la gouvernance, l’organisation et les processus opérationnels clés;

L’architecture des données - décrit la structure du patrimoine de données logiques et physiques d’une organisation et comprend une description des ressources de gestion des données; Une description de la structure et de l’interaction des principaux types et sources de données de l’entreprise, aux niveaux logique et physique et des dispositifs pour gérer ces données.

L’architecture des applications - fournit un plan directeur pour les applications individuelles à déployer et décrit leurs interactions et leurs relations; description de la structure et des interactions des applications qui concrétise les dispositifs fournissant des fonctions business clés et gèrent les données.

L’architecture technologique - décrit les capacités logicielles et matérielles logiques; Une description de la structure et de l’interaction des services technologiques et des composants technologiques.


Saturday, June 26, 2021

Architecture d'entreprise (Partie 0), TOGAF. l'importance de l'architecture d'entreprise

Afin de se faire une idée de l'importance de l'architecture d'entreprise en tant que discipline, considérons la complexité des tâches managériales modernes

Imaginez que vous deviez mettre en œuvre un nombre de changements dans la structure de l'entreprise. Normalement, le point de départ serait un processus technologique. Vous devez changer la base des processus de l'entreprise. Ce sera suivi d'une réingénierie des processus métier, ce qui signifie changer la façon dont les processus sont exécutés, changeant parfois le propriétaire et les ressources clés. 

La réingénierie des processus métier est normalement liée à la refonte de la structure organisationnelle de l'entreprise, la fonctionnalité des départements et les flux d'informations.
 
La performance des processus est en principe digitalisé avec mise en place ou évolution de systèmes d'informations. Nous devrons peut-être mettre en œuvre de nouveaux logiciels ou modifier l'existant. Les modifications logicielles peuvent également entraîner un changement de base de données des systèmes de gestion ou encore des changements d'infrastructure en termes de matériel. Cette "chaîne" conduit à deux questions principales : 
  1. quoi d'autre 
  2. et comment contrôler la complexité?

C'est pour répondre à ces questions et présenter l'architecture d'entreprise qu'une série d'articles est prévue sur mon blog (https://www.cofares.net)

Le facteur interne clé pour utiliser l'architecture d'entreprise est le besoin d'alignement métier et informatique. Ceux qui sont expérimentés dans les projets logiciels admettront probablement que parfois le logiciel est implémenté juste pour être implémenté. L'alignement est crucial pour une numérisation réussie. L'informatique doit résoudre des tâches métier. La stratégie informatique doit s'adapter à la stratégie de l'entreprise. La direction doit soutenir cette idée au niveau stratégique et au niveau de l'exécution. La structure organisationnelle et les processus métier doivent être intégrés à l'infrastructure informatique pour créer un entreprise numérisé réussi.



Quelques hypothèses pour la suite


Nous utiliserons l'approche systémique.  L’analyse systémique envisage l’entreprise dans sa complexité (elle est composée de sous-systèmes et d’un environnement), sa globalité (tout est plus grand que la somme des parties qui la compose), son organisation (avec des niveaux hiérarchiques structurels et des processus fonctionnels), et l’interaction ( le changement d’une condition économique influence les autres conditions économiques du système).
L’entreprise échange avec son environnement et ses sous-systèmes des flux entrants et sortants :
– d’activité, logistiques (matières 1ères, produits finis, en-cours…) et monétaires
– de structure, des équipements d’actifs (matériels, mobilier, locaux…) et de personnel
– d’information composés d’éléments informels (culture, pressions politiques, sociales…) et formels (R&D, brevets, demandes de prix, devis, commandes, livraisons, factures…)

D'une manière concrète et du point de vue  des systèmes d'informations, un « système » est un assemblage cohérent et structuré d’éléments technologiques, en particulier des composants logiciels, destiné à contribuer à une finalité donnée, en rendant à des usagers un certain service avec en lige de mire la stratégie d'entreprise.

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...