Loading
Benoît Chanclou
This is a live streamed presentation. You will automatically follow the presenter and see the slide they're currently on.
On arrive aux limites
depuis 10 ans
car
le nombre de cœurs augmente
=>
Nécessité de paralléliser
Néanmois
Processus multi threads
=> réponse la programmation réactive (aka asynchrone)
Plusieurs processus
(aka le macro-service)
Un service
Au début
Avec le temps
coût / fonction
temps
coût cumulé
temps
richesse fonctionnelle
tunnel
développement d'une nouvelle version
release de la version
coût cumulé
causes
coût cumulés
temps
coûts cumulés
temps
Composants micro-service
=> formaliser les règles de communication
du code spaghetti au plat de spaghetti
Définir des normes pour les protocoles
Augmentation du nombre de composants
Définir des normes pour le fonctionnement
Un appel d'API c'est extrêmement lent
Augmenter le nombre d'appels API
Définir des normes d'utilisation
Augmentation du nombre de composants
Définir des solutions
Les points clés
L'élasticité implique que toute requête soit
ne pas dépendre d'un service d'authentification
=> via token self content
Utilisation de JWT
Différentes types de services ayant chacun leur rôle
Valider une donnée ≠ les champs sont définis
Rendre obligatoire un champs est
du domaine métier
pas du domaine du référentiel
Le référentiel Tiers est un must-have
cf. RGPD
Différentes types de services
chacun a son rôle
La plupart des services ont en commun
Le groupe dont on fait parti, c'est lié à :
exemples :
Un utilisateur peut faire parti de plusieurs groupes
Le rôle que l'on a vis-à-vis du service, dépend de ce qu'on a le droit de faire :
Les rôles peuvent être déclinés en sous-rôles pour plus de finesse
On a un utilisateur chez un intégrateur de services
Pourtant c'est le même utilisateur faisant parti des mêmes groupes
tenant
group/role
groups
roles
requête
utilisateur
le manager ne doit pas pouvoir ajouter le rôle administrateur dans le mapping de son tenant
sinon il peut augmenter ses propres droits
username + password
=> gérer une liste interne contenant les utilisateurs autorisés et définir pour chaque utilisateur la liste des groupes dont il fait parti (ou faire appel à un service tiers)
Utile pour
Token self content avec authentification & payload
Toujours utiliser un droit de même type
Ne jamais mixer les deux types sur une même ressource
A la création d'une tâche on veut
référentiel tâches
POST tâche
POST sms
data wharehouse
POST tâche
Numéro de téléphone !?
envoi de sms
référentiel tâches
POST tâche
formatage sms
POST tâche
data wharehouse
POST tâche
envoi de sms
POST sms
référentiel tiers
définit par
un webhook est défini
module tiers MGDIS
"webhooks": [
{
"topic": "POST+*/tiers",
"callback": "/document-collect/stnazaire/root/tiers?cmisaction=createFolder&propertyId[0]=cmis:name&propertyValue[0]={reference}&propertyId[1]=cmis:objectTypeId&propertyValue[1]=cmis:folder&succinct=true",
"method": "POST",
"options": {
"withoutBody": true
}
},
{
"topic": "POST+*/tiers",
"callback": "/request/api/stnazaire/collections/tiers/{reference}",
"method": "PUT",
"headers": {
"Authorization": "Basic YWRtaW46QzdOYVdWMzlwM1M4R0hFd2RTTjNIZ1lwVzFXMGVtS1E="
}
},
{
"topic": "POST+*/tiers",
"callback": "https://wwx2.mairie-saintnazaire.fr/BlueAccess/application/referentiel_association_TEST/modules/webhook/index.php?reftiers={reference}",
"method": "PUT"
},
]Ils sont obligatoires pour :
NE SONT PAS (forcément/souvent) LES MÊMES
On ne garde que le dernier état de la ressource
On stocke toutes les modifications réalisées sur la ressource
Un référentiel doit gérer l'historique des ressources qu'il gère
=>
Utilisation de la sauvegarde incrémentale obligatoire
Basé sur les Entreprise Integration Pattern
(C'est à l'intégration ce que sont les Design Patterns à la POO)
Tests
Tests