Skip to content

Serverless Event Flow

AWS Architecture Visualization from index.yml

Section titled “AWS Architecture Visualization from index.yml”

This diagram represents the event-driven architecture defined in the index.yml file. It shows how data flows from a DynamoDB table through various AWS services.

graph TD;
%% Nodes Definition
DDB["DB: casino-bets-production"];
STR["Stream (2023-11-23T14:32:11.298)"];
L_StreamProcessor["λ: CasinoBetsProducer"];
SNS_MainFanout["SNS: CasinoGameEvents-production.fifo"];
%% Path 1: Bet Settled
SQS_BetSettled["SQS: CasinoBetSettledProducer-prod"];
L_BetSettled["λ: CasinoBetsSettledProducer"];
SNS_BongoEvents["SNS: BongoEvents-production"];
%% Path 2: Metrics
SQS_Metrics["SQS: serverless-casino-metrics (queue)"];
L_Metrics["λ: serverless-casino-metrics (lambda)"];
TS_Metrics["Timestream: serverless-casino-metrics (db)"];
%% Path 3: Transaction Proxy
SQS_TxProxy["SQS: TransactionProxy-prod"];
L_TxProxy["λ: TransactionProxy"];
%% Path 4: Firehose Writer
SQS_FirehoseWriter["SQS: FirehoseWriter-prod"];
L_FirehoseWriter["λ: casinobets-to-firehose"];
FH_DataSink["Kinesis Firehose"];
%% Path 5: Transaction Writer
SQS_TxWriter["SQS: TransactionWriter-prod"];
L_TxWriter["λ: TransactionWriter"];
SQL_TxData["MSSQL: BB_Transactions_Stream"];
%% Path 6: History Writer (Standard)
SQS_HistoryStd["SQS: HistoryWriter-prod"];
%% Path 7: History Writer (FIFO)
SQS_HistoryFifo["SQS: HistoryWriter-prod.fifo"];
L_HistoryWriter["λ: HistoryWriter"];
SNS_GamePopulated["SNS: CasinoGamePopulated-production.fifo"];
%% Connections
DDB --> STR;
STR --> L_StreamProcessor;
L_StreamProcessor -->|"publishes to"| SNS_MainFanout;
SNS_MainFanout --> SQS_BetSettled;
SQS_BetSettled --> L_BetSettled;
L_BetSettled -->|"publishes to"| SNS_BongoEvents;
SNS_MainFanout --> SQS_Metrics;
SQS_Metrics --> L_Metrics;
L_Metrics -->|"writes to"| TS_Metrics;
SNS_MainFanout --> SQS_TxProxy;
SQS_TxProxy --> L_TxProxy;
SNS_MainFanout --> SQS_FirehoseWriter;
SQS_FirehoseWriter --> L_FirehoseWriter;
L_FirehoseWriter -->|"writes to"| FH_DataSink;
SNS_MainFanout --> SQS_TxWriter;
SQS_TxWriter --> L_TxWriter;
L_TxWriter -->|"writes to"| SQL_TxData;
%% No Lambda defined for this SQS in the YAML
SNS_MainFanout --> SQS_HistoryStd;
SNS_MainFanout --> SQS_HistoryFifo;
SQS_HistoryFifo --> L_HistoryWriter;
L_HistoryWriter -->|"publishes to"| SNS_GamePopulated;
%% Styling
classDef dynamodb fill:#2E73B8,stroke:#1E5288,color:#fff,rx:5,ry:5;
classDef stream fill:#4CAF50,stroke:#388E3C,color:#fff,rx:5,ry:5;
classDef lambda fill:#FF9900,stroke:#E68A00,color:#000,rx:5,ry:5;
classDef sns fill:#D82C20,stroke:#B71C1C,color:#fff,rx:5,ry:5;
classDef sqs fill:#9C27B0,stroke:#7B1FA2,color:#fff,rx:5,ry:5;
classDef timestream fill:#00BCD4,stroke:#0097A7,color:#000,rx:5,ry:5;
classDef mssql fill:#795548,stroke:#5D4037,color:#fff,rx:5,ry:5;
classDef firehose fill:#FF5722,stroke:#E64A19,color:#fff,rx:5,ry:5;
class DDB dynamodb;
class STR stream;
class L_StreamProcessor,L_BetSettled,L_Metrics,L_TxProxy,L_FirehoseWriter,L_TxWriter,L_HistoryWriter lambda;
class SNS_MainFanout,SNS_BongoEvents,SNS_GamePopulated sns;
class SQS_BetSettled,SQS_Metrics,SQS_TxProxy,SQS_FirehoseWriter,SQS_TxWriter,SQS_HistoryStd,SQS_HistoryFifo sqs;
class TS_Metrics timestream;
class SQL_TxData mssql;
class FH_DataSink firehose;
  • DB: DynamoDB Table
  • Stream: DynamoDB Stream / Kinesis Stream
  • λ: AWS Lambda Function
  • SNS: AWS Simple Notification Service Topic
  • SQS: AWS Simple Queue Service Queue
  • Timestream: AWS Timestream Database
  • MSSQL: Microsoft SQL Server Database
  • Kinesis Firehose: AWS Kinesis Data Firehose (implied destination)
  • The Lambda function names in the diagram (e.g., “CasinoBetsProducer”) are shortened versions of the names found in the YAML (e.g., BB_GamingEventFunctions_CasinoBetsProducer-production:production).
  • The SQS queue SQS: HistoryWriter-prod does not have a Lambda function explicitly defined as its consumer in the provided YAML structure, so it’s shown as a terminal point from the main SNS fan-out in this diagram.
  • The “Kinesis Firehose” node for the FirehoseWriter-prod path is an implied destination, as Lambda functions writing to Firehose are common.