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

Post on 16-Oct-2020

1 views 0 download

transcript

© 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

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

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

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…)

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

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

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:

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

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

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

© 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

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

Le Challenge

Victime de son succès

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

Instance MongoDB

APIUtilisateurs Smartphone Interface d’administration

Administrateurs

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

Amazon Kinesis Firehose + Amazon DynamoDB

APIUtilisateurs Smartphone Interface d’administration

Administrateurs

Amazon Kinesis Firehose

Amazon Redshift Amazon DynamoDB

Batch d’agrégation

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

Pipeline de collection d’événements

API

Evénements

AmazonKinesis

AmazonKinesis

Firehose

AWS cloud

AWS Lambda

Amazon S3

AmazonRedshift

AWS Lambda

Utilisateurs

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

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

Quels Bénéfices ?

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

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

Et Ensuite ?

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 ?

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 !

© 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

Architecture Serverless – Amazon Rekognition

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

etc.ch/qZG3

Merci !