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
| Feature | Multi-AZ | Read Replica |
|---|---|---|
| เป้าหมายหลัก | High availability / failover | Read scaling / reporting |
| Replication | มัก synchronous สำหรับ standby | asynchronous |
| รับ read traffic | standby แบบ DB instance deployment ไม่รับ read traffic | รับ read traffic ได้ |
| Failover | managed 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
- Multi-AZ ต่างจาก Read Replica อย่างไร?
- ทำไม RDS ควรอยู่ใน private subnet?
- Automated Backup ต่างจาก Manual Snapshot อย่างไร?