Abbiamo un sito Web e due app mobili che si connettono tramite un'API. Tutte le piattaforme fanno esattamente le stesse cose. In questo momento la struttura è la seguente:
- sito web. Gestisce modelli, controllori, viste per il sito web. Esegue anche tutte le attività in background. Quindi se un utente crea un luogo, tutto viene eseguito in questo codice.
- API. Gestisce modelli, controllori e restituisce un JSON. Se un utente crea una posizione nell'app mobile, il luogo viene creato qui. Dopo, aggiungiamo un'attività in background per aggiornare altri campi. Questa attività in background viene eseguita dal sito Web.
Stiamo rifacendo tutto, quindi è il momento di migliorare l'approccio. Qual è il modo migliore per riutilizzare la logica aziendale, quindi ho solo bisogno di codificare l'inserimento / modifica / eliminazione del luogo & altre azioni correlate in un solo posto?
Un approccio orientato ai servizi è una buona idea? Ad esempio:
- Servizio. Ha i modelli e ottiene, aggiunge, aggiorna ed elimina informazioni dal DB.
- sito web. Invia le informazioni al servizio e rende HTML.
- API. Invia informazioni al servizio e restituisce JSON.
Alcuni problemi che ho trovato:
- Più lavoro iniziale? Non sono sicuro ..
- Può funzionare più lentamente. Qualche esperienza?
I vantaggi:
- Abbiamo solo la logica di business in un unico posto, sia per web che api.
- È più semplice da ridimensionare. Possiamo mettere ogni pezzo su server diversi.
Altre soluzioni
- Duplica il codice e fai attenzione a non dimenticare nulla (fai test!)
- DUplicate del codice ma eseguite attività in background che aggiornano i campi correlati ed eseguono altre cose (e-mail, indicizzazione ...)
Un "piccolo" dettaglio è che siamo 1,3 persone nel back-end, per ora;)