Slide 1

Slide 1 text

Direction du numérique pour l‘éducation

Slide 2

Slide 2 text

INDUSTRIALISATION DE LA PUBLICATION DU CODE SOURCE [email protected] [email protected] [email protected] [email protected] Direction du numérique pour l‘éducation 2

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

4 INTRODUCTION

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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"

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

9 PLUGIN MENJ APP BUILDER

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

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/

Slide 14

Slide 14 text

# 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

Slide 15

Slide 15 text

• Instancie les templates dans le projet • Merge request si évolution des templates

Slide 16

Slide 16 text

19 CONCEPTION INDUSTRIALISÉE D’API « PUBLICATION READY » (VIA DU LCNC OUVERT)

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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)

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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)

Slide 22

Slide 22 text

27 CONCLUSION

Slide 23

Slide 23 text

28 Next steps Conclusion  Point étape (Code Lutin) ...

Slide 24

Slide 24 text

29 Q&R