Archireport
ROADMAP TECHNIQUE 2020













Lecture d'une visite
4 requêtes dans 4 bases












Repenser le schéma

DynamoDb
- Base de données NoSQL managées chez AWS
- Stream / TTL
- Un document par liaison pour many to many
- L'identifiant est préfixé
- On ne peut requête que sur la clé ou sur des index

id | projectId | name | reportId | workId |
---|---|---|---|---|
project_456 | Villa Lumia | |||
work_23 | project_456 | Gros oeuvre | ||
work_24 | project_456 | Charpente | ||
wr_12 | report_65 | work_23 | ||
report_65 | project_456 | Visite | ||
actor_741 | project_456 | John | ||
actor_741 | report_98 |

DynamoDb
id | projectId | name | reportId | workId |
---|---|---|---|---|
project_456 | Villa Lumia | |||
work_23 | project_456 | Gros oeuvre | ||
work_24 | project_456 | Charpente | ||
wr_12 | report_65 | work_23 |
Récupérer les lots d'un projet
Index sur projectId / id
projectId | id | name |
---|---|---|
project_456 | work_23 | Villa Lumia |
project_456 | work_24 | Gros oeuvre |


DynamoDb
Récupérer les lots d'une visite
Index sur reportId / id
reportId | id | ||
---|---|---|---|
report_65 | wr_12 |

id | projectId | name | reportId | workId |
---|---|---|---|---|
project_456 | Villa Lumia | |||
work_23 | project_456 | Gros oeuvre | ||
work_24 | project_456 | Charpente | ||
wr_12 | report_65 | work_23 |
reportId | projectId | name | |
---|---|---|---|
report_65 | project_456 | Visite |

Cognito
Gestion des comptes utilisateurs
Groups
Workflow (mise à jour de mots de passe)
Envoi d'emails
UI par défaut (customisable)
OAuth


AppSync
- API GraphQL managée
- Se connecte à ES / Lambda / DynamoDb (template velocity)
- Client JS / iOS .. pour le support du Offline (DataStore)
- Résolution des conflits
- Delta Sync
- Mise à jour temps réel
- Gestion des données supprimées (Tombstone)
- Directives spécifiques (@auth pour l'accès aux données, @connection pour les jointures par index)
- Dimensionne automatiquement pour les subscriptions (mise à jour temps réel)



Même gestion du offline

Résolution des conflits
Ajoute un champ _version au document

{
"id" : 1,
"name" : "Nadia",
"jersey" : 55,
"_version" : 2
}
Stratégies
-
OPTIMISTIC_CONCURRENCY - Rejet
-
AUTOMERGE - Nouveaux champs et fusion listes
-
LAMBDA - custom

Lambda
Autoscaling
Peut être utilisé pour faire des batchs (step function)
Exécution isolée
=> EXPORT-PICHET + STATISTIQUES


What's next
Démarrage du développement de la nouvelle API GraphQL sur nouveau schéma
Avec les premières queries démarrer la migration de l'app iOS et Web (et adapter l'api GraphQL si besoin)
Archireport
By Mickael Lecoq
Archireport
- 757