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

  • 118