+ All Categories
Home > Documents > Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset...

Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset...

Date post: 16-Oct-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
33
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 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 Architectures Big Data en Serverless Bonnes pratiques et design patterns
Transcript
Page 1: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Rudy Krol, Solutions Architect, AWSAlexandre Ignatovic (CTO) & Benoit Tigeot (Developer), Appaloosa Store

Alexis Daguès (CEO) & Cédric Rumiano (Cloud Native Engineer), Corexpert

27 Juin 2017

Architectures Big Data en ServerlessBonnes pratiques et design patterns

Page 2: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Evolution des architectures Cloud

Optimisé dans le CloudServices managés

Amazon EMR

Amazon Elasticsearch

Service

Amazon ElastiCache

AmazonRDS

Amazon Redshift

AWS Batch

Amazon Lex

AWSLambda

Architecturé pour le CloudServerless

AWSGlue

AmazonS3

AmazonDynamoDB

AmazonAthena

Amazon Kinesis

AmazonSQS

AWSStep Functions

Amazon Polly

Amazon Rekognition

Amazon Machine Learning

AWSIoT

AmazonSNS

AmazonQuickSight

«Lift & Shift»VM

Amazon EC2

Page 3: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

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

Page 4: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

AWS Lambda: Stateless

Scalabilitéà la baisse

Mise à jour du serveur

Exception non gérée

Déploiement d’une nouvelle version

de la fonction

Une instance de fonction peut être supprimée en cas de…

Bonne pratique:Utiliser un datastore externe pour stocker les données de cache longue durée ou persistantes (ex: Amazon ElastiCache, Amazon DynamoDB, Amazon S3…)

Page 5: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

AWS Lambda: Démarrage à froid

Effet « cold start » à la première exécution de la fonction après instanciation

• Déployer la fonction dans un VPC uniquement si nécessaire

• Activer AWS X-Ray pour mesurer les cold start

Bonnes pratiques:• Initialiser les clients et connections aux bases de

données en dehors de la fonction handler

import sys import logging import rds_configimport pymysql

rds_host = "rds-instance" db_name = rds_config.db_nametry:

