
Figure: Architecture Batch-base Clickstream Analytics Platform.
This workshop implements a Batch-Based Clickstream Analytics Platform for an e-commerce website selling computer products.
The system collects clickstream events from the frontend, stores raw JSON data in Amazon S3, processes events via scheduled ETL (AWS Lambda + EventBridge), and loads analytical data into a dedicated PostgreSQL Data Warehouse on EC2 inside a private subnet.
Analytics dashboards are built using R Shiny, running on the same EC2 instance as the Data Warehouse, and accessed via AWS Systems Manager Session Manager.
The platform is engineered with:
Frontend & OLTP Domain
ClickSteam.NextJS hosted on AWS Amplify HostingSBW_EC2_WebDB (public subnet)clickstream_web (schema public)5432Ingestion & Data Lake Domain
clickstream-http-apiPOST /clickstreamclickstream-lambda-ingestclickstream-s3-ingestevents/YYYY/MM/DD/event-<uuid>.jsonRAW_BUCKET = clickstream-s3-ingestAnalytics & Data Warehouse Domain
Private EC2 for DWH + Shiny: SBW_EC2_ShinyDWH (private subnet 10.0.128.0/20)
clickstream_dwclickstream_events with fields:event_id, event_timestamp, event_nameuser_id, user_login_state, identity_source, client_id, session_id, is_first_visitcontext_product_id, context_product_name, context_product_category, context_product_brandcontext_product_price, context_product_discount_price, context_product_url_path3838, web path /sbw_dashboardLambda ETL: SBW_Lamda_ETL (VPC-enabled)
clickstream-s3-ingestclickstream_dw.public.clickstream_eventsEventBridge Rule: SBW_ETL_HOURLY_RULE
rate(1 hour)VPC & Networking
10.0.0.0/1610.0.0.0/20 → SBW_Project-subnet-public1-ap-southeast-1a (OLTP EC2)10.0.128.0/20 → SBW_Project-subnet-private1-ap-southeast-1a (DW, Shiny, ETL Lambda)Admin Access (SSM)
localPort = 3838portNumber = 3838http://localhost:3838/sbw_dashboard