Ci sono (almeno) due linee di pensiero sui sistemi distribuiti, e a seconda del tuo ambiente il tuo sistema può o meno qualificare come tale:
-
Computer Science: in questo caso, un sistema distribuito risolve un problema algoritmico tale che ogni nodo fa parte dell'elaborazione, in alcuni casi anche senza un controller che coordina l'attività. Di solito l'obiettivo è trovare un algoritmo distribuito per risolvere un problema in modo più efficiente.
-
Sistemi informativi: in questo caso, un sistema distribuito è uno che distribuisce presentazione, applicazione e database tra più entità autonome che comunicano tramite una rete (passando messaggi tra loro).
(Si noti che su un livello sinceramente astratto è la stessa definizione - qualsiasi problema computazionale è in realtà un problema algoritmico, ma salviamo questo argomento per una discussione diversa).
Quindi sì, puoi considerare il tuo un sistema distribuito, e possiamo argomentare così dato la definizione come trovata in Wikipedia :
1. There are several autonomous computational entities, each of which has its own local memory.[7]
2. The entities communicate with each other by message passing.[8]
Nel tuo caso, il server web insieme al codice dell'applicazione, al server database e al server immagini sono tutti entità computazionali autonome con la propria memoria locale e comunicano per trasmissione di messaggi (cioè , inviando messaggi avanti e indietro attraverso la rete).
Lo stesso articolo di Wikipedia elenca anche diverse architetture per la costruzione di sistemi distribuiti, uno dei quali è n-tier Architettura :
In software engineering, multi-tier architecture (often referred to as
n-tier architecture) is a client–server architecture in which
presentation, application processing, and data management functions
are logically separated.
Inoltre, il tuo sistema ha chiaramente più livelli (l'applicazione, il database e l'archivio di immagini). Probabilmente ha anche più livelli, cioè se hai seguito il modello MVC di Symfony . MVC per definizione separa la presentazione e la logica dell'applicazione, e dal momento che (almeno in parte) il livello di presentazione è sicuramente eseguito da un browser web, questo è in realtà un architettura 3-tier :
Three tier systems move the client intelligence to a middle tier so
that stateless clients can be used. This simplifies application
deployment. Most web applications are 3-Tier.