Skip to content

Latest commit

 

History

History
87 lines (69 loc) · 3.53 KB

documentation.md

File metadata and controls

87 lines (69 loc) · 3.53 KB

Infrastructure Definition

1. User Service
   - Endpoint: /register
   - Database: users
   - RabbitMQ: Publishes to subscription_user_registration_queue and payment_user_registration_queue

2. Payment Service
   - Endpoint: /make-payment
   - Database: payment.users, payments
   - RabbitMQ:
     - Consumes from payment_queue
     - Publishes to notification_queue

3. Notification Service
   - RabbitMQ: Consumes from notification_queue
   - External: Email Service

4. Subscription Service
   - RabbitMQ:
     - Publishes to payment_queue
     - Publishes to notification_queue

5. RabbitMQ
   - Queue: subscription_user_registration_queue
   - Queue: payment_user_registration_queue
   - Queue: payment_queue
   - Queue: notification_queue

6. Databases
   - User Service Database: users
   - Payment Service Database: payment.users, payments

System Design Definition

System Overview:
A subscription management platform enabling users to extend EMI payment dates by paying a minimal charge. The platform is built using a microservices architecture that facilitates independent operation, resilience, and scalability.

Microservices:

  1. Userservice

    • Responsibilities: Manages user registration and profile updates.
    • Database: MongoDB (users collection).
    • Communication: Publishes user data to both subscription_user_registration_queue and payment_user_registration_queue.
  2. Paymentservice

    • Responsibilities: Manages payment processing, including EMI extensions.
    • Database: MongoDB (payments and payment.users collections).
    • Communication:
      • Consumes from payment_queue.
      • Publishes notifications directly to notification_queue.
  3. Notificationservice

    • Responsibilities: Sends notifications, such as payment confirmations and reminders.
    • Database: None (stateless).
    • Communication: Consumes from notification_queue and interfaces with an external email service.
  4. Subscriptionservice

    • Responsibilities: Manages all subscription-related operations, including renewal processing.
    • Communication:
      • Publishes payment data to payment_queue.
      • Publishes notification data to notification_queue.

Data Flow:

  1. User Registration:

    • User registers via userservice.
    • userservice creates a user entry in the users database.
    • userservice publishes user data to both subscription_user_registration_queue and payment_user_registration_queue.
  2. Payment Processing:

    • User initiates a payment via paymentservice.
    • paymentservice processes the payment, storing details in payments.
    • paymentservice retrieves user details from payment.users.
    • paymentservice publishes a notification to notification_queue.
  3. Subscription Management:

    • Subscription events trigger subscriptionservice.
    • subscriptionservice manages subscriptions and related EMI extensions.
    • Relevant data is published to payment_queue and notification_queue.
  4. Notification Dispatch:

    • notificationservice consumes messages from notification_queue.
    • Sends emails through an external service to users about their payment status or reminders.

This documentation outlines a streamlined flow, ensuring each service is designed to operate independently while communicating effectively through designated RabbitMQ queues. This architecture promotes robustness, scalability, and responsiveness within the subscription management platform.