Skip to content

glc-gplassard/article-akkastream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Article akka-streams

Sources du projet ayant servi d'exemple pour l'article sur le blog technique du Groupe La Centrale https://tech.carboatmedia.fr/2020/11/02/akka-streams/.

Le projet consiste en 2 jobs

  • le premier DynamoInserter permet de créer des documents dans une table DynamoDB
  • le deuxième DynamoUpdater va scanner les documents d'une table DynamoDB et les mettre à jour en rajoutant un attribut "updatedAt" avec la date de mise à jour. Il est prévu pour être lancé plusieurs fois en gardant un état d'avancement à passer entre chaque exécution afin de ne pas être limité par le temps d'exécution maximum d'une fonction AWS Lambda qui est de 15 minutes.

Dépendances

  • JDK (testé avec JDK8)
  • sbt
  • NodeJs
  • Yarn
  • Un compte AWS avec des credentials configurés
  • Une instance Izanami

Fonctionnement

Le projet est fait pour être déployé dans des fonctions AWS Lambda mais dispose également d'un Main qui permet de tester un peu le fonctionnement en local (et qui pourrait tout fait être modifié pour fonctionner en CLI).

Stack

Les ressources AWS sont définies une stack AWS CDK qui permet de définir ses ressources AWS en Typescript (Infra As Code) et elles seront ensuite déployées par Cloudformation. La stack est définie ici.

Elle consiste en

  • une table DynamoDB
  • 3 lambdas
    • Inserter qui insère des éléments dans le DynamoDB
    • Updater qui fait les opérations d'update
    • ListTasks qui renvoie une liste de tâches permettant de gérer le nombre de lambdas en parrallèle pour la tâche d'Update (en tirant partie du mode 'Map' dans StepFunction)
  • Une Stepfunction pour la tâche d'Update qui permet de la découper en plusieurs segments s'executant en parallèle

Schéma de la stepfunction

Installation

  • yarn install

Déploiement

  • sbt assembly
  • yarn cdk deploy --parameters vpcId=$vpcId --parameters subnetId1=$subnetId1 --parameters subnetId2=$subnetId2 --parameters subnetId3=$subnetId3 --parameters izanamiHost=$izanamiHost --parameters izanamiClientId=$izanamiClientId --parameters izanamiClientSecret=$izanamiClientSecret
  • yarn cdk deploy (pour les déploiements suivant, on a plus besoin de passer les paramètres)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published