Come dividere il mio prodotto in più varianti

0

Ho un prodotto che è una combinazione di app mobili e webapi. Sto lavorando all'API web. La parte webapi creata in precedenza e costruita con un modello a strati. Anche pensato che questo non ha un livello aziendale (API e accesso ai dati), ognuno creato come progetto separato nella soluzione. Ora ho solo ottimizzato il codice di un certo livello e modificato il livello di accesso ai dati esistente con il repository e il modello di unità di lavoro ecc.

Ho un'altra sfida. Attualmente, il prodotto è pubblicato come singolo e ospitato in EC2. Ora il prodotto sta per avere più varianti. Non so che la denominazione sia corretta, ma intendo più edizioni come Visual Studio professionali, aziendali ecc.

Quindi il mio prodotto ha un'edizione di base, una versione intermedia e un'edizione aziendale ecc. Le denominazioni saranno diverse. Sono totalmente confuso su come sviluppare ogni modulo come collegabile in modo che possa essere aggiunto ad ogni edizione durante la distribuzione.

Sono totalmente zero qui così ho pensato così.

  1. Crea una copia separata del nostro prodotto e fai i moduli nella copia necessaria

  2. Un singolo prodotto e ciascun modulo aggiuntivo come prodotto separato e aggiunto durante la distribuzione.

  3. Come gestire la distribuzione

  4. Come gestire la versione del prodotto e la denominazione dell'edizione

So che questo non ha una risposta singola. Ma chiunque può guidarmi? Anche un articolo, un blog o video ti aiuteranno. Imparerò e tornerò per domande specifiche.

Aggiornamento:

Le varianti del prodotto hanno -

  1. Aggiungi su moduli / funzionalità
  2. Alcune varianti hanno diversi moduli / caratteristiche

Attualmente, il Prodotto ha versioni personalizzate per alcuni clienti. Quindi l'ho gestito con una build / soluzione separata.

    
posta Akhil 16.12.2018 - 14:29
fonte

1 risposta

0

Suggerirei di utilizzare una struttura multiprogetto in cui ogni variante ha il proprio insieme di progetti che definiscono gli artefatti utilizzabili. Le funzionalità "Enterprise" nei moduli dovrebbero in genere utilizzare i pulsanti di attivazione delle funzionalità per semplificare la procedura. I progetti di edizione forniscono la configurazione per attivare le funzionalità. Qualcosa del genere:

  • Progetto-Root
    • Moduli
      • Server-Api-Base
      • Mobile App-Comune
      • Mobile-App1 (dipende da Mobile-App-Common, Server-Api-Base)
      • Mobile-App2 (dipende da Mobile-App-Common, Server-Api-Base)
      • Server-Base (dipende da Server-Api-Base)
    • Enterprise-Edition
      • Mobile-App-Enterprise1 (dipende da Mobile-App1)
      • Mobile-App-Enterprise2 (dipende da Mobile-App2)
      • Server-App-Enterprise (dipende da Server-Base)
    • Comunità-Edition
      • Community-App per dispositivi mobili1 (dipende da Mobile-App1)
      • Comunità-app-mobile2 (dipende da Mobile-App2)
      • Server-Community (dipende da Server-Base)

Vedo i seguenti vantaggi:

  • Sviluppo di feature
    • Pensi naturalmente a tutte le varianti quando scrivi nuove funzionalità.
    • Puoi testare queste funzionalità nelle configurazioni dell'edizione molto presto.
    • Puoi iniziare tutte le parti di un'edizione molto facilmente per un rapido feedback degli sviluppatori
  • Refactoring (puoi avere questo senza un grande progetto multiplo ma è più naturale in questo modo)
    • Nessun dolore durante lo spostamento della funzionalità tra edizioni o moduli
    • Il supporto IDE è molto buono con questa configurazione
    • Solitamente i problemi vengono segnalati direttamente dal compilatore
  • Test
    • Puoi facilmente creare test che si estendono su più edizioni
    • I dati di test possono essere condivisi facilmente
    • È possibile testare facilmente le configurazioni della versione completa poiché risiedono nei propri sottoprogetti
  • Creazione e distribuzione
    • È possibile condividere facilmente la logica di compilazione e distribuzione tra le edizioni
    • Tutto il tuo codice ha una versione e rimane così naturale. È più facile gestire le segnalazioni di errori ecc.
risposta data 16.12.2018 - 20:04
fonte

Leggi altre domande sui tag