conn = pymysql.connect(…except:

logger.error("ERROR:…

def handler(event, context):with conn.cursor() as cur:

Exécution à l’initialisation

Exécution à chaque invocation

Page 6: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

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

Page 7: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

AWS Lambda: Gestion des erreurs

Timeout Format input invalide

Out of memory Dépassement de limite

Erreur générée par la fonction

• 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 »

Bonnes pratiques:• Configurer des alarmes Amazon CloudWatch et activez Amazon CloudWatch Logs

pour collecter les logs générés par les fonctions

Types d’erreurs à gérer:

Page 8: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Flux de données et solutions Big Data

Orchestration / Transformation

Ingestion Collection Stockage Analyses

TraitementsVisualisation

Consommation

Batch ETL/ELT

RealtimeETL/ELT

Transactional / CDC

B.I. Tools

Data Science Notebooks

Bulk Transport

File/Object Upload

Streaming Ingest

Commits Transactional

NoSQL

Data Lake

Streaming Storage

Dashboards

Batch Analytics

Interactive Querying

Machine Learning/ Deep Learning

Realtime Analytics

= Serverless

Page 9: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

AmazonES (Kibana)

Pattern d’architecture: Requêtage interactif

S3 Transfer Acceleration

Amazon S3 Amazon Redshift

Amazon EMR

Presto

Tez

Spark

Interactive

Amazon Athena

Amazon QuickSight

Serverless

Services managés

VM

Amazon Kinesis Firehose

AWS Snowball

Ingestion Collection Stockage Analyses

TraitementsVisualisation

Consommation

Page 10: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Pattern d’architecture: Analyse temps réel

ApacheKafka

KCL

AWS Lambda

Apache Storm

Amazon SNS

Notifications

AmazonElastiCache

AmazonDynamoDB

AmazonRDS

AmazonES (Kibana)

Alertes

Résultats calculs KPI

Amazon DynamoDB Streams

Amazon Kinesis Streams

Amazon Kinesis Analytics

Amazon EMR

Spark Streaming

Apache Flink

Serverless

Services managés

VM

Producteur de données

Ingestion Collection Stockage Analyses

TraitementsVisualisation

Consommation

Page 11: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Alexandre Ignjatovic, Benoit Tigeot

Mai 2017

Appaloosa.ioConstruction d’un pipeline d’analytics Serverless

Page 12: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Appaloosa est un store d’applications simple et sécurisé

@AppaloosaStore

• 110 clients grands comptes (La Poste, Leroy Merlin, etc.)

• 60 000 applications déployées• 300 000 utilisateurs

Page 13: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Le Challenge

Page 14: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Victime de son succès

• Architecture du pipeline d’analytics ne répondant plus au besoin

Instance MongoDB

APIUtilisateurs Smartphone Interface d’administration

Administrateurs

Page 15: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Les symptômes

Page 16: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

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

Page 17: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

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

Page 18: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

La Solution

Page 19: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Amazon Kinesis Firehose + Amazon DynamoDB

APIUtilisateurs Smartphone Interface d’administration

Administrateurs

Amazon Kinesis Firehose

Amazon Redshift Amazon DynamoDB

Batch d’agrégation

Page 20: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Avantages• Mise en place triviale• Pas d’administration

Amazon Kinesis Firehose + Amazon DynamoDB

Inconvénients• Duplication aléatoire des

données• Impossibilité d’ajouter un

consommateur à un flux Amazon Kinesis Firehose

• Alimentation par batch de Amazon DynamoDB non triviale

• Modèle de scaling Amazon DynamoDB pas adapté à une alimentation par batch

Page 21: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Pipeline de collection d’événements

API

Evénements

AmazonKinesis

AmazonKinesis

Firehose

AWS cloud

AWS Lambda

Amazon S3

AmazonRedshift

AWS Lambda

Utilisateurs

Page 22: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Accès aux données

API Amazon RDS(PostgreSQL avec dblink + postgres_fdw)

AWS cloud

AWS Lambda

AmazonRedshift

Administrateurs

Interface d’administration

Collectiond’événements

Page 23: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

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 Amazon

Kinesis• Architecture modulaire, qui permet de nombreuses

évolutions

Page 24: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Quels Bénéfices ?

Page 25: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Collection des données• 1 partition Amazon Kinesis

Ø 60K événements par minute

• Augmenter la capacité du pipeline ou du cluster est trivial

Scalabilité

Consultation des données• Rafraîchissement des données

Ø moins de 1 minute• Temps de réponse

Ø inférieur à 5 ms

Page 26: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Sur 1 mois• Amazon Kinesis (2 partitions)

Ø 24$• Amazon Redshift (1 noeud)

Ø 200$• Amazon RDS (db.t2.micro)

Ø 16$

• Total: 240$ par mois

Coûts

Avantages• 70% d’économies• Modularité du tarif

Page 27: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Et Ensuite ?

Page 28: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

La suite ?

• Auto-Scaling Amazon Kinesis et Amazon KinesisFirehose ?

• Des KPIs mis à jour en temps réel dans une instance Amazon ElastiCache ou Amazon DynamoDB (avec DAX) ?

• Amazon Athena en tant qu’outil de BI ?• AWS Step Functions pour matérialiser visuellement le

workflow du pipeline ?

Page 29: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

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 !

Page 30: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Alexis DAGUES - CEOCédric RUMIANO - Cloud Native Engineer

Intelligence Artificielle en temps-réelsur un flux vidéo

Analyse de vidéo en Serverless avec Amazon Rekognition

Page 31: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Architecture Serverless – Amazon Rekognition

Page 32: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Votre feedback est important.Prenez quelques instants pour voter sur :

etc.ch/qZG3

Page 33: Architectures Big Data enServerless - AWS · Architectures Big Data enServerless Bonnespratiqueset design patterns. ... Apache Kafka KCL AWS Lambda Apache Storm Amazon SNS Notifications

Merci !


Recommended