Skip to content
Putting technology to work.
Insights to guide decisions and action.

Search articles

Before Adding Redis and Queues — How Far Can a Single Postgres Instance Go?

Table of contents · 7 items

In the architecture diagram delivered by the development company, five boxes stand in a row: Application, PostgreSQL, Redis, Job Execution Infrastructure, Full-Text Search Engine. Each appears to be a reasonable choice.

The catch comes post-delivery. Operating this architecture requires someone who can define monitoring metrics, manage backups, track version upgrades, and isolate failures across all five components. If no such person exists internally, the system becomes untouchable the moment the maintenance contract expires.

Discussions on technology selection tend to revolve around "will it perform?", but in small-to-medium systems, what matters first is "who can fix it when it breaks?" Taking this as a starting point, we examine whether decisions can be made toward simplifying architecture.

What increases when you add one piece of middleware

The cost of deciding to "bring in Redis" is not merely server fees. What actually increases is the following operational workload:

  • One more monitoring target is added. You need to define what constitutes "healthy," establish thresholds, and configure alert destinations. Adding components without these definitions creates elements that can go down without anyone noticing (Monitoring begins with defining "healthy")
  • One more backup and recovery procedure is added. Whether the assumption that "it's just a cache, so data loss is fine" truly holds cannot be known without auditing the implementation
  • One more stream of version upgrades to track. You increase the number of components for tracking end-of-life dates and security patches
  • Failure isolation becomes one tier more complex. Determining whether the cause of "slowness" is the app, database, cache, or network requires cross-referencing logs across each layer
  • Hiring and handoff constraints increase by one. When transitioning maintenance to another vendor, the pool of capable companies narrows

The fifth point impacts small and medium-sized businesses the hardest. The more architectural components there are, the harder it becomes to find the next person to take over.

What PostgreSQL can substitute for

In recent years, utilizing PostgreSQL's native capabilities has been widely discussed as a practical option for "thinking before adding." What it can realistically substitute for includes the following:

Job queues. By using SELECT ... FOR UPDATE SKIP LOCKED, you can treat tables directly as queues. This mechanism allows multiple workers to share workloads without competing for the same rows, representing an approach proven in production. Standard practice is to use established libraries like pg-boss or river rather than writing your own. Typical asynchronous tasks—such as sending emails, generating reports, and invoking external APIs—are well within this capability.

Caching. Using unlogged UNLOGGED tables provides faster speeds than regular tables. Unless sub-millisecond response times are a hard requirement, there are many scenarios where Redis can be omitted.

Full-text search. PostgreSQL includes built-in full-text search features. While handling Japanese requires additional configuration, for on-site search or filtering in admin dashboards, spinning up a dedicated search engine is unnecessary.

Job scheduling. Requirements extending beyond simple recurring execution can be handled through extensions like pg_timetable.

In short, up to three boxes from the opening diagram can potentially be eliminated. Downsizing to just the application and PostgreSQL leaves only a single pipeline for monitoring, backups, and handoffs.

Diagram comparing the operational workload that increases with each added component versus consolidating onto Postgres

Where the line of what cannot be substituted lies

On the other hand, it is not a matter of "Postgres is fine for everything." The boundary is clear.

RequirementIs Postgres sufficient?
Typical business system queues, caching, and searchSufficient
Sub-millisecond cache responsesRedis required
Processing millions of messages per secondKafka required
Distributed search involving complex linguistic analysisElasticsearch required

Extreme throughput or extreme specialization. Unless your requirements match one of these two, the justification for introducing dedicated middleware is weak. In business systems for small and medium-sized enterprises or custom development projects, hitting these two criteria is relatively rare.

Note that there are caveats when using Postgres as a queue. Because this usage repeatedly creates and deletes massive volumes of rows, tables will bloat if dead tuple cleanup cannot keep pace. The reason to use established libraries is precisely because they account for these operational pitfalls. If you implement it from scratch, you will have something that works right away, but slows down six months later.

Arguments for consolidation are also emerging

The movement toward reducing architectural components is also appearing on the database product side. Harper 5.2, released in August 2026, takes a stance against architectures that separate databases, caches, and job execution into distinct systems, promoting a design that co-locates application code and data within the same runtime.

In benchmarks published by the company, in-process data access is clocked at around 0.4 milliseconds, compared to approximately 3 milliseconds when fetching across a network to a separate tier. While figures from vendor-run benchmarks must be treated with care, the structural reality that "separating tiers incurs network overhead every time" remains unchanged.

To separate or to consolidate: this is less a conflict of technical trends than a matter decided by available operational headcount and maintenance handoff assumptions. In an organization with multiple dedicated infrastructure engineers, separating tiers offers greater flexibility; however, in an organization with only a single IT team member or relying entirely on outsourced vendors, consolidation is what endures.

Two questions to ask during the ordering stage

Because evaluating the technical validity of an architecture is difficult for clients, asking the following two questions provides clarity for making decisions:

1. "If we were to eliminate one component from this architecture, which one would it be, and why?"

If the rationale for retaining it is concrete ("because handling X requests per second is a hard requirement"), it is valid. If the answer is "because it's standard practice" or "because it will be needed when scaling in the future," it is a choice that did not stem from current requirements. Adding components when actually needed later is far cheaper than continuously operating unused ones.

2. "After delivery, what tasks will be required to operate this, broken down by component?"

Monitoring, backup, and upgrade tasks will be enumerated for as many boxes as there are. Reviewing this before finalizing the scope and pricing of the maintenance contract makes negotiations concrete. If a clear breakdown does not emerge, the architecture likely was not designed with operations in mind.

A similar dynamic arises when designing asynchronous processing to "guarantee exactly-once execution." Deciding whether to add external mechanisms or rely on database features is covered in Guaranteeing processing reliability with Postgres and SQLite.

What to do next

If you already have a system running in production, open the architecture diagram and check for each component: "Did anyone perform maintenance work on this last month?" Components that no one has touched might not just be running smoothly—they may be completely abandoned. Middleware frozen on outdated versions is often discovered this way.

If you are commissioning development in the future, pose the two questions above during the requirements definition phase. Discussing reductions after architecture is finalized triggers design rework, which drives up costs.

Reviewing architectural validity, auditing existing operational burdens, and revising the scope of maintenance contracts are handled through GleamHub's Development, AI, and Automation consultations. Because viable options depend on your current architecture and internal operational capabilities, please consult with us individually. Feel free to reach out via Contact Us.

Sources

Share this articleXFacebook
Kakeru Suzuki

Fascinated by the possibilities of technology, has had a deep interest in programming and digital art since student days

Turn this article's theme into your company's next step

Concrete steps forward for your organization.

We organize your desired architecture, legacy systems, and operational requirements to formulate your next steps toward execution.

  • Desired architecture
  • Integration with existing environments
  • Operational requirements
Consult on development & operations initiatives

You can consult with us from the initial conceptual stage. Details from this article will be carried over to the inquiry form.

Receive the latest articles by email