Skip to main content

spc--promotion--be

Overview

  • Namespace: spc--promotion--be
  • Purpose: Sapoche Promotion Management Backend - PRODUCTION
  • Age: ~389 days (since November 2023)
  • Status: Active - Promotion campaigns and discount management
  • Workloads: 3 deployments (all active)
  • Environment: PRODUCTION - Promotion and discount engine

Architecture

Promotion management system handling campaigns, discounts, and POS integration:

  • Main Application: REST API backend (2 replicas) - Good HA
  • Event Consumer: POS order event consumer (1 replica)
  • Worker: Batch publisher worker (1 replica)

Auto-Scaling Configuration

No Auto-Scaling Configured:

  • No HorizontalPodAutoscalers (HPAs)
  • No KEDA scaled objects
  • Fixed replica counts

Workload Categories

Main Application (1 deployment with good HA)

NameReplicasStatusPurpose
spc--promotion--be--app--prod2/2RunningPromotion API - Good HA

Event Consumer (1 deployment)

NameReplicasStatusPurpose
consumer-pos-order-event1/1RunningPOS order promotion events

Workers (1 deployment)

NameReplicasStatusPurpose
wrk--batch-publisher1/1RunningBatch promotion publisher

Services

NameTypeCluster IPPortsNodePortPurpose
spc--promotion--be--app--prodNodePort10.8.21.2068032276Promotion management API

Access & Management

View all resources:

kubectl get all -n spc--promotion--be

Check main application:

# View app pods (2 replicas)
kubectl get pods -n spc--promotion--be | grep "app--prod"

# View logs from all replicas
kubectl logs -f deployment/spc--promotion--be--app--prod -n spc--promotion--be

Check consumer and worker:

# POS order consumer
kubectl logs -f deployment/spc--promotion--be--consumer-pos-order-event--prod -n spc--promotion--be

# Batch publisher worker
kubectl logs -f deployment/spc--promotion--be--wrk--batch-publisher--prod -n spc--promotion--be

Restart services:

# Restart main app
kubectl rollout restart deployment/spc--promotion--be--app--prod -n spc--promotion--be

# Restart consumer
kubectl rollout restart deployment/spc--promotion--be--consumer-pos-order-event--prod -n spc--promotion--be

# Restart worker
kubectl rollout restart deployment/spc--promotion--be--wrk--batch-publisher--prod -n spc--promotion--be

# Restart all
kubectl rollout restart deployment --all -n spc--promotion--be

Monitoring

Resource usage:

kubectl top pods -n spc--promotion--be --sort-by=memory
kubectl top pods -n spc--promotion--be --sort-by=cpu

Events:

kubectl get events -n spc--promotion--be --sort-by='.lastTimestamp' | head -20

Data Flow

Promotion Management Request

spc--promotion--be--app--prod (NodePort 32276)

Promotion Management API (2 replicas)

Database (external)

Events Published to Message Queue
├─ POS Order Events → consumer-pos-order-event
└─ Batch Publishing → wrk--batch-publisher

Promotion campaigns and discounts applied

Promotion Management Workflow

1. Promotion Management API (Good HA)

  • 2 replicas provide good redundancy
  • Promotion campaign management
  • Discount configuration
  • Promotion rules engine
  • Coupon code management
  • Campaign scheduling
  • Promotion eligibility checks

2. POS Order Event Consumer

  • consumer-pos-order-event processes POS order promotions
  • Apply promotions to orders
  • Discount calculations
  • Coupon validation
  • Promotion usage tracking
  • Real-time promotion application

3. Batch Publisher Worker

  • wrk--batch-publisher handles batch promotion publishing
  • Batch discount updates
  • Bulk promotion campaigns
  • Scheduled promotion activations
  • Mass coupon generation
  • Promotion report generation

Production Considerations

High Availability

Good Main API Configuration:

  • Main API: 2 replicas (good HA)
  • Very active development (3 days 2 hours ago)
  • Age: ~389 days (~1 year, mature)

Single Points of Failure:

  • POS order consumer: 1 replica (critical for order discounts)
  • Batch publisher: 1 replica (less critical, batch operations)

Recommendations

  1. Maintain Current HA:

    • Main API: 2 replicas (good)
    • Well-established (~1 year in production)
    • Very active updates (3d2h ago)
  2. Consumer Resilience:

    • consumer-pos-order-event: 1 replica (consider 2+ for promotion reliability)
    • Critical for order-time discounts and promotions
    • Consider HPA or KEDA for order volume spikes
  3. Worker Resilience (Optional):

    • wrk--batch-publisher: 1 replica (acceptable for batch operations)
    • Less critical than real-time consumer
    • Could scale to 2 for large campaigns
  4. Consider Auto-Scaling:

    • Main API: Add HPA (2-5 replicas based on traffic)
    • POS consumer: Consider KEDA for order event queue
    • Especially during high-volume promotion periods
  5. Recent Activity:

    • Very active: Updated 3 days 2 hours ago
    • Frequent updates (multiple in past month)
    • Active promotion development
  6. Monitoring Priorities:

    • Promotion application success rate
    • POS order consumer lag
    • Discount calculation accuracy
    • Coupon validation performance
    • Campaign activation timing

Troubleshooting

Main API issues:

# Check both API pods
kubectl get pods -n spc--promotion--be | grep "app--prod"

# Check logs from all replicas
kubectl logs deployment/spc--promotion--be--app--prod -n spc--promotion--be --all-containers=true --tail=100

# Test API endpoint
kubectl port-forward -n spc--promotion--be service/spc--promotion--be--app--prod 8080:80

POS order consumer issues:

# Check consumer
kubectl logs -f deployment/spc--promotion--be--consumer-pos-order-event--prod -n spc--promotion--be

# Check for promotion errors
kubectl logs deployment/spc--promotion--be--consumer-pos-order-event--prod -n spc--promotion--be --tail=100 | grep -i "error\|promotion\|discount\|fail"

# Restart consumer
kubectl rollout restart deployment/spc--promotion--be--consumer-pos-order-event--prod -n spc--promotion--be

Batch publisher issues:

# Check batch publisher
kubectl logs -f deployment/spc--promotion--be--wrk--batch-publisher--prod -n spc--promotion--be

# Check for publishing errors
kubectl logs deployment/spc--promotion--be--wrk--batch-publisher--prod -n spc--promotion--be --tail=100 | grep -i "error\|batch\|publish\|fail"

# Restart worker
kubectl rollout restart deployment/spc--promotion--be--wrk--batch-publisher--prod -n spc--promotion--be

Performance Metrics

Current Scale

  • Main API: 2 replicas - Good HA
  • POS Consumer: 1 replica (consider increasing)
  • Batch Worker: 1 replica (acceptable for batch)
  • Total Active Pods: 4 pods

Stability

  • Namespace Age: ~389 days (~1 year, mature)
  • Recent Update: 3 days 2 hours ago (very active)
  • Main API: Fixed 2 replicas (good HA)
  • Critical Consumer: POS order consumer at 1 replica (consider increasing)