Requirements - julianvb03/MOM-Implementation GitHub Wiki

Requirements

Content Table

Functional Requirements

The following functional requirements define the core capabilities of the MOM Server, a distributed messaging system built with FastAPI, Redis, gRPC, ZooKeeper, and NGINX, designed to manage queues and topics with administrative and user interactions.

FR01 - Create Queues or Topics (Admin)

Field Value
ID FR01
Name Create Queues or Topics
Actor Administrator
Version 1.0
Epic Message Handling
Priority High
  • Description: As an Administrator, I must be able to create message queues or topics to facilitate asynchronous communication within the system.

FR02 - User Authentication

Field Value
ID FR02
Name User Authentication
Actor Administrator, User
Version 1.0
Epic Security
Priority High
  • Description: As an Administrator or User, I must be able to authenticate with the system to securely access its features.

FR03 - User Subscription Queue/Topic

Field Value
ID FR03
Name User Subscription Queue/Topic
Actor User
Version 1.0
Epic Message Handling
Priority Medium
  • Description: As a User, I must be able to subscribe to queues or topics to receive messages published to them.

FR04 - User Unsubscription Queue/Topic

Field Value
ID FR04
Name User Unsubscription Queue/Topic
Actor User
Version 1.0
Epic Message Handling
Priority Medium
  • Description: As a User, I must be able to unsubscribe from queues or topics to stop receiving messages from them.

FR05 - User Publish Message Queue/Topic

Field Value
ID FR05
Name User Publish Message Queue/Topic
Actor User
Version 1.0
Epic Message Handling
Priority High
  • Description: As a User, I must be able to publish messages to queues or topics for distribution to subscribers or consumers.

FR06 - User Consume Message Queue/Topic

Field Value
ID FR06
Name User Consume Message Queue/Topic
Actor User
Version 1.0
Epic Message Handling
Priority High
  • Description: As a User, I must be able to consume messages from queues or topics to process or retrieve them.

Non-Functional Requirements

The following non-functional requirements ensure the MOM Server meets quality standards, reflecting its distributed architecture with FastAPI, Redis, gRPC replication, ZooKeeper coordination, and NGINX load balancing across three AWS EC2 instances.

NFR01 - Availability

Field Value
ID NFR01
Name Availability
Category Reliability
Priority High
  • Description: The system must maintain high availability through replication and failover mechanisms to ensure continuous operation across three instances, minimizing downtime.

NFR02 - Replication

Field Value
ID NFR02
Name Replication
Category Reliability
Priority High
  • Description: The system must replicate queue and topic data across all instances using gRPC to ensure data consistency and support availability.

NFR03 - Partitioning

Field Value
ID NFR03
Name Partitioning
Category Scalability
Priority Medium
  • Description: The system must support partitioning of queues and topics across instances, managed by ZooKeeper, to distribute load and enable scalability.

NFR04 - Security (Authentication)

Field Value
ID NFR04
Name Security (Authentication)
Category Protection
Priority High
  • Description: The system must enforce secure authentication for all users and administrators, protecting access to queues, topics, and administrative functions.

NFR05 - Error Handling (Failover and Failback)

Field Value
ID NFR05
Name Error Handling (Failover and Failback)
Category Reliability
Priority High
  • Description: The system must handle errors through failover (reassigning queues/topics to other instances via ZooKeeper) and failback (restoring data from centralized backup Redis) to ensure resilience.