In mijn laatste artikel bespraken we de exponentiële groei van events in de huidige datagedreven wereld. Met zoveel apps, slimme apparaten en machines om ons heen, is de hoeveelheid gecreëerde data enorm. We onderzochten ook hoe een orkestratieplatform kan helpen deze events naar de juiste applicaties te leveren. Het leveren van events is echter mogelijk niet genoeg voor bedrijven om impact te maken.
Door deze gebeurtenissen te analyseren om het gedrag van de gebruikers te begrijpen, kunnen bedrijven hun klanten beter bedienen door slimmere beslissingen te nemen. Een realtime analyseplatform kan helpen de gegevens van de gebeurtenis om te zetten in zinvolle intelligentie.
Dit artikel onderzoekt hoe u een realtime-analyseplatform bouwt met AWS, mogelijke oplossingen evalueert en een stapsgewijze handleiding biedt voor het implementeren van een schaalbaar en betrouwbaar platform. Het bouwen van dit platform omvat drie stappen: gegevens opnemen, verwerken en query's uitvoeren. Realtime-analyse richt zich vaak op trends en patronen in de loop van de tijd - of het nu gaat om gebruikersgedrag of systeemprestaties.
Time-series data organiseert gebeurtenissen op natuurlijke wijze in volgorde, waardoor het eenvoudig is om de data van moment tot moment te analyseren. Time-series storage sluit perfect aan bij deze behoefte, waardoor applicaties de statistieken kunnen berekenen. AWS biedt tools zoals SQS, Lambda, Timestream en Quicksight die naadloos samenwerken om dit platform te bouwen.
Er zijn drie belangrijke onderdelen betrokken bij het bouwen van een realtime-analyseplatform
Visualisatie en query's : aangepaste dashboards of Quicksight kunnen worden geïntegreerd met Timestream voor visualisatie en inzichten
Het onderstaande diagram toont de architectuur van het analyseplatform
Amazon Timestream , de time-series database van AWS, is ontworpen om de uitdagingen van het efficiënt verwerken en analyseren van grote hoeveelheden data aan te gaan. Timestream is serverloos, schaalbaar en ideaal voor applicaties die realtime data-analyse vereisen. De belangrijkste functies zijn:
De cloudformatie (CFN)-sjabloon voor alle benodigde bronnen is te vinden in Github Repo .
Gegevensopname
Services kunnen relevante gebeurtenissen publiceren naar de SQS-wachtrij, die fungeert als berichtenwachtrij voor het systeem. Om de betrouwbaarheid te verbeteren, wordt een dead-letter-wachtrij (DLQ) geconfigureerd naast de primaire SQS-wachtrij. De gebeurtenissen die niet worden verwerkt, gaan naar DLQ na de drempelwaarde voor opnieuw proberen. Deze gebeurtenissen kunnen verder worden gebruikt voor foutopsporing, het afhandelen van fouten en onderzoeken.
Hieronder ziet u een fragment van de CFN-sjabloon voor het maken van de SQS-wachtrij en de bijbehorende DLQ:
EventQueueDLQ: Description: 'An DLQ queue that receives failed events' Type: AWS::SQS::Queue Properties: FifoQueue: true ContentBasedDeduplication: true QueueName: !Ref DLQQueueName SqsManagedSseEnabled: true VisibilityTimeout: 240 EventQueue: Description: 'An SQS queue that receives events' Type: 'AWS::SQS::Queue' Properties: QueueName: !Ref SQSQueueName FifoQueue: true ContentBasedDeduplication: true KmsMasterKeyId: alias/aws/sqs VisibilityTimeout: 240 RedrivePolicy: deadLetterTargetArn: !Sub ${EventQueueDLQ.Arn} maxReceiveCount: 5
Gegevensverwerking
De AWS Lambda-functie is geconfigureerd als de gegevensverwerker, verantwoordelijk voor het verwerken en afhandelen van gebeurtenissen die zijn gepubliceerd in de SQS-wachtrij. Het pusht de gebeurtenissen als metrics naar de Timestream-database na de verwerking.
Hieronder ziet u een fragment van de CFN-sjabloon voor Lambda en de toewijzing ervan aan SQS:
EventProcessorLambda: Type: 'AWS::Lambda::Function' Description: 'Lambda function that processes events from the SQS queue and writes to Timestream.' Properties: FunctionName: !Ref LambdaFunctionName Handler: 'index.lambda_handler' Role: !GetAtt LambdaExecutionRole.Arn Runtime: 'python3.12' MemorySize: 1024 Timeout: 120 Environment: Variables: TIMESTREAM_DATABASE_NAME: !Ref EventsDatabaseName TIMESTREAM_TABLE_NAME: !Ref EventsTableName Code: ZipFile: | # Lambda function code goes here SQSToLambdaEventSourceMapping: Type: 'AWS::Lambda::EventSourceMapping' Description: 'Maps the SQS queue as the event source for the Lambda function.' Properties: BatchSize: 10 EventSourceArn: !GetAtt EventQueue.Arn FunctionName: !GetAtt EventProcessorLambda.Arn Enabled: 'True'
Gegevensopslag
Amazon Timestream fungeert als de primaire dataopslag voor alle gebeurtenissen die gegenereerd worden via verschillende services. De setup omvat:
Hieronder ziet u het fragment voor de CFN-sjabloon om de Timestream-database en de tabel te maken:
EventsDatabase: Description: 'Timestream database to store event data' Type: 'AWS::Timestream::Database' Properties: DatabaseName: !Ref EventsDatabaseName KmsKeyId: alias/aws/timestream EventsTable: Description: 'Timestream table that stores event metrics' Type: 'AWS::Timestream::Table' DependsOn: EventsDatabase Properties: DatabaseName: !Ref EventsDatabase TableName: !Ref EventsTableName RetentionProperties: MemoryStoreRetentionPeriodInHours: 72 MagneticStoreRetentionPeriodInDays: 365
Visualisatie en query's
Vraag
Timestream biedt een queryconsole waarmee gebruikers query's op de tabel kunnen uitvoeren, bijvoorbeeld:
-- Get the 10 most recent metrics in the past 15 minutes. SELECT * FROM "events-db"."events-metrics" WHERE time between ago(15m) and now() ORDER BY time DESC LIMIT 10
Visualisatie
AWS biedt veel kant-en-klare integraties (bijv. QuickSight , Grafana ) met Timestream, waardoor u eenvoudig kunt analyseren, visualiseren en inzichten kunt verkrijgen.
Services kunnen de gebeurtenis in de volgende indeling naar SQS publiceren, waardoor de volledige verwerkingsstroom wordt geactiveerd:
{ "order_id": "test-order-1", "customer_id": "test-customer-1", "event_type": "order_success", "metric_value": 1 }
Deze architectuur biedt een eenvoudige en efficiënte manier om een schaalbaar en betrouwbaar analyseplatform te bouwen. Er zijn andere alternatieven, afhankelijk van specifieke behoeften, waaronder AWS Kinesis Streams voor gebeurtenisverwerking, Prometheus voor een gegevensopslag en S3+Athena voor batchverwerking en analyse.