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
- 727