পাঠ ২২ · ৩৩-এর মধ্যে · মডিউল ৩
Home / AI Courses / MLOps / Canary & blue-green

Canary ও blue-green deployment

Canary & blue-green for ML
৭ মিনিট পড়া উচ্চ · Advanced K8s YAML

এই পাঠে যা শিখবেন

  • Canary deployment workflow + monitoring
  • Blue-green vs canary trade-offs
  • Shadow deployment for ML-specific validation
  • Auto-rollback triggers

১ · কেন canary/blue-green

"Replace all pods at once" deployment risky — bad model serve all users immediately।

  • Canary: gradual exposure — issue detected early, blast radius small।
  • Blue-green: instant rollback — new env fail, switch back instantly।
  • Shadow: zero user-impact validation।

২ · Canary deployment

Pattern:

  1. Deploy v2 alongside v1 (small replica count)।
  2. Route 5% traffic → v2।
  3. Monitor 30 min: latency, error rate, accuracy।
  4. If healthy: increase to 25%, 50%, 100%।
  5. If unhealthy: rollback (route 0% to v2)।

৩ · Argo Rollouts canary

YAML · Argo Rollouts canary
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: sentiment-api
spec:
  replicas: 10
  strategy:
    canary:
      steps:
        - setWeight: 5         # 5% traffic to canary
        - pause: { duration: 30m }
        - analysis:
            templates:
              - templateName: success-rate
              - templateName: latency-p99
        - setWeight: 25
        - pause: { duration: 1h }
        - analysis: { templates: [{templateName: success-rate}] }
        - setWeight: 50
        - pause: { duration: 2h }
        - setWeight: 100
      analysis:
        templates:
          - templateName: success-rate
        startingStep: 1
        args: []
      trafficRouting:
        istio:
          virtualService: { name: sentiment-vs }
  selector:
    matchLabels: { app: sentiment-api }
  template:
    metadata:
      labels: { app: sentiment-api }
    spec:
      containers:
        - name: api
          image: registry/sentiment:v2.0
          # ... resources, probes
---
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata: { name: success-rate }
spec:
  metrics:
    - name: success-rate
      interval: 5m
      successCondition: result[0] >= 0.99
      failureLimit: 2
      provider:
        prometheus:
          address: http://prometheus.monitoring:9090
          query: |
            sum(rate(http_requests_total{job="sentiment-api",status=~"2.."}[5m]))
            /
            sum(rate(http_requests_total{job="sentiment-api"}[5m]))

    
Argo Rollouts step-based rollout। Pause duration manual review window। AnalysisTemplate Prometheus query-driven success criteria — fail-detected automatic rollback।

৪ · Blue-green

Two complete environments, switch traffic atomically।

  • Blue: current production, all traffic।
  • Green: new version deploy + warm up + smoke test।
  • Switch: ingress flip blue → green। Instant।
  • Rollback: flip back। Instant।

Pros: instant switch, instant rollback। Cons: 2× resource cost during deployment।

৫ · Shadow deployment (ML-specific)

New model receives copy of production requests; response logged, not returned। Silent compare।

  • Production unaffected — zero risk।
  • Real production data — best validation।
  • Distribution comparison — old vs new prediction।
  • Performance compare without committing।

৬ · Auto-rollback triggers

  • Error rate spike: > 1% threshold।
  • Latency degradation: p99 > SLA।
  • Accuracy drop: ground truth available — accuracy gate।
  • Drift signal: input/output distribution shift।
  • Business KPI: conversion drop, complaint spike।

৭ · Cost of running both

Canary 5% — 1 small extra pod। Blue-green — full duplicate (during deployment). Plan capacity।

Canary (gradual) vs Blue-green (atomic) Canary v1 (95%) 9 pods v2 (5%) 1 pod monitor → step 25% → 50% → 100% small blast radius slow rollout (hours) Blue-green Blue (v1, 100%) 10 pods active Green (v2, 0%) 10 pods warming switch atomic → ingress flip; rollback flip-back instant switch 2× resource cost Canary: gradual rollout, smaller blast radius, slower। Blue-green: atomic switch, instant rollback, double cost।
Canary — gradual %; Blue-green — atomic switch। Both options-এর shared risk: bad new version detected before full impact।
Bangladesh fintech canary preferred (gradual risk reduction)। Stateful service blue-green challenging — DB schema migration coordination।

ভাবনার প্রশ্ন

প্র ০১"Canary % split — কীভাবে decide?"

Initial weight + step progression — strategy।

Initial weight (5%, 10%, 1%):

  • Critical service (payment, fraud): 1% — minimum exposure।
  • Standard (recommendation): 5%।
  • Experimental (new feature): 10%।

Step progression:

  • 5% → 25% → 50% → 100%: aggressive, fast feedback।
  • 5% → 10% → 25% → 50% → 100%: cautious, more confidence।
  • 1% → 10% → 100%: bimodal — small or full।

