Existem (pelo menos) duas linhas de pensamento sobre sistemas distribuídos, e dependendo do seu ambiente o seu sistema pode ou não qualificar como tal:
-
Ciência da computação - nesse caso, um sistema distribuído resolve um problema algorítmico de tal forma que cada nó faz parte do processamento, em alguns casos, mesmo sem um controlador coordenando a tarefa. Normalmente, o objetivo é encontrar um algoritmo distribuído para resolver um problema com mais eficiência.
-
Sistemas de Informação - nesse caso, um sistema distribuído é aquele que distribui apresentação, aplicativo e banco de dados entre várias entidades autônomas que se comunicam através de uma rede (passando mensagens entre si).
(Note que em um nível sinceramente abstrato que é a mesma definição - qualquer problema computacional é de fato um problema algorítmico, mas vamos salvar este argumento para uma discussão diferente).
Então, sim, você pode considerar o seu sistema distribuído, e podemos argumentar de acordo com a definição encontrada em 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]
No seu caso, o servidor web junto com o código do seu aplicativo, o servidor de banco de dados e o servidor de imagem são todos entidades computacionais autônomas com sua própria memória local, e eles se comunicam pela passagem de mensagens (isto é , enviando mensagens de um lado para outro através da rede).
O mesmo artigo da Wikipedia também lista várias arquiteturas para a construção de sistemas distribuídos, uma das quais é a n-camadas Arquitectura :
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.
Além disso, seu sistema claramente tem vários níveis (o aplicativo, o banco de dados e o armazenamento de imagens). Provavelmente também tem várias camadas, isto é, se você seguiu o modelo MVC do Symfony . O MVC, por definição, separa a lógica de apresentação e aplicação, e como (pelo menos parte) a camada de apresentação é certamente executada por um navegador da Web, isso é, na verdade, um arquitetura de 3 camadas :
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.