Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Atelier #BlueHats du 18 octobre 2024 : la colla...

BlueHats
October 18, 2024
380

Atelier #BlueHats du 18 octobre 2024 : la collaboration MENJS / Code Lutin

Support de l'atelier BlueHats du 18 octobre 2024 sur la collaboration MENJS / Code Lutin

Voir https://code.gouv.fr/fr/bluehats/menjs-publication-by-design/ - présentation publiée sous licence Ouverte 2.0.

BlueHats

October 18, 2024
Tweet

More Decks by BlueHats

Transcript

  1. 3 1| Introduction 2| Plugin App Builder MENJ 3| Conception

    détaillée industrialisée d’API 4| Conclusion 5| Q&R SOMMAIRE 5 Min – Didier 10 Min – Thomas – Matthieu 5 Min – Erwan 5 Min – Erwan et Code Lutin
  2. 5 Action 24 ? • "Adopter des démarches de développement

    permettant la publication du code source dès la conception, o soit par réorganisation des équipes de développement internes au ministère, o soit en intégrant des clauses ad-hoc dans les appels d’offre" Introduction
  3. 6 Et donc ... Introduction  Avec les livrables de

    la prestation Code Lutin :  2 applications d'exemples "publication ready"  Le Script pour identifier les couplages l Le Workflow de publication (merge request)  Le Pipeline de publication vers le Mim.Libre  Nous avons identifié des plaques d'adhérence pour passer à l'échelle :  Notre Forge  Le LCNC ouvert  Pour permettre :  D'instancier les projets "publication ready"  De continuer la conception applicative (API first) dans ce "moule publication ready"
  4. 7 Parti pris : API first ! • Un projet

    est donc décomposé en au moins 2 parties : • Le code métier est isolé dans un projet • Et le projet d’exposition en API REST • Nous allons présenter la chaîne (en cours de mise en place) permettant : • D’agir au plus tôt : dès la création projet • Et d’entretenir le « publication ready » Introduction Métier API REST
  5. 8 Vue d’ensemble de la chaîne Forge Education IT :

    Nouveau Projet     Dépôt Git avec projet :  Code source métier prêt à être publié  Une API REST HelloWorld  Un squelette de tests unitaires     Intégration et déploiement continus pré-configurés (y compris le workflow et le pipeline de publication) Forge interministériel Mim.libre  Expose le code source métier sur Internet Introduction Projet métier Projet infra (API) Projet métier
  6. 10 Dans la Forge Education • Initialiser un projet Forge

    en définissant (pour un projet Dev) : o Le langage (Java, PHP...) o Le gestionnaire de dépendances (Maven, Composer...) o Le(s) framework(s) (Spring boot, Symfony...) o Aligné avec le Cadre de Cohérence Technique (CCT) --> Merge Request "Copier" sur les évolution des templates • Maquettage en cours de finalisation Plugin MENJ App Builder Première version envisagée T1-2025
  7. Task est un exécuteur de tâches / de build qui

    vise à être plus simple et facile à utiliser que, par exemple, GNU Make. Et appelez-le en exécutant `task hello` depuis votre terminal. Limiter le "vendor lock'in" Taskfile https://taskfile.dev/fr-fr/
  8. # Taskfile.yml à la racine version: '3' includes: docker: .config/docker/Taskfile.yml

    tasks: devsecops: cmds: - task plan - task code - task build - task test - task release - task deploy - task operate - task monitor - task feedback # .config/docker/Taskfile.yml version: '3' tasks: lint: cmds: - docker lint Dockerfile Structure de Taskfile, y compris l'utilisation de sous-fichiers pour différentes technologies Orchestrer avec Taskfile
  9. 20 Et le LCNC ouvert … • Permet de maîtriser

    : • Les concepts utiles au métier technique que l’on désire représenter (ex : Swagger/OpenAPI) • Les templates de génération  plaque d’adhérence de l’intelligence collective • Pour apporter de la stabilité dans la production applicative (répétable) • En accélérant le delivery Conception industrialisée d’API
  10. Analogie Modèles = Base de données On peut voir l’ensemble

    des modèles comme une base de données sur laquelle nous allons réaliser des requêtes afin de constituer des artefacts : • Documents Word • Fichiers texte (ex : classes Java) • Métriques Conception industrialisée d’API Query (Java, OCL ou AQL)
  11. Fondations techniques SIRIUS - ISDesigner • Il existe des studios

    Open Source et gratuites packagés sur des standards, par exemple : o UML-Designer : http://www.umldesigner.org/download/ o BPMN-Designer : https://github.com/ObeoNetwork/BPMN-Designer/releases/tag/4.1.1 o … • Mais aussi, IS-Designer (sponsor : Ministère des Armées) pour concevoir des applications de gestion : https://www.isdesigner.org/ o Entity pour le Mapping Objet / Relationnel o DataBase pour les MLD / MPD o Requirement pour les exigences métier (et leur traçabilité) o SOA pour la couche métier (et l’éventuelle exposition) o … • Ces studios sont des paramétrages sur SIRIUS : https://eclipse.dev/sirius/ • IS-Designer est le résultat de plus de 10ans de travail pour industrialiser la conception détaillée des applis métier et est dans le SILL : https://code.gouv.fr/sill/detail?name=IS%20Designer o Génération de code personnalisée avec le langage Acceleo : https://www.eclipse.org/acceleo/ o Exemple LCNC PacMan : https://www.isdesigner.org/generateurs.html Conception industrialisée d’API
  12. Exemple ISDesigner - API • Exemple de normalisation d'une API

    "Structures" faite par la Région Académique du Grand Est Conception industrialisée d’API
  13. 26 Question d’équilibre … Conception industrialisée d’API C O D

    E G E N Ne pas chercher à tout modéliser : loi de « 1 …N »  Le ROI augmente avec le N qui est grand (= 1 élément modélisé génère N artefacts) Rester simple et focus sur le métier : KISS  La vélocité diminue quand la complexité du code augmente  L’empilement de frameworks augmente cette complexité (effet boite noire)