2449 คำ
12 นาที
Database 101 EP.05 — ยุค 2020s: Cloud-Native + Serverless Database (เมื่อ Database เลิกต้องการ DBA)
สารบัญ

Series: Database 101 — เข้าใจห้องสมุดของเมืองดิจิทัล (ภาษาคน)

Part 0 — WHY: ทำไมต้องมีห้องสมุด

Part 1 — ประวัติ: 4 ยุคของ 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 เพราะ

  1. ไม่ต้องเขียน auth logic — ตรงนี้กินเวลา 1-2 สัปดาห์ถ้าทำเอง + เป็นจุดที่ผิดพลาดแล้วเสีย security ทันที
  2. ไม่ต้องตั้ง file upload pipeline — ตรงนี้กินเวลาอีก 3-5 วัน
  3. ไม่ต้องเขียน realtime sync — ปกติเขียนยากมาก ใช้ Supabase realtime เปิด feature ได้ใน 30 นาที
  4. ทุกอย่างมี 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 จุดเด่นที่ไม่มีใครเหมือน

  1. Branching — เหมือน Git เลยครับ คุณ branch database สำหรับ feature ใหม่ test ได้ merge กลับ นักพัฒนาคุ้นกับ git workflow รัก feature นี้มาก
  2. Schema migration ปลอดภัย — ระบบช่วย review schema change ก่อน deploy
  3. 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/เดือนหรือmigrateออกภายใน30วันsideprojectที่มีuser100คนอยู่ดีๆต้องเลือกจ่าย39/เดือน หรือ migrate ออกภายใน **30 วัน** side project ที่มี user 100 คน อยู่ดีๆ ต้องเลือก จ่าย 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 ตั้งแต่วันแรก

  1. ใช้ standard SQL/standard API — อย่าใช้ feature เฉพาะของ vendor ถ้าหลีกเลี่ยงได้ PlanetScale branching สนุก แต่ถ้าใช้ — ย้ายออกยาก ใช้ Postgres ปกติ — ย้ายไปที่ไหนก็ได้
  2. มี migration plan เขียนไว้ — ก่อน adopt vendor ใหม่ ถามว่า “ถ้าเขาตัด free tier พรุ่งนี้ เราจะย้ายไปไหน + ใช้เวลานานแค่ไหน” ถ้าตอบไม่ได้ แปลว่า vendor lock-in สูง ระวัง
  3. 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

OptionCost ต่อเดือนจ่ายตอนไม่มี 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 แรกจ่าย 15/เดือนoptionสุดท้ายจ่าย15/เดือน 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 คงที่ 150300/เดือนนักพัฒนาเลยกล้าทดสอบแค่12ไอเดียเต็มที่ปัจจุบันทดสอบ10ไอเดียเสีย150-300/เดือน นักพัฒนาเลยกล้าทดสอบแค่ 1-2 ไอเดียเต็มที่ ปัจจุบัน ทดสอบ 10 ไอเดียเสีย 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 สรุปได้สั้นๆ ตามนี้

  1. 1960s-70s — Hierarchical: ห้องสมุดแบบต้นไม้ ขยายยาก
  2. 1970s-80s — Relational Revolution: ตารางที่ JOIN ได้ + SQL กลายเป็นมาตรฐานวงการ
  3. 1980s-90s — ACID + Enterprise Backbone: Oracle/SQL Server ครองธนาคาร สายการบิน ระบบบัญชี
  4. 2000s-2010s — NoSQL + Big Data: CAP theorem + 4 ตระกูล NoSQL + Hadoop + Polyglot Persistence
  5. 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 (เร็วๆ นี้)