Fóir per il SaaS

Il tuo prodotto è un unico schema che serve molti clienti, e gran parte del lavoro consiste nel tenerne separati i dati. In Fóir lo schema è condiviso di proposito, e l'isolamento non è qualcosa che devi scrivere.

Uno schema, e un solo posto dove cambiarlo

La multi-tenancy di solito costringe a una scelta: uno schema con cui ogni cliente deve muoversi allo stesso tempo, oppure un fork per cliente che nessuno può modificare in sicurezza un anno dopo.

In Fóir un modello si definisce una volta, sul tuo progetto, e l'organizzazione di ogni cliente al suo interno lo eredita. C'è una sola definizione invece di una copia per cliente, quindi modificarla cambia ciò che servono tutti. Un cliente può definire un proprio modello sotto il tuo senza fare il fork del resto dello schema.

Uno schema condiviso non è un dato condiviso

Il guasto che non puoi permetterti è un cliente che legge le righe di un altro, e nella maggior parte degli stack l'unica cosa che lo impedisce è una clausola che qualcuno si è ricordato di scrivere.

Ogni cliente è un'organizzazione dentro il tuo progetto, e ogni riga che scrive è marcata con essa nel database. L'accesso è imposto da Postgres sotto la tua applicazione e non dal percorso di codice che sta girando, quindi una richiesta che non nomina nessun cliente non riceve nessuna delle sue righe invece di riceverle tutte, e un nuovo posto dove mettere dati non può essere rilasciato senza regole che lo coprano. Nessuna lettura o scrittura nel tuo codice nomina il cliente. Decide la credenziale con cui gira, quindi una query non può essere puntata sul cliente sbagliato.

Avviare un cliente è una chiamata API

Registrare un cliente di solito significa uno script di provisioning che crea un tenant, ne imposta il brand, lo popola e lascia a metà il lavoro quando un passaggio fallisce.

Una sola chiamata avvia il cliente, con una chiave basata su un id che scegli tu. Crea la sua organizzazione con il suo brand, e può scrivere le sue impostazioni, aggiungere il suo primo membro e generare una chiave limitata a lui. Eredita subito i tuoi modelli, senza schemi da copiare. Se la richiami con lo stesso id, riprende dal passaggio che non si era completato invece di creare un secondo cliente.

Cosa chiederà il tuo cliente più grande

L'affare che ti porta a un mercato più alto arriva con una revisione di sicurezza, e la risposta onesta di solito è un diagramma di intenzioni.

Qui l'isolamento è un meccanismo del database e non una policy. I suoi utenti fanno il login su un dominio che possiedono, su schermate che portano il loro nome e non il tuo. E se mai chiedono i propri dati, un export eseguito come loro organizzazione contiene le loro righe e nessuna di un altro cliente, perché la regola che limita ogni lettura limita anche l'export.

Da cosa parte ogni cliente

Le parti di un prodotto multi-tenant che altrimenti costruiresti una volta e manterresti per sempre.

Login per i loro utenti

Registrazione, password, codice monouso, social e OIDC, su un dominio che appartiene al cliente.

Il loro nome sopra

Logo, colore, nome del mittente e indirizzo di supporto per organizzazione, usati dalle schermate e dalle email che vedono i loro utenti.

Una chiave per cliente

Una chiave limitata a un cliente non può essere indirizzata altrove, qualunque cosa dica la richiesta. Il tuo back office tiene una sola chiave e indica il cliente a ogni richiesta.

Ruoli dentro il loro account

Ruoli dei clienti che dichiari nella configurazione, così il team del tuo cliente ha admin e membri senza che tu debba costruire un sistema di permessi.

Misura cosa usano

Imposta una quota su un'operazione per cliente su una finestra mobile, e limitala in base al segmento in cui si trovano, usando gli stessi pubblici che personalizzano i loro contenuti.

Ambienti con la stessa struttura

Una sola configurazione nomina un progetto di staging e uno di produzione, così una modifica allo schema viene provata in un posto sicuro prima di arrivare ai clienti.

Utilizzo per cliente

Record, media, utenti attivi ed email contati per organizzazione, ciascuno con un tetto che puoi impostare, così puoi vedere e limitare ciò che usa ogni cliente.

Lavoro in background

Operazioni, pianificazioni e hook degli eventi per organizzazione, con retry e una registrazione di ciò che è successo.

Media

Una libreria di asset con trasformazioni e rendition responsive, e regole di accesso sui file.

Modellalo una volta, poi aggiungi il secondo cliente

Crea un progetto e carica i modelli su cui gira il tuo prodotto. Il cliente successivo è un'organizzazione al suo interno.