7.2 KiB
7.2 KiB
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 |