Architectures Big Data en Serverless Bonnes pratiques et design patterns Rudy Krol, Solutions Architect, AWS Alexandre Ignatovic (CTO) & Benoit Tigeot (Developer), Appaloosa Store Alexis Daguès (CEO) & Cédric Rumiano (Cloud Native Engineer), Corexpert 27 Juin 2017 2016, Web Services, Inc. or its Affiliates. All rights reserved.
Evolution des architectures Cloud «Lift & Shift» VM Optimisé dans le Cloud Services managés Architecturé pour le Cloud Serverless AWS Lambda Kinesis Athena AWS Glue QuickSight EC2 EMR AWS Batch Elasticsearch Service S3 DynamoDB SQS AWS Step Functions SNS ElastiCache RDS Redshift Lex Machine Learning Polly Rekognition AWS IoT
AWS Lambda: Nouveau paradigme d architecture Architecture évènementielle Les fonctions comme unité de déploiement Une facturation par incrément de 100ms d exécution
AWS Lambda: Stateless Une instance de fonction peut être supprimée en cas de Déploiement d une nouvelle version de la fonction Mise à jour du serveur Scalabilité à la baisse Exception non gérée Bonne pratique: Utiliser un datastore externe pour stocker les données de cache longue durée ou persistantes (ex: ElastiCache, DynamoDB, S3 )
AWS Lambda: Démarrage à froid Effet «cold start» à la première exécution de la fonction après instanciation Bonnes pratiques: Initialiser les clients et connections aux bases de données en dehors de la fonction handler Déployer la fonction dans un VPC uniquement si nécessaire Activer AWS X-Ray pour mesurer les cold start Exécution à l initialisation import sys import logging import rds_config import pymysql rds_host = "rds-instance" db_name = rds_config.db_name try: conn = pymysql.connect( except: logger.error("error: def handler(event, context): with conn.cursor() as cur: Exécution à chaque invocation
AWS Lambda: Profil de puissance Le coût d exécution d une fonction dépend du temps d exécution (en ms) et de la taille de la mémoire allouée (de 128 Mo à 1,5 Go) Bonne pratique: Utiliser AWS Step Functions pour optimiser l allocation mémoire de vos fonctions https://github.com/alexcasalboni/aws-lambda-power-tuning
AWS Lambda: Gestion des erreurs Types d erreurs à gérer: Timeout Format input invalide Out of memory Dépassement de limite Erreur générée par la fonction Bonnes pratiques: Configurer des alarmes CloudWatch et activez CloudWatch Logs pour collecter les logs générés par les fonctions Pour les invocations asynchrones, activer les Dead Letter Queues pour conserver les messages en erreurs et les traiter ultérieurement Utiliser AWS Step Functions pour automatiser le traitement des cas d erreurs Voir article blog «Automating AWS Lambda Function Error Handling with AWS Step Functions»
Flux de données et solutions Big Data = Serverless Ingestion Collection Stockage Analyses Traitements Visualisation Consommation Commits Bulk Transport Transactional NoSQL Batch Analytics Interactive Querying Data Science Notebooks File/Object Upload Data Lake Machine Learning/ Deep Learning B.I. Tools Dashboards Streaming Ingest Streaming Storage Realtime Analytics Batch ETL/ELT Orchestration / Transformation Realtime ETL/ELT Transactional / CDC
Pattern d architecture: Requêtage interactif Ingestion Collection Stockage Analyses Traitements Visualisation Consommation Interactive AWS Snowball S3 Transfer Acceleration Kinesis Firehose S3 Athena Redshift EMR Presto QuickSight ES (Kibana) Serverless Tez Spark Services managés VM
Pattern d architecture: Analyse temps réel Ingestion Collection Stockage Analyses Traitements Visualisation Consommation Producteur de données Kinesis Streams DynamoDB Streams Apache Kafka Kinesis Analytics AWS Lambda EMR Spark Streaming Apache Flink Alertes Résultats calculs SNS DynamoDB ElastiCache Notifications KPI Serverless Services managés VM KCL Apache Storm RDS ES (Kibana)
Appaloosa.io Construction d un pipeline d analytics Serverless Alexandre Ignjatovic, Benoit Tigeot Mai 2017 2016, Web Services, Inc. or its Affiliates. All rights reserved.
Appaloosa est un store d applications simple et sécurisé 110 clients grands comptes (La Poste, Leroy Merlin, etc.) 60 000 applications déployées 300 000 utilisateurs @AppaloosaStore
Le Challenge
Victime de son succès Architecture du pipeline d analytics ne répondant plus au besoin Utilisateurs Smartphone API Interface d administration Administrateurs Instance MongoDB
Les symptômes
Une refonte avec deux impératifs Pas de DevOps, de DBA ou de SysAdmin dans l équipe Des technologies administrées par le fournisseur de service Une entreprise en croissance constante (~1000 clients en plus sur la dernière année) Une solution scalable et future proof
Les contraintes Un service en cours d utilisation Pas d interruption de service envisageable Un volume de données collectées assez important Jusqu à 10 000 événements par minute Un budget contraint Solution à remplacer coûtant 800 /mois
La Solution
Kinesis Firehose + DynamoDB Utilisateurs Smartphone API Interface d administration Administrateurs Kinesis Firehose Redshift Batch d agrégation DynamoDB
Kinesis Firehose + DynamoDB Avantages Mise en place triviale Pas d administration Inconvénients Duplication aléatoire des données Impossibilité d ajouter un consommateur à un flux Kinesis Firehose Alimentation par batch de DynamoDB non triviale Modèle de scaling DynamoDB pas adapté à une alimentation par batch
Pipeline de collection d événements Evénements Utilisateurs API Kinesis AWS Lambda Kinesis Firehose S3 AWS Lambda Redshift AWS cloud
Accès aux données Administrateurs AWS Lambda Interface d administration API RDS (PostgreSQL avec dblink + postgres_fdw) Redshift AWS cloud Collection d événements
Avantages Efficace quelle que soit la charge en écriture et lecture Aucune action d administration requise Délégation de toutes les questions de sécurité bas niveau à AWS Possibilité d ajout de consommateur sur le flux Kinesis Architecture modulaire, qui permet de nombreuses évolutions
Quels Bénéfices?
Scalabilité Collection des données Consultation des données 1 partition Kinesis Ø 60K événements par minute Augmenter la capacité du pipeline ou du cluster est trivial Rafraîchissement des données Ø moins de 1 minute Temps de réponse Ø inférieur à 5 ms
Coûts Sur 1 mois Avantages Kinesis (2 partitions) Ø 24$ Redshift (1 noeud) Ø 200$ RDS (db.t2.micro) Ø 16$ Total: 240$ par mois 70% d économies Modularité du tarif
Et Ensuite?
La suite? Auto-Scaling Kinesis et Kinesis Firehose? Des KPIs mis à jour en temps réel dans une instance ElastiCache ou DynamoDB (avec DAX)? Athena en tant qu outil de BI? AWS Step Functions pour matérialiser visuellement le workflow du pipeline?
Pour en savoir plus L histoire complète de la migration sur notre compte medium: bit.ly/appaloosa_aws_1 bit.ly/appaloosa_aws_2 N hésitez pas à visiter appaloosa.io!
Intelligence Artificielle en temps-réel sur un flux vidéo Analyse de vidéo en Serverless avec Rekognition Alexis DAGUES - CEO Cédric RUMIANO - Cloud Native Engineer 2016, Web Services, Inc. or its Affiliates. All rights reserved.
Architecture Serverless Rekognition
Votre feedback est important. Prenez quelques instants pour voter sur : etc.ch/qzg3
Merci!