SfondoCome faccio a costruire qualcosa quando so che mi sbaglierò?
Ho un progetto personale che ho cercato di costruire per circa 5 anni. In sostanza è un gioco online - un'applicazione web. Non è un "money maker", solo qualcosa che voglio davvero costruire, quindi è molto improbabile trovare i finanziamenti per assumere una squadra competente.
Ho costruito due prototipi pienamente funzionali nel corso degli anni, entrambi con successo da un punto di vista concept/utente, ma entrambi i fallimenti spettacolari da una prospettiva architettonica; il codice era un disastro, non poteva essere mantenuto o ulteriormente sviluppato, e doveva essere buttato fuori.
Ci sono voluti un paio di anni per acquisire le competenze necessarie per costruire il cliente - che è ricco/statico e piuttosto complesso. Ho allineato la mia carriera e gli studi verso questo lato del divario di sviluppo. Sono finalmente arrivato a un punto in cui posso costruire un cliente sofisticato, decentemente architettato, in grado di crescere e che non ha bisogno di essere buttato fuori 6 mesi prima. C'è un sacco di lavoro da fare su questo fronte, ma almeno so di poterlo fare, e lo faccio abbastanza bene. Il back-end è un'altra storia.
Finora ho ricostruito il back-end almeno 11 volte con varie combinazioni di PHP, SQL, Ruby, CouchDB, MongoDB, FriendlyORM, NodeJS ecc. Ecc. Di solito non arrivo molto lontano prima di scoprire qualche enorme difetto con il mio approccio e ricominciare: RPC to REST, relazionale al documento guidato. Sono ben consapevole che l'ottimizzazione prematura è la radice di tutti i mali, ma l'applicazione dipende molto da dati altamente dinamici e in rapido movimento. Progettazione, scaling, sharding, caching, auth, replicazione dell'API RESTful - Non ho molta esperienza con questo, e non posso aspettarmi di essere minimamente decente in qualunque momento presto. Queste cose richiedono anni di studio ed esperienza.
Ha più senso trovare un esperto in questo campo, ma senza finanziamenti sento che ho bisogno di distribuire con successo un altro prototipo per attirare la persona giusta. Quindi, dovrò solo costruirlo nel miglior modo possibile.
La questione
Supponendo che però io costruisco, l'architettura di back-end sta per essere sbagliato e dovrà essere ricostruita, qual è il modo migliore di procedere con la costruzione di "appena sufficiente" per continuare sviluppo dell'applicazione client? Anche se è brutto, c'è un modo per "mettere insieme" un servizio web JSON? Rubino con Sinatra e MongoDB? Django? Esiste un costruttore di servizi web out-the-box? Non c'è bisogno di un framework web a stack completo in quanto non esiste un livello di presentazione: solo dati. Qualsiasi consiglio sarebbe molto apprezzato.
@ Franky-D: _ "Sono ben consapevole che l'ottimizzazione è la radice di tutti i mali" _. Perché? –
Forse intendeva dire * ottimizzazione prematura *? – FrustratedWithFormsDesigner
@ Franky-D È l'ottimizzazione ** prematura ** che è la radice di tutto il male - vedi http://c2.com/cgi/wiki?PrematureOptimization –