Time per step:

  • 30 min — fast metric-driven (latency, error)।
  • 1-2 hours — moderate signal need।
  • 24 hours — slow signals (drift, conversion rate)।

Statistical sample size:

  • 5% × 30 min × 1000 RPS = 90,000 requests — strong signal।
  • 1% × 30 min × 100 RPS = 1,800 requests — weak। Increase % or duration।

BD fintech example:

  • bKash fraud canary: 1% → 5% → 25% → 100%, each step 2 hours, total 8 hours।
  • Conservative due to financial impact।

মূল উপলব্ধি: Canary % depends risk profile + signal volume + business tolerance। Critical service = small initial + slow steps; experimental = aggressive।

প্র ০২"Rollback — কোন metric trigger?"

Rollback decision metric-driven, fast।

Hard triggers (immediate rollback):

  • Error rate > 1% (vs < 0.1% baseline)।
  • p99 latency > 2× baseline।
  • Pod crash loop।

Soft triggers (review then decide):

  • Accuracy drop within tolerance but borderline।
  • Subgroup performance shift।
  • Business KPI dip।

Time-based:

  • Bad signal → wait 5 min (transient?) → still bad → rollback।
  • Avoid rolling back on flap।

ML-specific challenge — ground truth lag:

  • Accuracy needs labels — sometimes hours/days।
  • Proxy: prediction distribution drift।
  • Don't wait for accuracy — proxy + manual review।

BD context — fraud:

  • "Approval rate" sudden change → rollback signal।
  • Customer complaint spike → manual review।

Manual override:

  • Pause button — keep current % but stop progression।
  • Manual rollback — UI button।

মূল উপলব্ধি: Rollback triggers tiered — hard automatic, soft human-review। Speed matters; flap-protection too। Always have manual override।

প্র ০৩"Shadow deployment — practical implementation?"

Shadow = new model receives request copy; response discarded।

Implementation patterns:

(১) API gateway split:

  • Gateway sends request to v1 (return) + v2 (log only)।
  • Async — v2 result not block response।
  • Compare in offline batch।

(২) Service mesh shadow:

  • Istio shadow rule — copy traffic, ignore response।
  • Built-in, no custom code।

(৩) Backend mirror:

  • v1 service after responding, async fire to v2।
  • v2 result log to DB।
  • Periodic comparison report।

What to compare:

  • Prediction distribution (PSI between v1 vs v2)।
  • Latency profile।
  • Disagreement rate (top-1 prediction differ %)।
  • Error rate v2।

Cost:

  • 2× compute during shadow।
  • 2× external dependency calls (Feature Store)।
  • Storage for v2 predictions।

Use case:

  • Major architecture change — high uncertainty।
  • Schema-shift validation।
  • Pre-canary safety net।

BD example:

  • Daraz recommendation engine v1→v2: shadow 7 days, compare top-10 disagreement rate।
  • If disagreement < threshold → safe to canary।

মূল উপলব্ধি: Shadow = zero-risk validation। Cost duplicate; benefit confidence। Major changes worth।

প্র ০৪"Stateful ML service blue-green challenge?"

Stateful (DB, cache, session) service blue-green tricky।

Challenges:

  • DB schema — both versions same DB?
  • Cache — invalidate vs duplicate।
  • Session affinity — user mid-session, switch breaks।

Patterns:

Backwards-compatible schema:

  • v2 schema-additive only (no remove)।
  • Both versions same DB simultaneously।
  • Cleanup migration after v1 retired।

Feature flag-based:

  • Both versions deployed together।
  • Flag switch per-user — gradual feature rollout।
  • Independent of binary deployment।

Read-replica-based:

  • v2 read from replica during warm-up।
  • Switch to primary on go-live।

Stateful ML services examples:

  • RAG with vector DB (FAISS, Pinecone) — index version।
  • Recommendation with user state — session continuity।

BD fintech approach:

  • Canary preferred for stateful — gradual transition।
  • Blue-green only for stateless components (model serving)।
  • Stateful migration separate process।

মূল উপলব্ধি: Pure blue-green stateless service-এর জন্য। Stateful — additive schema, feature flag, gradual। ML serving usually stateless — easy। Vector DB stateful — careful।

অনুশীলন

  1. Argo Rollouts: Local k8s-এ Argo Rollouts install + sample canary deploy।

    Helm install argo-rollouts। Sample yaml apply। UI argocd-rollouts dashboard।

  2. Analysis: Custom AnalysisTemplate লিখুন — ML-specific (accuracy gate)।

    Prometheus query measure model accuracy metric। SuccessCondition based threshold।

  3. চিন্তা: bKash fraud model v2 deployment plan — canary steps, gates, rollback triggers।
    • Shadow 3 days disagreement check।
    • Canary 1% (2hr) → 5% (4hr) → 25% (8hr) → 100%।
    • Gates: error rate, latency, fraud detection rate, false positive rate।
    • Rollback triggers: any gate fail + manual review board approval if borderline।

আরও পড়ুন

পূর্ববর্তী পাঠ
পাঠ ২১ · CI/CD for ML