Mode Shared Memory

App SupervisorEnterprise Edition+

Pengantar

Saat pengguna ingin memisahkan bisnis pada level aplikasi, tetapi tidak ingin memperkenalkan arsitektur deployment dan operasi yang kompleks, dapat menggunakan mode multi-app shared memory.

Dalam mode ini, satu instance NocoBase dapat menjalankan beberapa aplikasi secara bersamaan. Setiap aplikasi independen, dapat terhubung ke database independen, dapat dibuat, dijalankan, dan dihentikan secara terpisah, tetapi mereka berbagi proses dan ruang memory yang sama, pengguna tetap hanya perlu memelihara satu instance NocoBase.

Manual Penggunaan

Konfigurasi Environment Variable

Sebelum menggunakan fitur multi-app, pastikan environment variable berikut diatur saat startup NocoBase:

APP_DISCOVERY_ADAPTER=local
APP_PROCESS_ADAPTER=local

Pembuatan Aplikasi

Klik "Application Supervisor" di menu System Settings, masuk ke halaman manajemen aplikasi.

Klik tombol "Add new" untuk membuat aplikasi baru.

Penjelasan Item Konfigurasi

Item KonfigurasiPenjelasan
App nameNama aplikasi yang ditampilkan di interface
App identifierIdentifier aplikasi, unik global
Startup mode- Start on first access: Sub-app dijalankan saat user pertama kali mengakses melalui URL
- Start with main app: Sub-app dijalankan bersama main app saat startup (akan menambah waktu startup main app)
EnvironmentDalam mode shared memory, hanya local environment yang tersedia, yaitu local
Database connectionDigunakan untuk mengkonfigurasi data source utama aplikasi, mendukung tiga cara berikut:
- New database: Reuse service database saat ini, buat database independen
- New connection: Hubungkan ke service database lain
- Schema mode: Saat data source utama saat ini adalah PostgreSQL, buat Schema independen untuk aplikasi
UpgradeJika di database yang dihubungkan terdapat data aplikasi NocoBase versi lama, apakah mengizinkan upgrade otomatis ke versi aplikasi saat ini
JWT secretSecara otomatis menghasilkan JWT secret independen untuk aplikasi, memastikan session aplikasi independen dari main app dan aplikasi lain
Custom domainMengkonfigurasi domain akses independen untuk aplikasi

Startup Aplikasi

Klik tombol Start untuk menjalankan sub-app.

Jika "Start on first access" dicentang saat pembuatan, akan otomatis dijalankan saat akses pertama kali.

Akses Aplikasi

Klik tombol Access, akan membuka sub-app di tab baru.

Default menggunakan /apps/:appName/admin/ untuk mengakses sub-app, contohnya

http://localhost:13000/apps/a_7zkxoarusnx/admin/

Sekaligus, Anda juga dapat mengkonfigurasi domain independen untuk sub-app, perlu mengarahkan domain ke ip saat ini. Jika menggunakan nginx, juga perlu menambahkan domain di konfigurasi nginx.

Stop Aplikasi

Klik tombol Stop untuk menghentikan sub-app.

Status Aplikasi

Anda dapat melihat status saat ini dari setiap aplikasi di list.

Penghapusan Aplikasi

Klik tombol Delete untuk menghapus aplikasi.

FAQ

1. Manajemen Plugin

Plugin yang dapat digunakan aplikasi lain sama dengan main app (termasuk versi), tetapi dapat dikonfigurasi dan digunakan secara independen.

2. Isolasi Database

Aplikasi lain dapat dikonfigurasi dengan database independen. Jika ingin sharing data antar aplikasi, dapat diimplementasikan melalui external data source.

3. Backup dan Migrasi Data

Saat ini backup data di main app tidak mendukung termasuk data aplikasi lain (hanya termasuk informasi dasar aplikasi), perlu backup dan migrasi manual di dalam aplikasi lain.

4. Deployment dan Update

Dalam mode shared memory, versi aplikasi lain akan secara otomatis mengikuti upgrade main app, secara otomatis menjamin konsistensi versi aplikasi.

5. Session Aplikasi

  • Jika aplikasi menggunakan JWT secret independen, maka session aplikasi independen dari main app dan aplikasi lain. Jika mengakses aplikasi yang berbeda melalui sub-path domain yang sama, karena TOKEN aplikasi di-cache di LocalStorage, perlu login ulang saat berpindah antar aplikasi yang berbeda. Disarankan mengkonfigurasi domain independen untuk aplikasi yang berbeda untuk mencapai isolasi session yang lebih baik.
  • Jika aplikasi tidak menggunakan JWT secret independen, maka akan berbagi session dengan main app. Setelah mengakses aplikasi lain di browser yang sama dan kembali ke main app, tidak perlu login ulang. Tetapi ada risiko keamanan, jika user ID di aplikasi yang berbeda duplikat, dapat menyebabkan user mengakses data aplikasi lain secara tidak sah.