C4 · Container¶
Objetivo¶
Mostrar de que processos/serviços deployáveis (containers Docker) um produto CoreFlow é composto — nível 2 do C4 Model.
Diagrama — padrão real (CoreFlow CRM como exemplo)¶
flowchart TD
Browser["Navegador"] -->|HTTPS| NPM["Nginx Proxy Manager\n(compartilhado entre produtos)"]
NPM -->|proxy para a porta do produto| Web["Container Web\nDjango + Gunicorn"]
Web -->|ORM| DB[("Container PostgreSQL")]
Web -->|cache/broker| Redis[("Container Redis")]
Web -->|enfileira tarefas| MQ[("Container RabbitMQ")]
MQ --> Worker["Container Worker\nCelery"]
Worker --> DB
Containers reais por produto¶
| Container | Tecnologia | Responsabilidade |
|---|---|---|
| Web | Django + Gunicorn (imagem multi-stage, usuário não-root) | Serve HTTP, renderiza templates, expõe API quando o produto tem uma |
| PostgreSQL | postgres:16-alpine |
Persistência — banco isolado por produto |
| Redis | redis:7-alpine |
Cache e, em alguns produtos, broker do Celery |
| RabbitMQ | rabbitmq:3.13-management-alpine |
Broker do Celery nos produtos que o adotam (ex.: CRM) |
| Worker | Celery, mesma imagem da app | Processamento assíncrono (e-mails, tarefas periódicas) |
O Nginx Proxy Manager não é um container por produto — é compartilhado por todos os produtos da VPS, fazendo o roteamento por subdomínio e o SSL (ver Cloud).