Lesson 1Relational

RDS and Aurora

Amazon RDS ช่วยให้สร้างและดูแล relational database บน AWS ง่ายขึ้น โดย AWS จัดการ OS, database software patching, backup และบางส่วนของ high availability ให้

Relational Database และ RDS

Relational Database เก็บข้อมูลเป็น table และใช้ SQL สำหรับ query เหมาะกับข้อมูลที่มี relationship ชัดเจน, transaction, constraint และ reporting Amazon RDS รองรับ engine เช่น PostgreSQL, MySQL, MariaDB, SQL Server, Oracle และ Db2

DB Instance, Storage และ Parameter Group

  • DB Instance: compute + memory + database engine runtime
  • DB Storage: storage class/size/IOPS สำหรับข้อมูลและ log
  • Parameter Group: configuration ของ database engine เช่น connection, memory หรือ logging behavior
  • Subnet Group: กลุ่ม subnets ที่ RDS ใช้เลือก placement ใน VPC

Multi-AZ vs Read Replica

FeatureMulti-AZRead Replica
เป้าหมายหลักHigh availability / failoverRead scaling / reporting
Replicationมัก synchronous สำหรับ standbyasynchronous
รับ read trafficstandby แบบ DB instance deployment ไม่รับ read trafficรับ read traffic ได้
Failovermanaged failoverต้อง promote/ออกแบบเองตาม engine

Backup, Snapshot และ Restore

Automated Backup ช่วยทำ point-in-time recovery ตาม retention window ส่วน Manual Snapshot เก็บไว้จนกว่าจะลบเอง แต่ backup ที่ไม่เคยทดสอบ restore ถือว่ายังไม่พิสูจน์ว่าใช้งานได้จริง

Encryption และ Database Credential

ควรเปิด encryption at rest ด้วย KMS และใช้ TLS สำหรับ in transit เมื่อ application เชื่อมต่อ database Database credential ควรเก็บใน Secrets Manager หรือ Parameter Store แทนการฝังใน code หรือ AMI

RDS Proxy และ Aurora

RDS Proxy ช่วยจัดการ connection pooling และลดผลกระทบจาก connection storm โดยเฉพาะ serverless/application ที่เปิด connection บ่อย Amazon Aurora เป็น relational database engine จาก AWS ที่ compatible กับ MySQL/PostgreSQL บางรุ่น และมี storage architecture แยกจาก RDS engine ทั่วไป

Common mistakes

  • วาง RDS ใน public subnet หรือเปิด public access โดยไม่จำเป็น
  • สับสนว่า Read Replica คือ HA replacement ของ Multi-AZ
  • เปิด backup แต่ไม่เคย restore test
  • เก็บ database password ใน source code หรือ User Data

Review questions

  1. Multi-AZ ต่างจาก Read Replica อย่างไร?
  2. ทำไม RDS ควรอยู่ใน private subnet?
  3. Automated Backup ต่างจาก Manual Snapshot อย่างไร?