Content analysis jobs take minutes, not milliseconds. Aegis is the architecture that follows from taking that seriously — six services, a job queue, and no request left hanging.
Aegis splits content processing across six containerised services orchestrated with Docker Compose. A gateway accepts the request, an orchestrator manages the flow, a worker performs the long-running scraping and file generation, and a content-intelligence service handles the AI analysis. PostgreSQL stores results; Redis carries live progress and shared state; nginx fronts the whole thing on a bridged network.
The reason for the split is simple: content jobs are slow. Running them inside the request that triggered them means timeouts, no progress reporting, and a system that falls over the moment two people use it at once.
Scraping a set of pages and generating output from them takes minutes. Do that inside an HTTP handler and every layer between the browser and the code — proxy, load balancer, browser itself — is entitled to give up first.
Worse, there is nothing to show the user while they wait, and no way to recover if the process dies halfway through.
The gateway accepts a job and returns immediately with an identifier. The orchestrator places the work on a queue; workers pick it up and report progress into Redis as they go, which is what the dashboard reads. Results land in PostgreSQL, so a completed job survives a restart of any service that produced it.
Because each concern is its own container, the slow part scales independently of the part that answers the browser.
The architecture runs and the dashboard reports real job state, but this has not been operated under production load. There is no authentication layer, no horizontal-scaling story beyond "add worker containers", and no uptime or throughput figure is claimed.
Nothing here is exotic. It is the shape a system takes once you accept that the work is slower than the request that asks for it.