Pains
726 pains collected
Compliance and regulatory requirement management
6Meeting regulatory requirements and compliance standards is a significant challenge for AWS developers. Applications must comply with industry regulations and follow governance best practices.
Cost vs. performance optimization tradeoffs
6Developers must balance using the best resources for performance with managing costs. Finding the optimal resource configuration to meet both requirements is a constant struggle.
Application scalability and dynamic workload handling
6Designing applications that can handle varying workloads and scale up or down quickly is difficult. Predicting traffic patterns and configuring auto-scaling appropriately requires expertise.
Complex and Inconsistent API Authentication Options
6APIs offer confusing authentication mechanisms with multiple versions (especially OAuth), inconsistent implementations, and poor documentation of authentication flows. Getting credentials and understanding the correct authentication method is often one of the trickiest initial steps, especially when API teams and customers have mismatched use-case assumptions.
AWS Lambda missing framework guidance and bundle size limitations
6Developers often start Lambda projects without frameworks, forcing manual setup of API Gateway and CloudWatch integrations. As architectures grow, the 50MB default deployment size limit becomes a constraint, requiring webpack bundling per function to stay under limits and improve deployment speed.
Backend-as-a-Service pricing cliffs and inflexibility
6Developers using Backend-as-a-Service solutions for AI agents encounter pricing cliffs as soon as their app gains traction. BaaS platforms also lock in behavior and reduce flexibility to fine-tune backend operations, forcing developers who need control to migrate to IaaS platforms like AWS or Azure.
Time-consuming and error-prone SQL query creation
6Building complex SQL queries is tedious, error-prone, and time-consuming. Developers frequently resort to AI assistance rather than writing queries manually, and must often redo work when requirements change or new clients appear.
Insufficient documentation for application handoffs and legacy code recovery
6When inheriting applications (whether from contractors or former team members), there is often no documentation about dependencies, installation requirements, database contents, or what components exist. This makes it impossible to know if legacy code can even run without significant reverse engineering.
Difficult debugging with long application workflows and complex database logic
6Diagnosing failures becomes increasingly difficult when issues could originate from the database or application code. Long workflows and complex database-side logic require extensive investigation, making root cause analysis time-consuming.
PostgreSQL configuration parameters require server restart and are difficult to debug
6Configuration adjustments require a full server restart to take effect, making it risky to tune in production. Logs are noisy and difficult to access in ephemeral or PaaS environments, especially without tools like PG Badger.
Excessive or duplicate indexes degrade write performance and storage
6Unused or duplicate indexes cause every database modification to unnecessarily update those indexes, resulting in high storage utilization and IOPs consumption. This creates a silent performance drag that isn't immediately obvious.
Built-in replication cannot selectively replicate individual databases
6PostgreSQL's built-in replication replicates entire clusters with the same settings and priority, not individual databases. This forces teams to manage multiple separate clusters to control replication groups, significantly increasing management complexity and operational overhead.
Backup and disaster recovery complexity at scale
6As data volume grows to terabytes and petabytes, teams struggle to establish robust backup and recovery systems that ensure zero data loss. The complexity of managing backups at scale, combined with the need for rapid recovery, creates operational burden and concerns about data durability.
Lack of expressive data model understanding leads to poor schema design
6Development teams unfamiliar with expressive data modeling often fail to apply important constraints like foreign keys, instead relying on familiar application-level patterns. This results in databases without essential integrity constraints.
Rapid Tool and Framework Proliferation Causes Fatigue
6Developers struggle to keep up with an overwhelming number of new and existing tools and frameworks (26% reported challenge in 2021). This creates decision paralysis, version fragmentation where teams become stuck on older versions, and costly migration efforts when attempting to upgrade.
Configuration drift detection and management
6Infrastructure managed by CloudFormation can drift when modified through AWS Console, SDK, or CLI. Without proper tools, detecting and reconciling these changes is manual and error-prone.
MVCC version copying creates excessive data duplication
6PostgreSQL's MVCC implementation copies all columns of a tuple when any column is modified, regardless of which columns change. This causes significant data duplication and increased storage demands, especially for large tables with many columns. No practical workaround exists without major PostgreSQL rewrites.
Complex and error-prone autovacuum configuration
6Configuring autovacuum correctly is challenging due to its complexity. Default global settings are inappropriate for large tables with millions/billions of tuples. If autovacuum invocations take too long or are blocked, dead tuples accumulate and statistics become stale, causing gradual query slowdown. Manual intervention is often required.
Terraform Business Source License creates vendor lock-in and product redistribution uncertainty
6Terraform's August 2023 BSL 1.1 license change creates legal uncertainty for organizations redistributing Terraform, embedding it in products, or offering IaC as a hosted service. The ambiguous definition of 'competitive' products triggers legal review and delays infrastructure platform roadmaps.
Replicas lack true MVCC support
6PostgreSQL replicas apply WAL updates, making replicas identical copies of the master at any point in time. They don't have true replica MVCC support, preventing queries from reading different versions of data on replicas compared to the primary. This design poses significant constraints for distributed systems.
Module version source attribute does not support variable interpolation
6The source and version attributes in Terraform's module block reject variable interpolation, preventing dynamic module sourcing. This limitation breaks flexible, parameterized module management patterns and forces hardcoded or copy-paste module references.
Terraform core development is slow with many stalled long-term bug fix PRs
6Terraform core development moves slowly with minimal innovation, and many important long-standing PRs fixing critical bugs or adding key features languish for months without maintainer attention. In contrast, the AWS provider releases weekly but has poor core team responsiveness.
Resource sharing between teams requires paid Enterprise Terraform solutions
6Terraform community edition lacks built-in mechanisms for cross-team resource sharing, forcing organizations without Terraform Enterprise to build custom state management solutions or invest in expensive enterprise licensing.
Every organization develops different Terraform conventions and custom tooling
6Terraform's flexibility allows each team to develop unique patterns: custom modules with different naming conventions, varying CI workflows (from simple apply to 8-step pipelines), conflicting use of Terragrunt, and different apply strategies. This fragmentation creates tribal knowledge and complicates onboarding.