3.9 KiB
RayLab Core Phase 2 --- Domain Model
Tujuan
Fase 2 mendefinisikan domain bisnis yang dimiliki RayLab Core beserta hubungan antar domain. Domain model menjadi dasar implementasi entity, service, API, dan database.
Prinsip Domain
- Domain mewakili konsep bisnis, bukan tabel database.
- Setiap domain memiliki tanggung jawab yang jelas.
- Domain saling berinteraksi melalui service, bukan akses langsung ke data domain lain.
- Seluruh aturan bisnis berada pada domain terkait.
Domain Utama
Identity
Mengelola identitas pengguna.
Entity
- User
- Profile
- Session
Tanggung Jawab
- Identitas pengguna
- Informasi profil
- Status sesi
Authorization
Mengelola hak akses sistem.
Entity
- Group
- Role
- Permission
- Domain Access
- Resource Access
- Special Access
Model IAM
User
↓
Group
↓
Role
↓
Permission
↓
Domain Access
↓
Resource Access
↓
Special Access
Penjelasan
Group adalah identitas organisasi utama.
Role merupakan kumpulan tanggung jawab.
Permission mendefinisikan aksi yang diizinkan.
Domain Access menentukan aplikasi atau domain yang dapat diakses.
Resource Access menentukan objek di dalam aplikasi yang boleh digunakan.
Special Access merupakan override khusus untuk user tertentu tanpa mengubah group atau role.
Registry
Entity:
- Application
- Service
- Domain
- Adapter
Berfungsi sebagai katalog seluruh layanan RayLab.
Configuration
Entity:
- Setting
- Setting Category
Digunakan untuk konfigurasi yang dapat diubah saat runtime.
Storage
Entity:
- Storage
- Volume
- Quota
Mengelola penyimpanan logis dan alokasi kapasitas.
Media
Entity:
- Library
- Folder Template
- Folder Mapping
- Folder Permission
Media Manager mengendalikan struktur media, sedangkan Jellyfin hanya membaca media yang telah disiapkan.
Audit
Entity:
- Audit Log
- Audit Category
- Audit Target
Mencatat seluruh aktivitas penting sistem.
Health
Entity:
- Health Check
- Service Status
Digunakan untuk memantau kesehatan layanan internal.
System
Entity:
- Job
- Notification
Digunakan untuk proses internal seperti background job dan notifikasi.
Relasi Antar Domain
Identity
│
└── Authorization
Authorization
│
├── Registry
├── Media
├── Storage
└── Dashboard
Registry
│
└── Adapter
Semua Domain
│
└── Audit
Aturan Domain
- Domain hanya memiliki satu tanggung jawab utama.
- Tidak ada duplikasi data antar domain.
- Setiap domain memiliki service sendiri.
- Entity hanya mewakili data dan aturan dasar domain.
- Komunikasi lintas domain dilakukan melalui service.
Hasil Akhir Fase 2
Pada akhir fase ini RayLab Core memiliki model domain yang menjadi acuan untuk:
- Desain database
- Layered Architecture
- API
- Implementasi modul
- Pengembangan fitur di masa depan