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.