Sto implementando una specie di applicazione web che ha basic social network functionality and browser text game
. Lo faccio fondamentalmente per me stesso solo per imparare un paio di cose. (come usare websockets e sviluppo full-stack)
Quindi l'architettura che ho trovato sembra così
Generalmente le mie pagine web sono costituite da
- risorse statiche fornite con l'unità di implementazione (all'interno di
war
ad esempio) - risorse esterne che ho deciso di non archiviare all'interno della guerra (per avere dimensioni ridotte) come musica, immagini, fogli di calcolo. Li tengo su cloud storage come
google drive
emega
- risorse statiche come i dati di gioco - informazioni sulle missioni, descrizioni delle abilità ecc. che ho memorizzato in
document database
.
Breve descrizione dei servizi
- Applicazione principale è l'endpoint principale in cui l'utente ha accesso e trascorre la maggior parte del suo tempo
- Servizio di autenticazione (al momento disegno questo) è solo un servizio che dovrebbe fornire token di autorizzazione (perché in genere voglio supportare l'autenticazione - dopotutto è un sito Web - da Google o Facebook ecc.) . Utilizza il database relazionale per archiviare login, ruoli, permessi utente.
- Servizio di gestione risorse è un singolo punto di accesso per tutti i servizi per accedere alle risorse, in pratica ho voluto centralizzare l'accesso a tutte le risorse
- Il servizio del giocatore accumula le statistiche del giocatore (nel database relazionale) e la relazione tra giocatori (quindi database grafico)
- Servizio motore regole è responsabile della valutazione dei dati del giocatore rispetto a un foglio di calcolo che contiene regole di gioco (come il giocatore sta livellando ecc.).
Sto pensando di introdurre un modulo di comunicazione che permetta ai giocatori di chattare, ma c'è ancora molta strada da fare fino ad allora.
Poiché ho la tendenza a sovra-ingegnerizzare, ho deciso di porre una domanda: Ho fatto l'over-engineer o no? Inoltre non sono sicuro se ho bisogno di middleware come AMQP o JMS. Presumo che sia un must per tali applicazioni.
Il mio problema è che voglio usare tutto gratuitamente perché non ha una grande scala - quindi devo inventare soluzioni alternative per la memorizzazione di risorse e ambiente. Io uso heroku
per distribuire la mia applicazione e quindi uso add-on per esso come grapheneDB
o coralogix
. (forse passerò a aws
un giorno)
Quindi qualcuno potrebbe valutare la mia architettura?