How I Root Caused a CPU Bottleneck in a RDS Database

An application was behaving very sluggishly, and I decided to take a look at it to identify and fix the cause of it. The problem was narrowed down to the RDS database taking a long time to respond to requests, and the mitigation action decided by the team was to "get a bigger instance." However, my analytical mind wanted to really understand the root of the problem to ensure that throwing more compute at the problem will actually solve it.

Backup Before Modifying a Production AWS RDS Database Managed by Terraform

Periodic changes to production cloud resources should be expected as the cloud offers elasticity to scale in/out with demands. Although some changes are riskier than others, the AWS RDS processes for applying (and rolling back) these changes have been battle-tested. Despite this, it is always good for organizations to have their own backup and restore strategies before riskier changes are applied - after all, the data does belong to them. In this post, I'll propose several methods to backup production AWS RDS databases that are managed via Terraform, as well as their considerations.

How Amazon Aurora’s Architecture Solves Scale Out Bottlenecks of Traditional Relational Databases

The casual observer would then wonder - if there are existing RDS offerings for both MySQL and PostgreSQL, why would Amazon Aurora be introduced? To understand its unique selling point, and claims for scalability and cost effectiveness, we need to look at how traditional relational databases handle scaling out.

PostgreSQL JDBC Driver – Upper Limit on Parameters in PreparedStatement

A lesser known limit of the PostgreSQL JDBC driver is the passing of at most 32767 variables into a PreparedStatement. This upper bound value on the number of parameters is derived from the maximum value of the signed Short data type in Java. In this post, I will show that this limit is not present when using the psql CLI client to connect directly to the PostgreSQL database, and only appears when using the JDBC driver. Subsequently I will suggest ways to address this limit.