Gestione di moduli specifici del cliente in un compositore / SaaS basato su PHP

1

Sto sviluppando un SaaS business-to-business.

Mi aspetto che la maggior parte dei miei clienti sarà in grado di utilizzare il mio prodotto principale e ho intenzione di distribuirlo in un'istanza indipendente per ciascun cliente. Alcuni clienti a bassa richiesta potrebbero condividere un nodo VPS con altri clienti a bassa richiesta, altri potrebbero avere distribuzioni dedicate, ma l'applicazione sarà progettata in modo tale che si connetta a un database privato per ciascun cliente. Non sarà multi-tenant.

In particolare, prevedo che alcuni clienti avranno bisogno di personalizzazione, magari con l'integrazione con un provider di autenticazione interno o esoterico o con altre personalizzazioni in stile aziendale.

Ho progettato molti sistemi di hosting modulari e plug-in, e penso che sarò in grado di catturare queste personalizzazioni dietro interfacce astratte. Ma distribuirli nel modo in cui mi piacerebbe qui è una nuova sfida.

Qual è il modo migliore per organizzare e distribuire i moduli specifc dei clienti nel progetto PHP single-tenant, basato su compositore?

Il mio attuale pensiero è di mantenere una singola base di codice mainline per tutti i clienti. Ogni cliente raro (?) Che richiede funzionalità aggiuntive dovrebbe avere quella funzionalità acquisita all'interno di un pacchetto di compositore privato e l'integrazione verrebbe a:

  1. Chiedi al compositore di installare il pacchetto personalizzato durante l'implementazione
  2. Avere una specifica di configurazione del cliente che indica quali moduli utilizzare dal pacchetto personalizzato durante l'esecuzione.

Il passaggio (2) è risolto, in quanto la configurazione del cliente è una parte necessaria di tutte le installazioni e l'aggiunta di alcuni dettagli che indicano quale implementazione utilizzare per una determinata interfaccia è un'aggiunta banale.

È un passo (1) di cui non sono chiaro. Presumendo che vada nella giusta direzione, c'è un modo stabilito / idiomatico di caricare pacchetti specifici per la distribuzione nel compositore? Dovrei semplicemente eseguire un passaggio post-installazione che modifica il compositore base.json in base alle specifiche di configurazione del cliente, aggiunge i pacchetti specifici del cliente e esegue un aggiornamento?

Se non sto andando nella giusta direzione (ed è per questo che sto chiedendo qui e non su StackOverflow), cosa suggeriresti come un modo migliore per organizzare le cose?

    
posta adpalumbo 12.12.2014 - 20:03
fonte

0 risposte