284 lines
7.2 KiB
Markdown
284 lines
7.2 KiB
Markdown
# Software Requirements Specification (SRS)
|
|
## AtlasOS - Calypso Backup Appliance
|
|
### Alpha Release
|
|
|
|
**Version:** 1.0.0-alpha
|
|
**Date:** 2025-01-XX
|
|
**Status:** In Development
|
|
|
|
---
|
|
|
|
## 1. Introduction
|
|
|
|
### 1.1 Purpose
|
|
This document provides a comprehensive Software Requirements Specification (SRS) for AtlasOS - Calypso, an enterprise-grade backup appliance management system. The system provides unified management for storage, backup, tape libraries, and system administration through a modern web-based interface.
|
|
|
|
### 1.2 Scope
|
|
Calypso is designed to manage:
|
|
- ZFS storage pools and datasets
|
|
- File sharing (SMB/CIFS and NFS)
|
|
- iSCSI block storage targets
|
|
- Physical and Virtual Tape Libraries (VTL)
|
|
- Backup job management (Bacula/Bareos integration)
|
|
- System monitoring and alerting
|
|
- User and access management (IAM)
|
|
- Object storage services
|
|
- Snapshot and replication management
|
|
|
|
### 1.3 Definitions, Acronyms, and Abbreviations
|
|
- **ZFS**: Zettabyte File System
|
|
- **SMB/CIFS**: Server Message Block / Common Internet File System
|
|
- **NFS**: Network File System
|
|
- **iSCSI**: Internet Small Computer Systems Interface
|
|
- **VTL**: Virtual Tape Library
|
|
- **IAM**: Identity and Access Management
|
|
- **RBAC**: Role-Based Access Control
|
|
- **API**: Application Programming Interface
|
|
- **REST**: Representational State Transfer
|
|
- **JWT**: JSON Web Token
|
|
- **SNMP**: Simple Network Management Protocol
|
|
- **NTP**: Network Time Protocol
|
|
|
|
### 1.4 References
|
|
- ZFS Documentation: https://openzfs.github.io/openzfs-docs/
|
|
- SCST Documentation: http://scst.sourceforge.net/
|
|
- Bacula Documentation: https://www.bacula.org/documentation/
|
|
- React Documentation: https://react.dev/
|
|
- Go Documentation: https://go.dev/doc/
|
|
|
|
### 1.5 Overview
|
|
This SRS is organized into the following sections:
|
|
- **SRS-01**: Storage Management
|
|
- **SRS-02**: File Sharing (SMB/NFS)
|
|
- **SRS-03**: iSCSI Management
|
|
- **SRS-04**: Tape Library Management
|
|
- **SRS-05**: Backup Management
|
|
- **SRS-06**: Object Storage
|
|
- **SRS-07**: Snapshot & Replication
|
|
- **SRS-08**: System Management
|
|
- **SRS-09**: Monitoring & Alerting
|
|
- **SRS-10**: Identity & Access Management
|
|
- **SRS-11**: User Interface & Experience
|
|
|
|
---
|
|
|
|
## 2. System Overview
|
|
|
|
### 2.1 System Architecture
|
|
Calypso follows a client-server architecture:
|
|
- **Frontend**: React-based Single Page Application (SPA)
|
|
- **Backend**: Go-based REST API server
|
|
- **Database**: PostgreSQL for persistent storage
|
|
- **External Services**: ZFS, SCST, Bacula/Bareos, MHVTL
|
|
|
|
### 2.2 Technology Stack
|
|
|
|
#### Frontend
|
|
- React 18 with TypeScript
|
|
- Vite for build tooling
|
|
- TailwindCSS for styling
|
|
- TanStack Query for data fetching
|
|
- React Router for navigation
|
|
- Zustand for state management
|
|
- Axios for HTTP requests
|
|
- Lucide React for icons
|
|
|
|
#### Backend
|
|
- Go 1.21+
|
|
- Gin web framework
|
|
- PostgreSQL database
|
|
- JWT for authentication
|
|
- Structured logging (zerolog)
|
|
|
|
### 2.3 Deployment Model
|
|
- Single-server deployment
|
|
- Systemd service management
|
|
- Reverse proxy support (nginx/caddy)
|
|
- WebSocket support for real-time updates
|
|
|
|
---
|
|
|
|
## 3. Functional Requirements
|
|
|
|
### 3.1 Authentication & Authorization
|
|
- User login/logout
|
|
- JWT-based session management
|
|
- Role-based access control (Admin, Operator, ReadOnly)
|
|
- Permission-based feature access
|
|
- Session timeout and refresh
|
|
|
|
### 3.2 Storage Management
|
|
- ZFS pool creation, deletion, and monitoring
|
|
- Dataset management (filesystems and volumes)
|
|
- Disk discovery and monitoring
|
|
- Storage repository management
|
|
- ARC statistics monitoring
|
|
|
|
### 3.3 File Sharing
|
|
- SMB/CIFS share creation and configuration
|
|
- NFS share creation and client management
|
|
- Share access control
|
|
- Mount point management
|
|
|
|
### 3.4 iSCSI Management
|
|
- iSCSI target creation and management
|
|
- LUN mapping and configuration
|
|
- Initiator access control
|
|
- Portal configuration
|
|
- Extent management
|
|
|
|
### 3.5 Tape Library Management
|
|
- Physical tape library discovery
|
|
- Virtual Tape Library (VTL) management
|
|
- Tape drive and slot management
|
|
- Media inventory
|
|
|
|
### 3.6 Backup Management
|
|
- Backup job creation and scheduling
|
|
- Bacula/Bareos integration
|
|
- Storage pool and volume management
|
|
- Job history and monitoring
|
|
- Client management
|
|
|
|
### 3.7 Object Storage
|
|
- S3-compatible bucket management
|
|
- Access policy configuration
|
|
- User and key management
|
|
- Usage monitoring
|
|
|
|
### 3.8 Snapshot & Replication
|
|
- ZFS snapshot creation and management
|
|
- Snapshot rollback and cloning
|
|
- Replication task configuration
|
|
- Remote replication management
|
|
|
|
### 3.9 System Management
|
|
- Network interface configuration
|
|
- Service management (start/stop/restart)
|
|
- NTP configuration
|
|
- SNMP configuration
|
|
- System logs viewing
|
|
- Terminal console access
|
|
- Feature license management
|
|
|
|
### 3.10 Monitoring & Alerting
|
|
- Real-time system metrics
|
|
- Storage health monitoring
|
|
- Network throughput monitoring
|
|
- Alert rule configuration
|
|
- Alert history and management
|
|
|
|
### 3.11 Identity & Access Management
|
|
- User account management
|
|
- Role management
|
|
- Permission assignment
|
|
- Group management
|
|
- User profile management
|
|
|
|
---
|
|
|
|
## 4. Non-Functional Requirements
|
|
|
|
### 4.1 Performance
|
|
- API response time < 200ms for read operations
|
|
- API response time < 1s for write operations
|
|
- Support for 100+ concurrent users
|
|
- Real-time metrics update every 5-30 seconds
|
|
|
|
### 4.2 Security
|
|
- HTTPS support
|
|
- JWT token expiration and refresh
|
|
- Password hashing (bcrypt)
|
|
- SQL injection prevention
|
|
- XSS protection
|
|
- CSRF protection
|
|
- Rate limiting
|
|
- Audit logging
|
|
|
|
### 4.3 Reliability
|
|
- Database transaction support
|
|
- Error handling and recovery
|
|
- Health check endpoints
|
|
- Graceful shutdown
|
|
|
|
### 4.4 Usability
|
|
- Responsive web design
|
|
- Dark theme support
|
|
- Intuitive navigation
|
|
- Real-time feedback
|
|
- Loading states
|
|
- Error messages
|
|
|
|
### 4.5 Maintainability
|
|
- Clean code architecture
|
|
- Comprehensive logging
|
|
- API documentation
|
|
- Code comments
|
|
- Modular design
|
|
|
|
---
|
|
|
|
## 5. System Constraints
|
|
|
|
### 5.1 Hardware Requirements
|
|
- Minimum: 4GB RAM, 2 CPU cores, 100GB storage
|
|
- Recommended: 8GB+ RAM, 4+ CPU cores, 500GB+ storage
|
|
|
|
### 5.2 Software Requirements
|
|
- Linux-based operating system (Ubuntu 24.04+)
|
|
- PostgreSQL 14+
|
|
- ZFS support
|
|
- SCST installed and configured
|
|
- Bacula/Bareos (optional, for backup features)
|
|
|
|
### 5.3 Network Requirements
|
|
- Network connectivity for remote access
|
|
- SSH access for system management
|
|
- Port 8080 (API) and 3000 (Frontend) accessible
|
|
|
|
---
|
|
|
|
## 6. Assumptions and Dependencies
|
|
|
|
### 6.1 Assumptions
|
|
- System has root/sudo access for ZFS and system operations
|
|
- Network interfaces are properly configured
|
|
- External services (Bacula, SCST) are installed and accessible
|
|
- Users have basic understanding of storage and backup concepts
|
|
|
|
### 6.2 Dependencies
|
|
- PostgreSQL database
|
|
- ZFS kernel module and tools
|
|
- SCST kernel module and tools
|
|
- Bacula/Bareos (for backup features)
|
|
- MHVTL (for VTL features)
|
|
|
|
---
|
|
|
|
## 7. Future Enhancements
|
|
|
|
### 7.1 Planned Features
|
|
- LDAP/Active Directory integration
|
|
- Multi-site replication
|
|
- Cloud backup integration
|
|
- Advanced encryption at rest
|
|
- WebSocket real-time updates
|
|
- Mobile responsive improvements
|
|
- Advanced reporting and analytics
|
|
|
|
### 7.2 Potential Enhancements
|
|
- Multi-tenant support
|
|
- API rate limiting per user
|
|
- Advanced backup scheduling
|
|
- Disaster recovery features
|
|
- Performance optimization tools
|
|
|
|
---
|
|
|
|
## Document History
|
|
|
|
| Version | Date | Author | Changes |
|
|
|---------|------|--------|---------|
|
|
| 1.0.0-alpha | 2025-01-XX | Development Team | Initial SRS document |
|
|
|