Notes & software courses · Free to learn
Aph's Blog
On this page

System Design

👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ

ออกแบบระบบขนาดใหญ่ — สำคัญมากสำหรับระดับ mid-senior

รอบ system design ทดสอบความสามารถในการออกแบบระบบที่รองรับผู้ใช้จำนวนมาก ไม่มีคำตอบเดียวที่ถูก ผู้สัมภาษณ์ดูว่าคุณคิดถึง trade-off ต่าง ๆ อย่างไรและสื่อสารได้ชัดแค่ไหน รอบนี้มักเริ่มมีน้ำหนักตั้งแต่ระดับ mid-level ขึ้นไป

กรอบการตอบ (Framework)

  1. Requirements — ถามให้ชัดทั้ง functional (ระบบต้องทำอะไรได้) และ non-functional (scale, latency, ความพร้อมใช้งาน)
  2. Estimation — ประเมินจำนวนผู้ใช้, QPS, ปริมาณข้อมูล/storage แบบคร่าว ๆ
  3. API design — กำหนด endpoint หลัก ๆ และรูปแบบ request/response
  4. High-level design — วาด component หลัก: client, load balancer, service, database, cache
  5. Deep dive — เจาะส่วนสำคัญ เช่น schema ฐานข้อมูล, การ scale, การจัดการ bottleneck
  6. Trade-offs — สรุปข้อดีข้อเสียของแต่ละทางเลือก

แนวคิดพื้นฐานที่ต้องรู้

  • Load balancing — กระจาย request ไปหลายเครื่อง
  • Caching — ลดภาระ database ด้วย Redis/Memcached (เข้าใจ cache invalidation)
  • Database — เลือกระหว่าง SQL กับ NoSQL ตามรูปแบบข้อมูลและ query
  • Replication & Sharding — ทำสำเนาและแบ่งข้อมูลเพื่อ scale
  • Message queue — แยกงานแบบ async ด้วย Kafka/RabbitMQ
  • CAP theorem — เข้าใจ trade-off ระหว่าง consistency กับ availability
โจทย์ที่เจอบ่อย

ออกแบบ URL shortener, ระบบแชต, news feed, ระบบจองตั๋ว, rate limiter, ระบบอัปโหลดวิดีโอ — ฝึกอธิบายแต่ละอันให้ครบกรอบด้านบน

SQL vs NoSQL

ประเด็นSQLNoSQL
โครงสร้างschema ตายตัว มีความสัมพันธ์ยืดหยุ่น schema-less
Consistencyแข็งแรง (ACID)มักเป็น eventual
Scalescale แนวตั้งง่ายกว่าscale แนวนอนง่ายกว่า
เหมาะกับธุรกรรมการเงิน ข้อมูลสัมพันธ์กันข้อมูลมหาศาล อ่าน/เขียนเร็ว

หัวข้อใหม่ที่ถูกถามเพิ่มในปี 2026

ระบบยุคใหม่มี AI เข้ามาเกี่ยวข้องมากขึ้น ผู้สัมภาษณ์ที่บริษัท product เริ่มถามหัวข้อกลุ่มนี้ — เข้าใจระดับแนวคิดก็พอ ไม่ต้องลงลึกระดับ implement

  • Vector database (Pinecone, Weaviate, pgvector) — เก็บ embedding เพื่อค้นแบบ semantic search
  • RAG (Retrieval-Augmented Generation) — ต่อ LLM เข้ากับฐานความรู้ของบริษัท
  • Event-driven architecture — ออกแบบระบบที่สื่อสารผ่าน event/stream
  • Observability — logging, metrics, tracing (เช่น OpenTelemetry) เพื่อมองเห็นปัญหาใน production
  • CDN & edge computing — ลด latency ด้วยการประมวลผลใกล้ผู้ใช้
  • Rate limiting & idempotency — กันระบบล่มและกัน request ซ้ำ

ระบบที่ควรฝึกออกแบบ

ฝึกอธิบายแต่ละระบบให้ครบกรอบด้านบน เรียงจากง่ายไปยาก

  1. URL shortener (เริ่มง่ายที่สุด เข้าใจ hashing + redirect)
  2. Rate limiter
  3. News feed / Twitter timeline
  4. ระบบแชต (WhatsApp / LINE)
  5. ระบบจองตั๋ว / ที่นั่ง (จัดการ concurrency)
  6. YouTube / ระบบอัปโหลดและสตรีมวิดีโอ
  7. Google Drive / ระบบเก็บไฟล์
  8. Search autocomplete