← Engineering Intelligence Hub Himanshu Jain · Director of Software Engineering LinkedIn
GraphLens/ Pricing and Promotions Platform
10 repos live
9 Critical Alerts
Platform risk: HIGH
🌐
Distributed Platform Architecture Map
10 ServicesMulti-Layer3 Critical Paths
UI / GATEWAY LAYER PRICING & COMMERCE CORE MESSAGING & ENGAGEMENT DATA, ML & INFRASTRUCTURE pricing-control-center-ui React · ILS CSV Upload dynamic-pricing-nginx Nginx · Reverse proxy · mTLS badges Trending badge UI Badges-Trending-Calc Trending score engine dynamic_pricing Java 21 · Tier-1 · GCP+AWS PCC JTier ILS · Custom ILS 11 Quartz jobs incentive-service 22K nodes · Tier-1 subscription -programs-app KillBill · Membership message-service Campaign · 8,821 nodes Kafka / mBus Event bus · 5 topics ActiveMQ Artemis Rocketman · Regla Email · Push delivery machine-learning-toolkit Airflow · Bayesian · SageMaker min-price · elasticity · embed EDW / Janus BigQuery · DataProc · Hive Cassandra / Bigtable User qualifications · CTA MySQL / GDS Price rules · campaign meta Pricing flow ILS / control Event/async Incentive dep ML feedback
Impact Analysis Simulator
Select a repository to analyze blast radius
Repository Impact Simulator
Click any repository to visualize downstream impact, dependent APIs, affected workflows, and deployment risk score.
dynamic_pricing
incentive-service
message-service
subscription-programs-app
pricing-control-center-jtier
pricing-control-center-ui
machine-learning-toolkit
badges
Badges-Trending-Calculator
dynamic-pricing-nginx
Affected Downstream Services
Dependent APIs & Workflows
Impacted Workflows
-
Score
Deployment Risk
Runtime Criticality
Blast Radius
Recovery Complexity
⚠️
Critical Runtime Dependencies
10 services · 3 Tier-1
RepositoryTierNodesEdgesDirect CallersCheckout PathGraph CentralityBlast Radius
incentive-service Tier-1 22,34647,303 checkout · subscription · message · PCC ● Yes
CRITICAL
dynamic_pricing Tier-1 6,20413,521 TPIS · VIS · PCC · GAPI ● Indirect
CRITICAL
message-service Tier-2 8,82118,230 Rocketman · Regla · Tetris — No
HIGH
subscription-programs-app Tier-2 2,4177,608 incentive-svc · KillBill · orders ● Yes
HIGH
pricing-control-center-jtier Tier-2 1,3602,704 dynamic_pricing · VIS · Hive — No
HIGH
machine-learning-toolkit Tier-3 420424 dynamic_pricing · PCC — No
MEDIUM
pricing-control-center-ui Tier-3 267236 PCC JTier · pricing-svc — No
MEDIUM
badges Tier-4 Badges-Trending-Calculator — No
LOW
dynamic-pricing-nginx Tier-2 dynamic_pricing ● Proxy
MEDIUM
💰
Pricing & Incentive Interaction Flows
End-to-end pricing lifecycle
Complete request path from user interaction through pricing resolution, incentive evaluation, and subscription eligibility check.
1
User/GAPI
Price request · Akamai CDN · HB mTLS routing
Entry
2
Nginx Proxy
dynamic-pricing-nginx · TLS termination · rate limit
<3ms
3
dynamic_pricing
CurrentPriceService · RPO flags · BulkPrice V2
15–35ms
4
incentive-service
EligibilityEval · CTAOrchestrator · Discount rules
10–40ms ⚠
5
PCC JTier
ILS schedule check · CheckForPendingSalesJob
async
6
subscription-prg
Membership eligibility · KillBill plan check
if subscribed
7
ML Toolkit
min-price floor · Bayesian elasticity → Pricing API
offline feed
8
Response
Price + discount + CTA · JSON assembly
<5ms
🔴
dynamic_pricing is a central dependency across pricing workflows
dynamic_pricing sits at the convergence of 5 upstream callers (TPIS, VIS, GAPI, PCC JTier, ML Toolkit) and 4 downstream consumers. Any deployment or degradation cascades across the entire pricing pipeline including Nginx, the ILS control flow, and the email personalisation path.
dynamic_pricingTPISVISPCC JTierML Toolkit
⚠️
subscription-programs-app depends on pricing eligibility calculations
subscription-programs-app's largest community (#0, 78 nodes) is dedicated entirely to calling incentive-service. Membership activation, KillBill callback handling, and plan enrollment all gate on incentive eligibility — making incentive-service an implicit subscription runtime dependency.
subscription-programs-appincentive-serviceMembership gate
💥
Failure Blast Radius
Platform-wide view
Propagation of a Tier-1 incentive-service outage across the platform.
🎁
incentive-service outage
Origin failure
T=0
↓ propagates to
checkout-flowCRITICAL
subscription-prgCRITICAL
message-serviceHIGH
dynamic_pricingHIGH
PCC JTier (ILS)MEDIUM
Rocketman (email)MEDIUM
PCC UI (read-only)LOW
ML Toolkit (DAGs)LOW
💡
message-service amplifies downstream notification traffic
An incentive-service outage causes message-service to receive empty incentive responses and retry — tripling outbound Rocketman traffic via the retry ladder while holding open 1000+/min connections.
Event-Driven Communication
Kafka · mBus · GCS
Publishers
💲
dynamic_pricing
Publishes price change events
JMS
🎁
incentive-service
Order lifecycle events
mBus
📨
message-service
Campaign logger output
mBus
📦
AMS / VIS
Audience + inventory updates
Kafka
Message Bus
ActiveMQ + Kafka
jms.topic.dynamic.pricing.update
jms.topic.retail_price_events
jms.topic.program_price_events
audience_ams_pa_create
jms.topic.campaign.events
Subscribers
🎁
incentive-service
Consumes price events for CTA
consume
📨
message-service
Audience refresh trigger
consume
🔄
subscription-programs
InventoryUnits events
consume
📊
EDW / Janus
All topics → data warehouse
stream
🧠
Machine Learning Prediction Pipeline
machine-learning-toolkit · 3 models · GCP Composer
ML models trained and served by machine-learning-toolkit that feed directly into pricing and incentive decisions.
📊
Data Sources
Hive/EDW · Janus events · MDS · Teradata
🔄
Airflow DAGs
Cloud Composer · 11 DAGs · min-price + elasticity
🧮
Bayesian STAN
model_pred_v12.stan · hierarchical prior · WMAPE <15%
📈
Elasticity Table
median_bayesian_elasticity · BigQuery output
💲
dynamic_pricing
min-price floor via Pricing Service API POST
🎁
incentive-service
Sellout + deal feed models inform discount eligibility
📍
Location Embed
supply_training_table → deal-feed ML model feed
🤖
machine-learning-toolkit contributes to pricing optimization decisions
ML toolkit DAGs run on Google Cloud Composer and feed min-price floors directly to dynamic_pricing via the Pricing Service API. Bayesian elasticity coefficients inform ILS scheduling in PCC JTier. A DAG failure or Hive upstream data quality issue causes silent price floor miscalculation with no immediate alert.
Bayesian STANmin-price DAGdynamic_pricingPCC JTiersilent failure risk
🏢
Service Ownership Boundaries
4 squads · P&P Engineering
💰 Pricing & Promotions — Core
💲dynamic_pricingTier-1 · GCP+AWS
⚙️dynamic-pricing-nginxProxy · Tier-2
🎛️pricing-control-center-jtierILS · Quartz
🖥️pricing-control-center-uiReact · SOX
🎁 Incentives & Subscriptions
🎁incentive-serviceTier-1 · 22K nodes
🔄subscription-programs-appKillBill · Tier-2
📨 CRM & Messaging
📨message-serviceCampaign · Tier-2
🧠 Data Science (PnP DS)
🧠machine-learning-toolkitAirflow · GCP
🏷️ Discovery & Badges
🏷️badgesTrending UI
🔢Badges-Trending-CalculatorScore engine
🚨
High-Risk Architectural Areas
9 risks · Platform-wide
Incentive Checkout Coupling
Critical
incentive-service is called synchronously in the checkout hot path with no circuit breaker from subscription-programs-app or message-service. Single outage blocks orders, membership activation, and email personalisation simultaneously.
checkoutno circuit breaker3 consumers
ML→Pricing Silent Failure
High
ML Toolkit DAG failures cause silent min-price miscalculation in dynamic_pricing — no immediate Grafana alert is configured for DAG failures that affect the Pricing Service API feed. Data quality degradation is invisible to oncall.
machine-learning-toolkitsilent failuremin-price
Bidirectional PCC↔Pricing
Critical
dynamic_pricing calls PCC JTier for ILS scheduling AND PCC JTier calls dynamic_pricing for price resolution — a bidirectional circular dependency that creates cascading failure modes. No anti-corruption layer exists between them.
circular depPCC JTierdynamic_pricing
Message Service Retry Storms
High
message-service has no DLQ for Rocketman delivery failures. Failed messages are retried 3× then silently dropped. Under Rocketman degradation, retry load amplifies to 3× normal outbound traffic — confirmed blast radius for notification systems.
no DLQRocketmanretry amplification
Audience Pool Starvation
High
incentive-service BulkQualifyCassandraCreator runs synchronous per-user SELECT in a 2-thread pool. Under large audience loads, pool starvation blocks the Akka dispatcher and causes AMS WS 30s timeout cascade — confirmed root cause of SVC-8782.
2-thread poolCassandraSVC-8782
No Redis Lock on Schedulers
High
Both message-service and incentive-service run background jobs on every pod simultaneously with no distributed lock. Under N-pod deployments, N×concurrent audience imports and campaign loggers hit the same Cassandra/GCS write paths — confirmed anti-pattern.
no Redis lockImportAudienceActormulti-pod
Membership God-Object
High
Membership (degree 197, betweenness 0.137) in subscription-programs-app bridges 30+ communities. Any NPE, schema change, or method rename propagates breakage across the entire service graph with zero isolation. Confirmed structural god-object.
Membership.java30+ communitiessubscription-programs
MySQL BoneCP Exhaustion
High
dynamic_pricing uses BoneCP (unmaintained) with minimal partition size. Concurrent bulk requests from TPIS + VIS exhaust the pool before new connections are provisioned — P99 spikes to 80ms. SEVERE Grafana alert firing in us-central1.
BoneCPdynamic_pricing80ms p99
Vendor Bundle False Metrics
Medium
Minified vendor bundles (jQuery DataTables, Swagger UI) in message-service and incentive-service create false god-nodes (degree 719, 704) that distort architectural metrics and community detection in graphify reports.
false god nodesvendors-bundle.jsgraph noise
📊
Runtime Bottleneck Detection
Cross-service P99 analysis
ServiceComponentP50P99AlertRoot CauseRisk
dynamic_pricingMySQL BoneCP pool12ms80ms 🔴SEVEREPool starvation
incentive-serviceCassandra byKey() audience18ms120ms 🔴SEVERE2-thread pool starvation
message-service/api/getemailmessages12ms50ms 🔴HIGHincentive-svc sync call
incentive-serviceCTAOrchestratorActor14ms45ms ⚠WARNRedis miss → MySQL
dynamic_pricingincentive-svc call15ms45ms ⚠WARNSync · no timeout
ML ToolkitBayesian STAN training4h8hOKn1-standard-96 · expected
🔮
Platform Intelligence Insights
AI-derived · graph-wide analysis
🔴
dynamic_pricing is a central dependency across pricing workflows
Sits at the convergence point of UI (PCC), Nginx proxy, ML min-price feed, ILS scheduler (PCC JTier), VIS/TPIS consumers, and the incentive discount path. A deployment window must coordinate across 6+ teams.
dynamic_pricing6 consumers3 publishers
📨
message-service amplifies downstream notification traffic
No DLQ + no circuit breaker on incentive-svc path means message-service acts as a traffic multiplier under degradation — retries × 3 per failed message × N concurrent campaigns = potential 10× traffic spike to Rocketman.
message-serviceRocketmanretry amplification
🧠
machine-learning-toolkit contributes to pricing optimization decisions
Bayesian elasticity model output feeds directly into dynamic_pricing price floors. Min-price DAG failures are currently invisible to oncall. Recommend adding Airflow DAG SLA alerts that page oncall@example.com on missed runs.
machine-learning-toolkitmin-price floorBayesian
🔄
subscription-programs-app depends on pricing eligibility calculations
Membership activation gates on incentive-service eligibility evaluation. An incentive outage blocks subscription plan enrollment and KillBill callback processing — converting a pricing service outage into a subscription revenue loss event.
subscription-programs-appKillBillMembership activation
dynamic-pricing-nginx correctly isolates the pricing API surface
Nginx proxy layer (TLS termination, rate limiting, mTLS routing) provides clean isolation of dynamic_pricing from direct public exposure. Deployed separately from the application service — correct separation of concerns.
dynamic-pricing-nginxmTLScorrect isolation
🏷️
badges ecosystem operates independently with low blast radius
badges + Badges-Trending-Calculator form a self-contained subsystem with minimal upstream dependencies. No runtime coupling to checkout or pricing critical paths — lowest blast radius of all 10 repositories.
badgesBadges-Trending-Calculatorisolated
GraphLens Platform Intelligence · Pricing and Promotions Platform · Generated 2026-05-13 · graphifyy v1.26.5 · Groupon P&P Engineering
Platform graph basis: 42,479 total nodes · 96,397 total edges across 10 repositories + 42 Groupon Architecture Overview docs