Pains

726 pains collected

Severity:

N+1 Query Problem and DataLoader Usage

7

Developers frequently forget to batch queries in GraphQL, resulting in N+1 query problems that cause slow performance and unnecessary database strain. Solutions like DataLoader are required to optimize query execution.

performanceGraphQLDataLoader

Schema Stitching and Composition Complexity

7

Combining multiple schemas from different data sources into a single coherent schema is complex and time-consuming. Developers must carefully map data relationships and ensure schema consistency, especially in applications with many data sources.

architectureGraphQL

Network latency and infrastructure constraints in enterprise environments

7

In corporate production environments, database requests traverse multiple network hops through firewalls and antivirus software, causing severe latency issues. Developers lack control over database configuration and cannot install extensions like PGVector, PG Cron, or PG Crypto, and often don't know which region their database is deployed in.

networkingPostgreSQLPGVectorPG Cron+1

Long onboarding time for enterprises hiring Rust developers

7

When enterprises hire large teams of backend engineers, the cost and time to onboard them into Rust is substantial, with most teams expecting months before new hires can contribute meaningfully. This creates significant friction for rapid team scaling.

onboardingRust

Query plan instability causes unpredictable performance degradation

7

PostgreSQL query execution plans can become unstable, causing previously performing queries to suddenly degrade. Developers must use advanced tools like Query Plan Management (QPM) and pg_hint_plan to ensure consistent query performance.

performancePostgreSQLQuery Plan Managementpg_hint_plan

Over-Fetching and Under-Fetching Data

7

Developers struggle to balance data retrieval efficiency. Requesting excessive data degrades performance, while requesting too little data causes multiple round trips to the server, impacting application speed and responsiveness.

performanceGraphQL

No built-in monitoring and logging observability

7

Standard Kubernetes lacks native observability features for monitoring cluster utilization, application errors, and performance data. Teams must deploy additional observability stacks like Prometheus to gain visibility into spiking memory, Pod evictions, and container crashes.

monitoringKubernetesPrometheus

Implicit dependencies and dependency graph resolution failures

7

Terraform relies on explicit references to infer resource dependencies, but real-world dependencies are often implicit (side effects, plain string IDs). When Terraform cannot see these relationships, it fails to determine correct resource ordering, causing apply failures or resource conflicts.

architectureTerraform

Horizontal scalability limitations at high load

7

PostgreSQL lacks native horizontal scalability features. When instance sizes become insufficient, teams experience downtime during scaling operations. Aurora vacuuming and scaling issues persist, and teams desire alternatives like CockroachDB that support true horizontal scaling without downtime.

architecturePostgreSQLAuroraCockroachDB

Slow linking phase in compilation

7

The linking phase is performed from scratch every time and is a major bottleneck in the build process. Since Rust delegates linking to external system linkers, performance improvements are limited, though the Rust team is attempting to switch to faster linkers by default.

buildRust

Ineffective caching due to query variability

7

Traditional HTTP caching mechanisms struggle with GraphQL because each unique query variation is treated as a distinct request. Parameterized queries (e.g., different $userId values) create cache misses. Additionally, query permutations can be exploited to spam server memory with cache entries.

performanceGraphQL

Complex configuration and monitoring required for replication and high availability

7

Managing PostgreSQL replication requires intricate configuration and careful monitoring to prevent data loss or corruption. Achieving high availability demands automated failover mechanisms, load balancing between primary and standby servers, and selecting the appropriate replication strategy.

configPostgreSQL

Image bloat and unused dependencies increasing attack surface

7

In-use vulnerabilities dropped below 6% in 2025, but image bloat has quintupled. Heavier, less-optimized container images increase attack surfaces despite fewer known CVEs, creating a security paradox.

securityKubernetescontainer images

Inefficient write architecture compared to other databases

7

PostgreSQL has an inefficient architecture for write operations compared to alternatives like MySQL. This limitation was significant enough for organizations like Uber to switch database systems.

performancePostgreSQL

GraphQL federation complexity and security challenges

7

Implementing schema federation or stitching across multiple services is complex, slow, and difficult to secure. Federation introduces fragility and inter-domain dependencies that are hard to manage and debug at scale.

architectureGraphQL

Docker Desktop Licensing Model and Commercial Cost

7

Docker Desktop is no longer free for commercial use in larger organizations. Paid subscriptions (Pro, Team, or Business) are mandatory for organizations exceeding either of two thresholds, forcing significant OPEX increases. This licensing shift has driven developer evaluation of alternative solutions like Podman and Finch.

configDocker

Unpredictable behavior from uncontrolled state modifications

7

When application state can be modified from multiple places without clear patterns, developers cannot easily reason about code execution. Bugs manifest in unexpected components, making debugging extremely difficult and technical debt accumulates through duplicated and stale state.

architectureTypeScript

Read-heavy workload performance without proper replica/caching architecture

7

Read-heavy workloads like reporting and analytics can severely degrade performance if read replicas and caching layers aren't properly configured. This requires upfront architectural planning that many teams delay.

performancePostgreSQL

Write-heavy workload bottlenecks without proper indexing and partitioning

7

Write-heavy workloads with financial transactions and real-time updates require careful indexing and partitioning strategies to avoid slow inserts and locking issues. Without these, performance suffers significantly.

performancePostgreSQL

Operational toil and fragmented incident response workflows

7

Manual deployments, inconsistent workflows, and fragmented observability across tools increase on-call load and MTTR. Engineers jump between tools during incidents instead of fixing issues, driving burnout and slower delivery due to constant firefighting.

monitoringKubernetes

Default Security Configuration Weaknesses

7

PostgreSQL default installations can allow passwordless logins ('Trust' method) if not managed, lack robust password policies, do not enable SSL/TLS encryption by default, and commonly grant unnecessary superuser privileges. Many vulnerabilities stem from misconfiguration and operational oversight rather than software flaws.

securityPostgreSQL

PostgreSQL failover on Kubernetes requires additional tooling expertise

7

While Kubernetes can restart failed pods, it doesn't provide PostgreSQL-specific failover capabilities needed for production. Teams must implement tools like Patroni for proper leader election and failover, adding complexity and requiring dual expertise in both PostgreSQL and Kubernetes.

architecturePostgreSQLKubernetesPatroni

Query complexity and performance degradation

7

GraphQL queries can become increasingly complex as projects grow, with deeply nested queries and over-fetching of fields leading to poor performance, extensive database joins, and slow execution times. Query complexity assessment is difficult and clients can crater performance without guardrails.

performanceGraphQL

Terraform state drift from manual cloud console changes

7

Teams circumvent Terraform workflows by making changes directly in cloud provider consoles, causing state files to become out of sync with actual infrastructure. This drift prevents accurate planning and can lead to unexpected behavior during subsequent Terraform operations.

configTerraform