backend system design
Adobe
Salesforce
Atlassian

Adobe System Design: Scalable Subscription Management

Topics:
Multi-Tenancy
Payment Processing
Relational Databases
Roles:
Software Engineer
Backend Engineer
Senior Software Engineer
Experience:
Mid Level
Senior
Staff

Question Description

You are asked to design a scalable backend subscription management system for a SaaS product that handles the complete subscription lifecycle: sign-ups, billing cycles, renewals, cancellations, upgrades/downgrades, and access enforcement.

Focus on a modular backend architecture with clear APIs for frontend clients and other services. Describe how you will integrate with payment gateways (e.g., Stripe) via webhooks and idempotent endpoints, store durable subscription and billing history, and emit events for downstream consumers (notifications, analytics, entitlement services). Explain how you will ensure strong consistency for billing operations (prevent double charges) while supporting high throughput and bursts.

High-level flow/stages you should cover:

  • User-facing APIs: create/retrieve/modify subscriptions with idempotency, validation, and rate limiting.
  • Payment integration: webhook handling, reconciliation, retries, and refund/proration rules.
  • Billing scheduler: reliable cron/worker-based renewals with distributed locks to avoid duplicate billing.
  • Event pipeline: publish subscription events to a message bus for notifications and access updates.
  • Data persistence: transactional relational schema for subscriptions and billing ledger, plus read-replicas and partitioning for scale.

Skill signals to demonstrate: distributed systems design (scalability, partitioning), transactional integrity for billing, secure payment handling (PCI considerations, tokenization), API design (idempotency, error handling), observability (SLA metrics, reconciliation), and multi-tenant data modeling. Be prepared to discuss trade-offs (strong vs. eventual consistency), failure modes, and migration strategies for plan changes or billing logic.

Common Follow-up Questions

  • How would you design the database schema for multi-tenant subscriptions to support tenant isolation, fast queries, and sharding?
  • Explain how you would guarantee exactly-once billing during renewals across distributed workers—what locking or coordination mechanism would you use?
  • How do you handle proration and refunds when a user upgrades or downgrades mid-cycle, and how does that affect invoicing and accounting records?
  • Describe how you'd secure payment flows and payment data to meet PCI-DSS constraints; what data do you store vs. tokenize at the payment gateway?
  • How would you design monitoring and automated reconciliation to detect missed payments, double charges, or webhook failures at scale?

Related Questions

1Design a payment reconciliation system for subscription billing and failed webhook events
2How to design an entitlement/access control service that enforces feature gates based on subscription tier
3Design a scalable webhook processing pipeline for payment provider events
4How to model billing ledgers and invoices in a relational database to support audits and reporting
5Design a subscription analytics dashboard: metrics, real-time vs batch aggregation, and alerting

Explore More Questions

Practice This Question with AI

Get real-time hints, detailed requirements, and insightful analysis of the question.

Adobe System Design: Scalable Subscription Management | Voker