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

  1. Les applications communiquent entre elles via RabbitMQ
  2. 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 :

{  
   "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/ORouting keyAction/DéclencheurFormat du JSON
Requêterequest.gapps.account.createCré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êterequest.gapps.account.updateMet à 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êterequest.gapps.account.deleteSupprime 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êterequest.gapps.account.suspendSuspend 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
  }
} 
Notificationnotify.gapps.account.updatedUn 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":  

         }
      }
   ]
}