Discourse is not different than any other web application in that regard
graph TD
User[User]
LoadBalancer[Load Balancer]
WebAppCluster[Discourse Web App Cluster, N identical instances]
Postgres[PostgreSQL]
Redis[Redis]
S3[Object Storage]
User -->|Request| LoadBalancer
LoadBalancer -->|Distributes requests| WebAppCluster
WebAppCluster -->|Read/Write| Postgres
WebAppCluster -->|Cache| Redis
WebAppCluster -->|Stores static assets| S3