Congratulazioni, hai intrapreso il singolo tipo di progetto più rischioso possibile.
Completa riscrittura, secondo sistema, problemi irrisolti della gente, mancanza di direzione tecnica, massima disponibilità a renderlo grande - nessuna di queste è una bandiera rossa che farebbe sballare la gente dall'altra parte. L'unico vantaggio è che sarebbe difficile scegliere una lingua peggiore di quella che hai ora.
Per prima cosa dobbiamo impostare un'aspettativa di base con alcune cifre approssimative. In media, un "progetto di sviluppo del software aziendale" al momento della consegna richiede il 200% del tempo stimato, il 200% del budget stimato e fornisce il 50% delle funzionalità inizialmente promesse. Quelli non sono i fallimenti - quelli sono i successi. Il fallimento è estremamente comune e sembra lo stesso del successo fino a quando l'organizzazione non prende la spina perché non c'è un risultato finale funzionante. Questo è nella media. Dato l'elenco delle bandiere rosse che mi sono saltate addosso, l'aspettativa di base dovrebbe essere che sei a grave rischio di iniziare al di sotto della media.
Vorrei che stavo esagerando. Sfortunatamente non lo sono.
Avrai bisogno di iniziare a contrastare ciò con alcuni aspetti positivi.
Prima di tutto la piattaforma. Ci sono un sacco di piattaforme accettabili che andranno bene per te. Se vuoi allontanarti da PHP (io sono di parte, lo farei), ti consiglio vivamente di intraprendere programmi pilota in diversi ambienti per vedere cosa funziona per te. Poi vai con quello che ha avuto la migliore accoglienza tra le parti interessate importanti (compresi gli sviluppatori!). Ciò che sceglierai non sarà più importante del fatto che le parti interessate siano felici della scelta.
In secondo luogo il set di funzionalità. Stai costruendo un secondo sistema. La tua priorità principale deve essere quella di evitare la sindrome del secondo sistema. Tutti sanno cosa non gli piace nel sistema attuale. Tutti hanno le loro liste "I wish" e "what if". Individualmente quelli sembrano grandi, e sono informati dall'esperienza con il primo sistema. Ma quando li ammucchiano tutti nel secondo sistema, fallirà. Quindi qualcuno deve essere sul posto per dire no per presentare richieste e deve essere spietato. (Leggi Il mitico Man-Month per un libro classico ispirato da un architetto di un secondo sistema che cerca di capire cosa è andato storto.) Come regola generale, su un primo sistema l'inesperienza mostra e un terzo sistema generalmente va bene, ma un secondo sistema è il più probabile a fallire.
Terza stima del software. Corri, non camminare, per raccogliere Stima del software: Demistificare la Black Art di Steve McConnell e migliorare la capacità della tua organizzazione di produrre stime accurate. Pochissime organizzazioni sono brave a farlo, e migliorare su questo è una priorità assoluta prima di provare a intraprendere qualsiasi progetto di grandi dimensioni.
In quarto luogo, evita l'etichetta "impresa". In generale, software aziendale significa software che viene venduto a dirigenti che sono disconnessi dal lavoro effettivo. Pertanto possiede un eccellente marketing e solo occasionalmente merito tecnico. Oracle vorrebbe ottenere il tuo business. Ti farebbero sicuramente pagare il miglior dollaro. Ma a meno che tu non abbia qualcosa di specifico da ottenere da loro, in realtà non hanno molto da offrire tecnicamente che PostgreSQL non abbia. E, parlando personalmente, il database più grande che ho visto era un database MySQL su Google. Se Google può renderlo scalabile in base alle loro esigenze, può ridimensionare il tuo. (OK, così Google è stato in grado di eseguire il backup con quello che era effettivamente un disco RAM costruito su una serie ridondante di computer economici e Google non utilizza MySQL per la maggior parte delle loro esigenze di archiviazione dei dati.)
Buona fortuna. Spero di averti spaventato. Dovresti essere spaventato. Questo è sicuramente un progetto ad alto rischio. Ma non è impossibile - solo molto, molto rischioso. Un fallimento nell'accettare, comprendere e attenuare attivamente tali rischi è una garanzia di fallimento.