Skip to content

Latest commit

 

History

History
228 lines (136 loc) · 2.85 KB

slides.md

File metadata and controls

228 lines (136 loc) · 2.85 KB
title slides
Challenges with Aurora PSQL
theme
./ogrodje.css

Challenges with Aurora PSQL


Andraz Brodnik aka. brodul

  • 15+ YOE 👴
  • Worked in AWS ☁️ back and forth from 2010
  • Multiple roles trough my career 🃏 ➡️

Ogrodje Logo


Situation 1/2

  • Joined a company 👋
  • Got tasked to move tenants from Cockroach DB to AWS RDS Aurora (Postgres engine) 🤓
  • Each tenant own database 📥

Situation 2/2

  • Cockroach is almost compatible Postgres database 🤌
  • Distributed across nodes (uses SSTables) 🪄
  • StatefulSet in EKS 🪚
  • Super amazing colleges (SRE and Platform) 🧑‍🤝‍🧑

AWS RDS Aurora

  • Database as a service 💸
  • Proprietary / supports MySql and Postgres 🕵️
  • 3x throughput 🐴
  • Storage layer is abstracted away 💾 ❇️
  • Synchronization over storage ☎️
  • Cheaper 🤑

Aurora


...


... it's one less thing we have to maintain 💯


Context

  • use aurora-postgres engine
  • use provisioned instead of serverless
  • Terraform

Pricing 💸

  • Storage is basically free
  • You pay for the compute/instances and IOPS
  • With IO optimized storage type you don't pay for IOPS, but you pay 30% premium on the instances

RDS proxy

  • Connection pooler (PgBouncer) 👨‍👦‍👦
  • Used to enable IAM auth, but that is now supported on basic Aurora

Proxy


API call modify rds proxy


Auth parameter

[
  {
    "Description": "string",
    "UserName": "string",
    "AuthScheme": "SECRETS",
    "SecretArn": "string",
    "IAMAuth": "DISABLED"|"REQUIRED"|"ENABLED",
    "ClientPasswordAuthType":
        "POSTGRES_SCRAM_SHA_256"|"POSTGRES_MD5"
  }
  ...
]

RDS Proxy Limits

  • 200 users max per proxy
  • Proxy goes into modifying state

Naming / API namespacing

  • Everything is RDS 🥇🥇
  • RDS CreateDBCluster api call for example

Api naming


def create_cluster(is_aurora=False, **args):
    if is_aurora:
        something()
    elif not is_aurora:
        something_else()







🥲


Everyone is a bit confused






def create_cluster(is_aurora=False, **args):
    if is_aurora:
        something()
        if context_web_console:
            multi_az = True


Postgres challenge


Postgres supports UTF8 encoding ...


Can you save any Unicode character as UTF8 encoding?



NULL char is used by Postgres internally


Thank you