สารบัญ
Series: Database 101 — เข้าใจห้องสมุดของเมืองดิจิทัล (ภาษาคน)
Part 0 — WHY: ทำไมต้องมีห้องสมุด
Part 1 — ประวัติ: 4 ยุคของ Database
- EP.02 — ยุค 1960s-70s: Hierarchical → Relational Revolution
- EP.03 — ยุค 1980s-90s: ACID + Enterprise Backbone
- EP.04 — ยุค 2000s-2010s: NoSQL Movement + Big Data
- EP.05 — ยุค 2020s: Cloud-Native + Serverless Database ← คุณอยู่ตรงนี้
Part 2 — How: ภายใน Database ทำงานยังไง
- EP.06 — Schema, Normalization, Keys (เร็วๆ นี้)
- EP.07 — Index + Query Optimization (เร็วๆ นี้)
- EP.08 — Transaction + Concurrency Control (เร็วๆ นี้)
Part 3 — เลือก Storage ตามขนาด
- EP.09 — มุมเว็บส่วนตัว: Database-less Architecture (เร็วๆ นี้)
- EP.10 — มุม Personal Data: SQLite + Local-first (เร็วๆ นี้)
- EP.11 — มุม Startup: Serverless DB Stack (เร็วๆ นี้)
- EP.12 — มุม Enterprise: Polyglot Persistence (เร็วๆ นี้)
Part 4 — Operations
- EP.13 — DBA Role + Privileged Access (เร็วๆ นี้)
- EP.14 — Database Security + Encryption (เร็วๆ นี้)
Part 5 — Future
- EP.15 — Vector Database + AI Era (เร็วๆ นี้)
- EP.16 — Wrap: Decision Tree + 5 Trends (เร็วๆ นี้)
EP.04 จบที่ภาพใหญ่ครับ NoSQL ระเบิดออกมา 4 ตระกูล CAP theorem บังคับให้ทุก distributed database ต้องเลือกข้าง Polyglot Persistence กลายเป็นวิธีคิดใหม่ของ enterprise — ใช้ database หลายตัวในระบบเดียว ตัวละหน้าที่ ฟังเหมือนทศวรรษ 2010s วงการ database จบครบทุกมุมแล้วนะ
แต่จริงๆ มีสมมติฐานเงียบๆ อันหนึ่งที่เราคุยกันมาตลอด EP.01-04 โดยไม่รู้ตัว — database อยู่บน server ที่บริษัทดูแลเอง ไม่ว่าจะเป็น Oracle ในตู้แพงๆ ของธนาคาร MySQL บน Amazon EC2 ของสตาร์ทอัพ หรือ Cassandra cluster ของ Discord — ทุกตัวมีคนต้องตื่นตอนตี 3 ตอน server พัง มี DBA (Database Administrator) นั่งดูกราฟ disk space มี DevOps เขียน script backup ทุกคืน มี on-call rotation ที่ engineer ผลัดกันถือมือถือไม่ห่างตัวสุดสัปดาห์
ปี 2020s สมมติฐานนั้นพังลง ไม่ใช่เพราะเทคโนโลยีดีขึ้นเฉยๆ แต่เพราะมีของชิ้นใหม่เข้ามาเปลี่ยน ใครจ่ายเงินตอนไหน — เรียกกันว่า Serverless Database และมันเปลี่ยนเกมของสตาร์ทอัพทั้งวงการเลย
เริ่มที่ฉากในห้องประชุม co-working space กันก่อน
ฉากเปิด: สตาร์ทอัพไทย 3 คน ที่ launch product ด้วย Supabase + 0 DBA
ลองนึกภาพ scenario นี้ครับ — เป็นสตาร์ทอัพสมมติ แต่ pattern แบบนี้เกิดจริงในวงการปี 2025
ทีม 3 คน นั่งที่ co-working ย่านอารีย์ Founder มาจากสาย business Dev คนเดียวเขียน frontend + backend ทั้งหมด Designer ทำ UI/UX + ดูแล social ไม่มี CTO ไม่มี DBA ไม่มี DevOps ไม่มีใครต้องตื่นตอนตี 3
product ของพวกเขาคือ SaaS เล็กๆ สำหรับร้านอาหาร — จัดการ reservation + เก็บข้อมูลลูกค้าประจำ user หลัก 10,000 ราย peak ตอนเย็นวันศุกร์ ~500 concurrent user off-peak ตอนตี 3 ~5 user ระบบ build ด้วย stack นี้
- Frontend — Next.js บน Vercel (free tier ขั้นแรก)
- Backend logic — Supabase Edge Functions
- Database — Supabase Postgres
- Auth — Supabase Auth
- File storage — Supabase Storage (เก็บรูปร้าน, รูปเมนู)
- Realtime — Supabase Realtime (โต๊ะถูกจองปุ๊บ user คนอื่นเห็นทันที)
ค่าใช้จ่ายเดือนแรก = 0 บาท ทั้งหมดอยู่ใน free tier ของ Supabase + Vercel พอเริ่มมี paid customer ค่อยขยับขึ้น Pro tier ราว $25/เดือน ไม่มี server ให้ดูแล ไม่มี backup script ให้เขียน ไม่มี SSL certificate ให้ renew ไม่มี security patch ให้ตามอุดทุกสัปดาห์
ทีนี้ลองเปรียบเทียบกับ stack เดียวกัน ถ้า build ปี 2014 ดูครับ
- Database server — AWS RDS MySQL db.t3.medium, ~$60/เดือน
- Cache layer — Redis บน EC2, ~$30/เดือน
- Search — Elasticsearch cluster, ~$150/เดือน
- Auth — เขียน auth logic เอง + เก็บ session ใน Redis
- File storage — S3, ~$10/เดือน
- Realtime — ตั้ง WebSocket server เอง บน EC2 อีกตัว, ~$30/เดือน
- DBA part-time — อย่างน้อย 20 ชม./สัปดาห์, ~50,000 บาท/เดือน
- DevOps — ตั้ง backup, monitoring, alerting, scaling, security patch — อีก 20 ชม./สัปดาห์
- On-call rotation — Dev ต้องถือมือถือสุดสัปดาห์ เพราะ database ล่มได้ทุกเมื่อ
stack 2014 = ทุนเริ่มต้นอย่างน้อย 100,000 บาท/เดือน + มนุษย์ 3-5 คนดูแล stack 2025 = 0 บาท + 0 DBA ระบบเดียวกัน ทำของเดียวกัน นี่แหละที่หลายคนเรียกว่า “democratization ของ infrastructure” — เครื่องมือที่เคยใช้งบสตาร์ทอัพ Series A ทั้งรอบ ตอนนี้นักพัฒนาคนเดียวก็มีใช้
ทำไมเป็นแบบนี้ได้? ต้องเข้าใจวิวัฒนาการของ database ในยุค cloud ก่อนครับ — มันมี 4 ระดับชัดเจน
Database evolution ในยุค cloud — 4 ระดับ
ตั้งแต่ปี 2006 ที่ AWS เปิดตัว EC2 วิธีที่บริษัทเก็บ database เปลี่ยนไป 4 ระดับ ยิ่งระดับสูง ยิ่ง “ไม่ต้องดูแล” + ยิ่ง “จ่ายตามใช้” มาดูทีละชั้น
ระดับ 1: Self-hosted (MySQL บน EC2)
Analogy: ซื้อตึกครับ คุณเป็นเจ้าของตึก ต้องจ่ายค่าซ่อม ค่าน้ำ ค่าไฟ ค่ารักษาความปลอดภัยเอง หลังคารั่ว — คุณซ่อม โจรเข้า — คุณจ้างยาม
ในโลก database — คุณไป AWS เช่า EC2 instance ลง MySQL/Postgres เอง ตั้ง backup เอง monitor disk space เอง อุด security patch เอง ขยาย disk ตอนเต็มเอง ทุกอย่างคุณทำเองหมด
Cost: ค่า server hours ($30-200/เดือนต่อ instance) + เงินเดือน DBA (อย่างน้อย 50,000-100,000 บาท/เดือน)
เหมาะกับ: บริษัทที่มีทีม IT in-house ใหญ่อยู่แล้ว ระบบที่ต้อง customize ลึก เช่น tune kernel parameter หรือระบบที่ compliance บังคับให้ data อยู่บน server ที่บริษัทควบคุมเอง 100% (เช่น banking ในบางประเทศ)
ไม่เหมาะกับ: สตาร์ทอัพ side project ทีมที่ไม่มี DBA
ระดับ 2: Managed Database (DBaaS) — AWS RDS / Cloud SQL / Azure SQL
Analogy: เช่ารถ คุณเลือกรุ่น (Honda City vs Toyota Camry vs Mercedes) จ่ายเป็นรายวัน ใช้หรือไม่ใช้ก็จ่ายเหมือนเดิม แต่ไม่ต้องเปลี่ยนถ่ายน้ำมันเครื่องเอง ไม่ต้องเช็คเบรก บริษัทเช่าทำให้หมด
ในโลก database — คุณบอก AWS ว่า “ขอ Postgres db.t3.medium” AWS install Postgres ให้ patch security ให้ ตั้ง automated backup ให้ ทำ replication ให้ คุณมีหน้าที่แค่ใช้งาน + ออกแบบ schema + เขียน query แต่ที่สำคัญ คุณยังต้องเลือก instance size เอง + จ่ายเป็นรายชั่วโมงไม่ว่าจะมี traffic หรือไม่
Cost: ค่า instance hours ($15-500+/เดือน) ใช้หรือไม่ใช้ก็จ่ายเหมือนเดิม ไม่ต้องจ้าง DBA ดูแล day-to-day แต่ยัง config + monitor เอง
เหมาะกับ: production app ที่ traffic predictable บริษัทขนาดกลาง ระบบ enterprise ที่ต้องการความเสถียร + ต้องการให้ AWS รับผิดชอบเรื่อง infrastructure
ตัวอย่างในตลาด: AWS RDS, Google Cloud SQL, Azure SQL Database, Aurora (Postgres/MySQL compatible) Aurora ใหม่กว่า RDS เพราะ AWS เขียน storage layer ใหม่ให้ scale ได้ถึง 128TB
ระดับ 3: Serverless Database — Aurora Serverless / DynamoDB on-demand / PlanetScale / Neon
Analogy: เรียก Grab ไม่มีรถเป็นของตัวเอง ไม่มีคนขับเป็นพนักงานประจำ จ่ายตามระยะที่เดินทาง 3 ทุ่ม Friday ราคาแพงหน่อย 4 โมงเช้า Sunday ราคาถูก ไม่ใช้ ไม่จ่าย
ในโลก database — คุณไม่ต้อง provision instance size ระบบ auto-scale ขึ้นเมื่อ traffic เยอะ scale ลงถึง 0 เมื่อไม่มี request จ่ายตาม request จริงที่เกิดขึ้น ไม่ใช่ตาม server-hour ที่เปิดทิ้งไว้
ตรงนี้สำคัญที่ต้องเข้าใจ — “Serverless” ไม่ได้แปลว่า “ไม่มี server” server ยังอยู่ครับ แต่ AWS/Cloudflare/Supabase ดูแลให้ scale ให้ billing ให้คุณตาม request ไม่ใช่ตาม server คุณแค่ไม่ต้องเห็นมัน
Cost: จ่ายตาม request + storage ที่ใช้จริง side project ที่มี user 100 คน/เดือน อาจจ่าย $0-5/เดือน app ที่ viral ขึ้นมา 10 ล้าน user — bill ขยับขึ้นตาม
เหมาะกับ: สตาร์ทอัพระยะ MVP, side project, app ที่ traffic spike แบบไม่แน่นอน (เช่น เว็บข่าว เว็บอีเวนต์ app ที่ pop ตอนโปรโมชัน)
ตัวอย่างในตลาด: Aurora Serverless v2, DynamoDB on-demand, PlanetScale (MySQL), Neon (Postgres), Turso (SQLite distributed), Upstash (Redis serverless)
ระดับ 4: Edge Database — Cloudflare D1 / Turso
Analogy: ร้านสะดวกซื้อสาขาทั่วเมือง คุณไม่ต้องเดินทางไปสาขาใหญ่ที่กรุงเทพ ที่ปากซอยมีอยู่แล้ว ของชิ้นเดียวกัน ราคาเดียวกัน แต่ใกล้คุณกว่าเยอะ
ในโลก database — แทนที่ database จะอยู่ที่ region เดียว (เช่น Singapore) แล้ว user จากบราซิลต้อง round-trip ครึ่งโลก database กระจายอยู่ทั่วโลกแบบ replicated user จากบราซิลอ่านจาก server ที่ Sao Paulo user จากญี่ปุ่นอ่านจาก server ที่ Tokyo read latency จากเป็นร้อย ms เหลือ 5-20 ms
Cost: จ่ายตาม read/write request + storage Cloudflare D1 มี free tier ที่กว้างมาก — 5 ล้าน read/วัน + 100k write/วัน ฟรี
เหมาะกับ: global app, app ที่ user กระจายทั่วโลก, app ที่ read-heavy (อ่านบ่อยกว่าเขียนหลายเท่า)
ตัวอย่างในตลาด: Cloudflare D1 (SQLite distributed), Turso (libSQL fork), Upstash Global
สังเกตว่าแต่ละระดับ “ไม่ดีกว่า” ระดับก่อน มันคือ trade-off คนละแบบ ระดับ 1 ให้ control สูงสุด ระดับ 4 ให้ ease + global reach แต่ feature น้อยกว่า เลือกตามงาน ไม่ใช่เลือกตาม buzzword
ทีนี้ — ทำไม Serverless DB ถึงเปลี่ยนเกมของสตาร์ทอัพโดยเฉพาะ?
ทำไม Serverless DB เปลี่ยนเกมของสตาร์ทอัพ
ก่อนยุค serverless การเริ่ม build product ที่มี database มีต้นทุนตั้งต้นชัดเจน RDS instance เล็กสุดยังอยู่ที่ $15-30/เดือน ต้องจ่ายตั้งแต่วันแรกแม้จะยังไม่มี user สักคน MVP fail — จ่ายเปล่า MVP ติด — ต้อง provision เผื่อตอน viral จ่ายแพงตอน traffic ยังไม่มี
serverless พลิกสมการนี้ทั้งหมด มี 3 ผลกระทบหลักที่เปลี่ยนเกมของวงการ
ผลกระทบที่ 1: Cost เริ่มต้น = 0 — free tier ของ Supabase, Neon, Cloudflare D1, DynamoDB ครอบคลุม MVP ของสตาร์ทอัพส่วนใหญ่ได้สบาย founder ไม่ต้องมี burn rate สำหรับ infrastructure กล้าทดลองมากขึ้น เพราะ “ลองแล้ว fail ก็ไม่เสียเงิน”
ผลกระทบที่ 2: ไม่ต้องจ้าง DBA — เงินเดือน DBA full-time ในไทยปี 2025 อยู่ที่ 80,000-200,000 บาท/เดือน สำหรับสตาร์ทอัพ Seed round นี่คือ 1 ใน 3 ของ runway ทั้งเดือนเลยนะครับ serverless database ไม่ต้องการ DBA — Supabase/Neon/AWS ดูแลให้หมด เงินตรงนี้เอาไปจ้าง engineer ที่สร้าง product feature แทนได้
ผลกระทบที่ 3: scale อัตโนมัติเมื่อ viral — เมื่อก่อน ถ้า product ติด TechCrunch แล้ว user ทะลัก admin ต้องตื่นตอนตี 3 มา resize instance อาจจะต้อง migrate database ตอน traffic peak ที่สุด serverless จะ auto-scale ขึ้นเอง founder นอนหลับได้ bill อาจจะแพงขึ้น แต่ระบบไม่ล่ม
ตรงนี้สำคัญสำหรับผู้บริหารครับ — serverless DB ไม่ใช่แค่เทคโนโลยีใหม่ มันคือ business model ใหม่ของ infrastructure จากเดิม “จ่ายตามขนาดที่ provision” กลายเป็น “จ่ายตามที่ใช้จริง” เปลี่ยน CAPEX เป็น OPEX ที่ปรับขนาดได้ตาม revenue
ก่อนจะไปต่อ — ถ้ายังไม่แม่นเรื่อง serverless / cloud เป็นพื้นฐาน แนะนำกลับไปอ่าน IT Foundation EP.04 — Architectures (มี section serverless อธิบายตั้งแต่หลักคิด) + CyberSec Foundation EP.32 — Cloud Shared Responsibility (อธิบาย IaaS/PaaS/SaaS/FaaS ใครรับผิดชอบอะไรในแต่ละชั้น) ก่อน EP.05 ตอนนี้จะลงลึกเรื่อง database ของ serverless ต่อจากตรงนั้น
ทีนี้ serverless database คนเดียวยังไม่เปลี่ยนเกมเต็มที่ครับ สิ่งที่เปลี่ยนเกมจริงๆ คือตอนที่ database ถูกรวมกับ Auth + Storage + Realtime + Functions ในชุดเดียว — สิ่งที่วงการเรียกว่า BaaS
The “BaaS” Rise — Backend-as-a-Service ที่รวมหลายอย่าง
ปี 2010-2020 backend ของ web/mobile app ทั่วไปประกอบด้วยส่วนพวกนี้
- Database (Postgres/MySQL/MongoDB)
- Authentication (login, signup, forgot password)
- File storage (รูป, video)
- Realtime updates (chat, notification, live data)
- Background jobs (ส่งอีเมล, generate report)
ทั้งหมดนี้นักพัฒนาต้อง assemble เอง — เช่า server install ทีละตัว เชื่อมเข้าด้วยกัน ใช้เวลา 2-4 สัปดาห์ก่อน feature แรกของ product จะเขียนได้
BaaS (Backend-as-a-Service) คือบริการที่รวมทั้งหมดนี้ในแพ็กเดียว install ครั้งเดียว ใช้ได้ครบ มาดู major players กัน
Supabase
ตำแหน่งในตลาด: “open-source Firebase alternative ที่ใช้ Postgres” เกิดปี 2020 ระดมทุน Series B ปี 2024 กลายเป็น default choice ของสตาร์ทอัพยุคใหม่หลายเจ้า เพราะใช้ Postgres ที่นักพัฒนาคุ้นอยู่แล้ว
สิ่งที่ได้ในแพ็กเดียว:
- Postgres database (managed)
- Auth (email, OAuth, magic link)
- Storage (S3-compatible)
- Realtime (subscribe to database changes)
- Edge Functions (Deno-based serverless functions)
- Vector embeddings (สำหรับ AI app)
Free tier: 500 MB database + 1 GB storage + 50,000 monthly active users ครอบคลุม MVP ส่วนใหญ่ได้
Firebase
ตำแหน่งในตลาด: ผู้บุกเบิก BaaS ตั้งแต่ปี 2011 Google ซื้อปี 2014 โตจาก mobile-first จนกลายเป็น ecosystem ใหญ่ที่ทำได้แทบทุกอย่าง
สิ่งที่ได้ในแพ็กเดียว:
- Firestore (NoSQL document database) หรือ Realtime Database
- Auth + Phone auth
- Storage
- Hosting (static site)
- Cloud Functions
- Analytics + Crashlytics + Remote Config
ข้อต่าง: ใช้ NoSQL (Firestore) เป็นหลัก ไม่ใช่ SQL นักพัฒนาที่คุ้น relational จะปรับตัวยากตอนทำ query ซับซ้อน
Appwrite
ตำแหน่งในตลาด: open-source alternative ที่ self-host ได้ เริ่มมีแรงในปี 2022-2023 เหมาะกับทีมที่กังวลเรื่อง vendor lock-in หรือต้องการ data sovereignty
PocketBase
ตำแหน่งในตลาด: single binary, SQLite-based ไม่ใช่ “as a service” จริงๆ มันคือไฟล์เดียวที่คุณเอาไปวางบน server แล้วได้ backend ครบ เหมาะกับ side project ขนาดเล็กที่อยากได้ admin panel + auth + database โดยไม่ต้อง assemble เอง
ทำไม BaaS = ทางลัดของ MVP
ใน workflow ของ MVP ปี 2026 นักพัฒนาคนเดียว launch product ได้ภายใน 1-2 สัปดาห์โดยใช้ BaaS เพราะ
- ไม่ต้องเขียน auth logic — ตรงนี้กินเวลา 1-2 สัปดาห์ถ้าทำเอง + เป็นจุดที่ผิดพลาดแล้วเสีย security ทันที
- ไม่ต้องตั้ง file upload pipeline — ตรงนี้กินเวลาอีก 3-5 วัน
- ไม่ต้องเขียน realtime sync — ปกติเขียนยากมาก ใช้ Supabase realtime เปิด feature ได้ใน 30 นาที
- ทุกอย่างมี SDK พร้อม — Next.js / React Native / Flutter / Vue เรียกใช้ได้ทันที
ผลคือ time to market สั้นลงจาก 3-6 เดือน เหลือ 2-4 สัปดาห์ founder ทดสอบไอเดียได้เร็วขึ้น 4-5 เท่า
แต่ระวังนะครับ — “เร็ว” ไม่ได้แปลว่า “ฟรี” หรือ “ปลอดภัย” จาก vendor lock-in ผมจะกลับมาเรื่องนี้ใน section PlanetScale
ขอข้ามไปอีก trend หนึ่งของยุค 2020s ที่กำลังมาแรงก่อน — Edge Database
Edge Database เจาะลึก
ใน CAP theorem ของ EP.04 เราเรียนว่า เมื่อ database กระจายตัว ต้องเลือกระหว่าง consistency กับ availability Edge database คือคำตอบใหม่ของวงการที่บอกว่า — ในกรณีของ read-heavy workload (อ่านบ่อยกว่าเขียน 100 เท่า) เรา replicate ข้อมูลกระจายทั่วโลก ให้ user อ่านจาก server ใกล้ตัวที่สุด แล้ว write กลับไปที่ primary region ทีหลัง
มาดู major players กัน
Cloudflare D1
คืออะไร: SQLite ที่ Cloudflare distribute ทั่ว 300+ data center ทั่วโลก ใช้ SQL syntax ปกติ (ใครเคยเขียน SQL เขียนได้เลย ไม่ต้องเรียนใหม่)
ทำไมใช้ SQLite: SQLite เป็น database ที่เล็กที่สุด embed ใน edge worker ได้ latency ต่ำมาก Cloudflare เลือกตัวนี้เพราะมันเหมาะกับ edge computing model ของเขา
Use case จริง: static site ที่มี comment section, blog ที่ต้องการ search ลึก, dashboard analytics ที่ user ทั่วโลก
Free tier: 5 ล้าน read + 100k write/วัน — กว้างมากสำหรับ side project
Turso
คืออะไร: libSQL — fork ของ SQLite ที่บริษัท ChiselStrike พัฒนา ให้ replicate ข้าม region ได้
จุดต่างจาก D1: Turso วางตัวเองเป็น “general-purpose serverless SQLite” ใช้นอก Cloudflare ecosystem ได้ มี per-database isolation (สำหรับ multi-tenant SaaS ที่ tenant ละ database)
Use case จริง: SaaS ที่แต่ละ customer ต้องการ database แยก, app ที่ต้องการ embedded SQLite + cloud sync
Upstash
คืออะไร: Redis-as-a-service ที่เป็น serverless จริงๆ จ่ายตาม request ไม่ใช่ตาม instance
จุดต่าง: Redis ปกติเป็น in-memory cache ที่ต้อง provision RAM Upstash เก็บข้อมูลใน storage ที่ load เข้า memory ตอนใช้งาน scale ลงถึง 0 ได้
Use case จริง: session store, rate limiting, queue สำหรับ serverless function
หมายเหตุ — เรื่อง SQLite local-first กับทำไม SQLite กลับมา trend ในปี 2024-2025 ผมจะลงลึกใน EP.10 — มุม Personal Data: SQLite + Local-first (เร็วๆ นี้) ตอนนี้รู้แค่ว่า edge database คือ trend ที่ใช้ SQLite distributed เป็นแกนก็พอ
ทีนี้มาถึงส่วนที่ผมอยากให้ผู้บริหารทุกคนอ่านครับ เพราะมันคือบทเรียนเรื่อง vendor lock-in ที่สตาร์ทอัพหลายพันรายของโลกเพิ่งเจอเมื่อปี 2024
PlanetScale ตัด free tier 2024 — บทเรียนเรื่อง vendor lock-in
ปี 2021-2024 PlanetScale คือสิ่งที่นักพัฒนาทั่วโลกหลงรัก มันคือ MySQL serverless ที่มี 3 จุดเด่นที่ไม่มีใครเหมือน
- Branching — เหมือน Git เลยครับ คุณ branch database สำหรับ feature ใหม่ test ได้ merge กลับ นักพัฒนาคุ้นกับ git workflow รัก feature นี้มาก
- Schema migration ปลอดภัย — ระบบช่วย review schema change ก่อน deploy
- Free tier ที่กว้าง — 5 GB storage + 1 พันล้าน row read/เดือน ฟรี ครอบคลุม MVP แทบทุกตัว
สตาร์ทอัพหลายพันรายเลือก PlanetScale เป็น default database side project นับไม่ถ้วน build บนมัน ทุกคนคิดว่า “ฟรีตลอดไป” เพราะบริษัทขายเงินจาก enterprise tier
แล้วต้นปี 2024 — PlanetScale ประกาศ ตัด free tier ทั้งหมด user ทุกคนต้อง migrate ขึ้น paid plan ขั้นต่ำ 39/เดือนสำหรับของที่เคยฟรี หรือย้าย database ทั้งหมดไปที่อื่นภายในเดือนเดียว
อ้าวเฮ้ย ผลคือสตาร์ทอัพและ developer ทั่วโลกเดือดร้อนมาก มี blog post เป็นพันโพสต์เล่า migration story ไป Neon, Supabase, PostgreSQL บน RDS บางเคสที่ schema ใหญ่ + ใช้ feature เฉพาะของ PlanetScale (เช่น branching workflow) ใช้เวลา migrate เป็นเดือน + เสีย feature บางตัวไปด้วย
บทเรียนสำหรับผู้บริหาร
Vendor lock-in คือ cost ที่ไม่เห็นตอนเริ่ม ตอน adopt ทุกอย่างฟรีและสะดวก ตอน vendor เปลี่ยนกลยุทธ์ คุณคือคนที่จ่ายราคา เคสนี้ไม่ใช่ครั้งแรก (Heroku, Parse, Firebase Realtime Database — ทุกตัวเคยเปลี่ยน pricing ให้ user เจ็บมาก่อน) และจะไม่ใช่ครั้งสุดท้ายแน่นอน
3 mitigation ที่ผู้บริหารควรกำหนดเป็น policy ตั้งแต่วันแรก
- ใช้ standard SQL/standard API — อย่าใช้ feature เฉพาะของ vendor ถ้าหลีกเลี่ยงได้ PlanetScale branching สนุก แต่ถ้าใช้ — ย้ายออกยาก ใช้ Postgres ปกติ — ย้ายไปที่ไหนก็ได้
- มี migration plan เขียนไว้ — ก่อน adopt vendor ใหม่ ถามว่า “ถ้าเขาตัด free tier พรุ่งนี้ เราจะย้ายไปไหน + ใช้เวลานานแค่ไหน” ถ้าตอบไม่ได้ แปลว่า vendor lock-in สูง ระวัง
- Multi-cloud ในส่วนที่สำคัญ — สำหรับ enterprise ที่ critical จริงๆ ระบบควรย้าย provider ได้ภายในไม่กี่สัปดาห์ สตาร์ทอัพเล็กไม่จำเป็นต้องทำเต็ม แต่อย่างน้อย database ควรเป็น standard format ที่ port ออกได้
มุมผู้บริหาร — ไม่มี free lunch ในวงการ infrastructure ของฟรีวันนี้ = subsidy ของ VC ที่จะหมดวันใดก็วันหนึ่ง ถ้า business model ของ product คุณพึ่งฟรี tier ของ vendor — business model นั้นเปราะบาง
Pricing Model ที่เปลี่ยนเกม — Pay per Request vs Pay per Server-hour
หัวใจของ serverless database จริงๆ ไม่ใช่ technology ครับ มันคือ pricing model มาดูตารางเปรียบเทียบ cost จริงของ side project ที่มี traffic 10,000 request/เดือน + storage 500 MB
| Option | Cost ต่อเดือน | จ่ายตอนไม่มี traffic |
|---|---|---|
| Self-hosted EC2 + MySQL (t3.micro) | ~$15 | ~$15 |
| RDS db.t3.micro (managed Postgres) | ~$15-20 | ~$15-20 |
| Aurora Serverless v2 (min 0.5 ACU) | ~$0.50-2 | ~$0.50-2 |
| DynamoDB on-demand | ~$0 (ใต้ free tier) | $0 |
| Cloudflare D1 | $0 (ใต้ free tier) | $0 |
| Supabase Free tier | $0 | $0 |
ดูตัวเลขแล้วน่าตกใจครับ side project เดียวกัน option แรกจ่าย 0/เดือน ต่างกัน 100% ไม่ใช่ 100 บาท
ทำไมต่างขนาดนี้? เพราะ pricing model ต่างกัน
- Pay per server-hour (option 1, 2) — server เปิด 24/7 จ่าย 24/7 ไม่ว่าจะมี user หรือไม่ side project ที่มี user เข้า 100 ครั้ง/วัน server idle 99% ของเวลา จ่ายเปล่า
- Pay per request (option 3, 4, 5, 6) — request 0 = bill 0 request 10,000 = bill ตามจริง มี user 100 ครั้ง/วัน bill ตามนั้น ไม่ขาด ไม่เกิน
ความหมายในภาคปฏิบัติ — pricing model แบบนี้ทำให้ “experiment” ฟรีจริงๆ นักพัฒนาเปิด side project 10 ตัว 9 ตัวไม่มีใครใช้ bill รวมยังเป็น $0 1 ตัวที่ติด bill ค่อยขึ้นตาม revenue
ก่อน serverless การ experiment 10 ไอเดียมี cost คงที่ 0 Volume ของการทดลองในวงการเพิ่มขึ้น 5-10 เท่า และจากการทดลองที่เพิ่มขึ้นนี้แหละคือที่มาของ product ดีๆ จำนวนมากในยุคปัจจุบัน
มุมผู้บริหาร — pricing model นี้เปลี่ยน economics ของการสร้างสตาร์ทอัพ burn rate ของ Seed round ที่เคยใช้กับ infrastructure 30-40% เหลือ 5-10% เงินที่เหลือเอาไปหา product-market fit จ้าง engineer ทำ marketing แทน นี่คือเหตุผลที่จำนวนสตาร์ทอัพรอบ Seed ในตลาดทั่วโลกเพิ่มขึ้นเรื่อยๆ ตั้งแต่ปี 2020
มุมผู้บริหาร — signal 4 อย่างที่บอกว่าควรย้ายจาก RDS ไป Serverless
ตรงนี้เขียนเฉพาะสำหรับเจ้าของกิจการ / ผู้บริหารที่กำลังจะตัดสินใจครับ ถ้าทีม IT เสนอย้ายจาก RDS (หรือ self-hosted database) ไป serverless check 4 signal นี้ดู
Signal 1: Traffic ไม่สม่ำเสมอ (peak/off-peak ต่างกันมาก) — ถ้า peak ตอนกลางวัน 1,000 req/วินาที off-peak ตอนตี 3 = 5 req/วินาที RDS ต้อง provision เผื่อ peak (เปลือง 90% ของเวลา) serverless จ่ายตามจริง ประหยัด 60-80%
Signal 2: ไม่มี DBA full-time — ถ้าทีมไม่มี DBA + ไม่ได้วางแผนจ้าง serverless ลดภาระ ops ลง 90% RDS ยังต้องมีคน config + monitor + tune query
Signal 3: Product ยังไม่ proven (อยู่ใน MVP/PMF stage) — ถ้ายังหา product-market fit อยู่ serverless ให้ economic flexibility fail แล้วไม่เสียเงินเปล่า ติดแล้ว scale ได้ทันที
Signal 4: ระบบมี downtime ก็ได้ (ไม่ใช่ banking-critical) — serverless บางตัวมี cold start latency 1-3 วินาทีตอนตื่นจาก idle ถ้าระบบยอมรับได้ก็ OK ถ้าเป็นระบบเทรดหุ้นที่ทุก ms มีค่า ไม่เหมาะ
ส่วน 4 signal ที่ ไม่ควรย้าย
- ระบบ enterprise ที่ traffic predictable + sustained สูง (RDS ถูกกว่า serverless ตอน traffic เต็ม)
- Compliance บังคับให้ data อยู่บน infrastructure ที่ควบคุมเองได้
- ระบบที่ใช้ feature เฉพาะของ database engine (เช่น stored procedure ซับซ้อน) ที่ serverless ตัดออก
- ทีมเก่งและพอใจกับ stack ปัจจุบัน — อย่าเปลี่ยนเพื่อ buzzword
ปิดบท — Database Era ที่กำลังเข้า
EP.05 จบที่นี่ครับ 5 ยุคของ database ตลอด Part 1 สรุปได้สั้นๆ ตามนี้
- 1960s-70s — Hierarchical: ห้องสมุดแบบต้นไม้ ขยายยาก
- 1970s-80s — Relational Revolution: ตารางที่ JOIN ได้ + SQL กลายเป็นมาตรฐานวงการ
- 1980s-90s — ACID + Enterprise Backbone: Oracle/SQL Server ครองธนาคาร สายการบิน ระบบบัญชี
- 2000s-2010s — NoSQL + Big Data: CAP theorem + 4 ตระกูล NoSQL + Hadoop + Polyglot Persistence
- 2020s — Cloud-Native + Serverless: DBaaS → Serverless → Edge, pricing model เปลี่ยนจาก server-hour เป็น per-request
ตลอด 5 ยุคนี้ pattern ที่ซ้ำคือ เทคโนโลยีไม่แพ้เทคโนโลยี — แพ้ economic model ที่เปลี่ยนเกม Hierarchical ไม่แพ้เพราะ technical inferior แพ้เพราะ relational + SQL ลด cost ของ developer ลงมหาศาล Self-hosted database ไม่แพ้ serverless เพราะ technical แย่ แพ้เพราะ serverless ลด cost ของ infrastructure + DBA ลงเหลือ near-zero
Part 1 จบที่นี่ครับ แต่ EP.05 ทั้งหมดที่คุยมา เราพูดถึง database จากภายนอก — เลือกตัวไหน host ที่ไหน จ่ายยังไง ยังไม่ได้เข้าใจว่าภายใน database มันทำงานยังไง ทำไม index ทำให้ query เร็วขึ้น 1,000 เท่า schema ที่ออกแบบดีต่างกับที่ออกแบบไม่ดียังไง transaction ที่รับประกัน ACID ทำได้ยังไง
Part 2 (EP.06-08) จะลงลึกตรงนี้ — schema, normalization, keys ใน EP.06 ต่อด้วย index + query optimization ใน EP.07 ปิดท้ายที่ transaction + concurrency control ใน EP.08 ตรงนี้เป็นเรื่องที่ engineer ต้องรู้เต็มๆ แต่ผู้บริหารที่อ่านจบจะเห็นว่าทำไม “DBA เก่ง” ถึงแพง
แล้วหลังจาก Part 2 Part 3 จะกลับมาที่มุม “เลือก storage ตามขนาด” อีกครั้ง ตั้งแต่เว็บส่วนตัว (database-less ที่ blog นี้ใช้อยู่) ไปจนถึง enterprise ที่ใช้ database 5-10 ตัวพร้อมกัน ทุกขนาดมีสูตรของมันเอง
→ EP.06 — Schema, Normalization, Keys (เร็วๆ นี้)