Gadz.org souhaite privilégier l'Architecture Orientée Service (FR) afin de fluidifier les évolutions des applications ainsi que les évolutions technologiques.
Règles de design
- Les applications communiquent entre elles via RabbitMQ
- Les applications peuvent requeter les référentiels directement via une API HTTP. Dans ce cas, la dépendance au service concernée doit être explicitement signalée
Structure des messages
Exemple de message :
Exemple de message
{ "event_uuid":"88d818a1-c77c-44e6-ad0c-8aa893468e94", "event_name":"request.gapps.account.create", "event_creation_time":"2016-05-29T15:03:50+00:00", "event_sender_id":"gram", "data":{ "id":"12453" }, "errors_count":1, "errors":[ { "error_type":"softerror", "error_uuid":"e157e1a0-2663-11e6-b67b-9e71128cae77", "error_sender":"gappsd", "error_message":"Google API Unavailable", "timestamp":"2016-05-29T15:03:50Z", "error_debug":{ "id":"12453" } } ] }
Catalogue des services
Gapps
I/O | Routing key | Action/Déclencheur | Format du JSON |
---|---|---|---|
Requête | request.gapps.account.create | Crée un nouveau compte Google Apps à partir des informations contenues dans le GrAM et l'application Zenimel | { "event":"request.gapps.account.create", "data":{ "id": [Integer] Numéro sociétaire } } |
Requête | request.gapps.account.update | Met à jour un compte Google Apps à partir des informations contenues dans le GrAM et l'application Zenimel | { "event":"request.gapps.account.update", "data":{ "id": [Integer] Numéro sociétaire } } |
Requête | request.gapps.account.delete | Supprime un compte Google Apps à partir des informations contenues dans le GrAM et l'application Zenimel | { "event":"request.gapps.account.delete", "data":{ "id": [Integer] Numéro sociétaire } } |
Requête | request.gapps.account.suspend | Suspend un compte Google Apps à partir des informations contenues dans le GrAM et l'application Zenimel | { "event":"request.gapps.account.suspend", "data":{ "id": [integer] Numéro sociétaire } } |
Notification | notify.gapps.account.updated | Un compte Google Apps a été modifié par Gappsd | { "event":"notify.gapps.account.updated", "data":{ "id": [Integer] Numéro sociétaire "google_apps_id": [String] Adresse principale du compte google apps "google_apps_statue": [ENUM(non_existent,created,suspended,deleted)] état du compte } } |
{
"event_uuid":"88d818a1-c77c-44e6-ad0c-8aa893468e94",
"event_name":"testing_key",
"event_creation_time":"2016-05-29T15:03:50+00:00",
"event_sender_id":"tester",
"data":{
"test_data":"testing_message"
},
"errors_count":1,
"errors":[
{
"error_type":"softerror",
"error_uuid":"88d838a1-c77c-44e6-ad0c-8aa893468e94",
"error_sender":"a_sender",
"error_message":"test_error",
"timestamp":"2016-05-29T15:03:50Z",
"error_debug":{
}
}
]
}
"event_uuid":"88d818a1-c77c-44e6-ad0c-8aa893468e94",
"event_name":"testing_key",
"event_creation_time":"2016-05-29T15:03:50+00:00",
"event_sender_id":"tester",
"data":{
"test_data":"testing_message"
},
"errors_count":1,
"errors":[
{
"error_type":"softerror",
"error_uuid":"88d838a1-c77c-44e6-ad0c-8aa893468e94",
"error_sender":"a_sender",
"error_message":"test_error",
"timestamp":"2016-05-29T15:03:50Z",
"error_debug":{
}
}
]
}