
กำลังโหลด...

กำลังโหลด...

ที่ผ่านมาน้องทำหน้าเว็บสวยๆ ให้ทีมมาตลอด แต่ข้อมูลที่โชว์อยู่ยังเป็นของคนอื่นทั้งนั้น วันนี้พี่จะพาไปดูอีกฝั่งหนึ่ง — ฝั่งที่เป็นเจ้าของข้อมูลจริงๆ
เริ่มจากคำถามพื้นฐานที่สุดก่อน: Backend คืออะไร แล้วทำไมเราถึงขาดมันไม่ได้
เป้าหมายของ Mission นี้: อธิบายได้ว่า Frontend กับ Backend ต่างกันอย่างไร และ Client กับ Server คุยกันอย่างไร
จบ Mission นี้คุณจะ
ลองนึกถึงร้านอาหาร
| ในร้านอาหาร | ในเว็บ |
|---|---|
| ลูกค้าที่นั่งโต๊ะ | Client (เบราว์เซอร์ / มือถือ) |
| เมนู หน้าตาร้าน จานชาม | Frontend (HTML, CSS, React) |
| พนักงานเสิร์ฟที่รับออเดอร์ | Request |
| ครัวหลังร้าน | Backend (Express) |
| ตู้เย็น/คลังวัตถุดิบ | Database (PostgreSQL) |
| อาหารที่เสิร์ฟกลับมา | Response |
ลูกค้าไม่เคยเห็นครัว — เห็นแค่เมนูกับอาหารที่เสิร์ฟมา และนี่คือเหตุผลข้อใหญ่ที่สุดที่ต้องมี Backend: ของที่ต้องปกปิด ต้องอยู่ในครัว
useState ก็ล้างหมดflowchart LR
U["ผู้ใช้"] --> B["Browser<br/>(Client)"]
B -->|"Request"| S["Express Server<br/>(Backend)"]
S -->|"Response"| B
S <--> D[("PostgreSQL<br/>Database")]
style B fill:#1e3a5f,stroke:#38bdf8,color:#fff
style S fill:#3f2d5c,stroke:#a855f7,color:#fff
style D fill:#14532d,stroke:#22c55e,color:#fff
เขียนแบบ ASCII ให้จำง่ายๆ ว่า
[ ผู้ใช้ ]
|
v
+---------------+ Request (ขอ) +---------------+ SQL +------------+
| Browser | ----------------> | Express | ------> | |
| (Frontend) | | (Backend) | | Database |
| React / HTML | <---------------- | Node.js | <------ | |
+---------------+ Response (ตอบ) +---------------+ rows +------------+
รันบนเครื่องผู้ใช้ รันบนเซิร์ฟเวอร์ เก็บข้อมูลถาวร
ผู้ใช้เปิดดูโค้ดได้ ผู้ใช้เปิดดูโค้ดไม่ได้ ผู้ใช้แตะไม่ถึงเลย
| Frontend | Backend | |
|---|---|---|
| รันที่ไหน | เครื่องของผู้ใช้ | เซิร์ฟเวอร์ของเรา |
| ภาษา | HTML, CSS, JS, React | JavaScript (Node.js), Python, Go, ... |
| หน้าที่ | แสดงผล, รับ input | ประมวลผล, เก็บข้อมูล, ตรวจสิทธิ์ |
| ผู้ใช้แก้โค้ดได้ไหม | ได้ (F12) | ไม่ได้ |
| เก็บ Secret ได้ไหม | ไม่ได้เด็ดขาด | ได้ |
ประโยคที่ต้องจำไปตลอดคอร์ส: อะไรที่ผู้ใช้แก้ได้ ห้ามเชื่อ — Frontend ตรวจข้อมูลเพื่อ "ความสะดวกของผู้ใช้" แต่ Backend ตรวจซ้ำเพื่อ "ความถูกต้องของระบบ" ต้องตรวจทั้งสองที่เสมอ
Frontend Explorer 1-2 <-- เรียนมาแล้ว (ฝั่งซ้ายของภาพ)
|
v
Backend Explorer <-- อยู่ตรงนี้ (ฝั่งขวา + ตรงกลาง)
โค้ด fetch("https://jsonplaceholder.typicode.com/posts") ที่เคยเขียน — วันนี้เราจะสร้าง
"ตัวที่อยู่ปลายทางของ URL นั้น" ขึ้นมาเอง
| เข้าใจผิด | ความจริง |
|---|---|
| "Backend คือภาษาอีกภาษาหนึ่ง" | ไม่ใช่ — เราใช้ JavaScript ตัวเดิม แค่รันคนละที่ |
| "Next.js เป็น Frontend ล้วน" | Next.js ทำ Backend ได้ด้วย แต่คอร์สนี้แยก Server ออกมาให้เห็นชัดๆ ก่อน |
| "ตรวจข้อมูลใน Frontend แล้วพอ" | ผู้ใช้ปิด JavaScript หรือยิง API ตรงได้ ต้องตรวจที่ Backend เสมอ |
| "Database คือ Backend" | คนละตัวกัน — Backend คือคนสั่ง, Database คือคนเก็บ |

Workshop (ไม่ต้องเขียนโค้ด — ใช้สมองอย่างเดียว 5 นาที)
เปิดเว็บที่ใช้ประจำขึ้นมา 1 เว็บ (Facebook, Shopee, YouTube ก็ได้) แล้วตอบ 3 ข้อนี้ ลงกระดาษหรือไฟล์ note
แล้วจับคู่กับเพื่อนข้างๆ อธิบายคำตอบให้กันฟัง
ข้อ 1. ข้อใดคือหน้าที่ของ Backend ชัดเจนที่สุด
ข้อ 2. ทำไมถึงห้ามเก็บ API Key ไว้ในโค้ด Frontend
ข้อ 3. Client คืออะไร
ข้อ 4. ข้อมูลที่เก็บไว้ใน useState ของ React หายไปเมื่อไหร่
ข้อ 5. ประโยคไหนถูกต้อง