02. Basic knowledge
อะไรคือ backend development ต่างจาก frontend dev ยังไง
ให้เปรียบเหมือน
- backend คือครัว : ทำอาหาร จัดการวัตถุดิบ ดูแลสูตรอาหาร สูตรจะผิดจะถูก จะอร่อยหรือไม่ก็ตรงนี้แหละ ฮ่าาา
- frontend คือพื้นที่ร้าน หน้าร้าน : ตกแต่งร้าน บริการลูกค้า
ภาพรวม backend ทำอะไรบ้าง
1 . จัดการ ฐานข้อมูล (Database Management)
- เก็บข้อมูลู้ใช้ สิ้นค้า บทความและอื่นๆ
- จัดการการเข้าถึงข้อมูล
2. ประมวลผลข้อมูล (Data Processing)
- คำนวณ
- จัดการ business logic ของระบบ
3. API (Application Programming Interface)
- สร้าง endpoint สำหรับ รับ-ส่งข้อมูล
Basic of Web development
Client-Server Model
Request
- เริ่มจาก client ส่ง request จริงๆ แปลไทยก็น่าจะ ส่งคำขอร้อง ฮ่า ไปยัง server
- Request หรือ คำขอร้องเนี่ยก็จะมี Http Method (GET, POST, PUT, DELETE) ตรง method จะไปลงลึกยัง หัดข้อถัดไปนะครับ
- Headers (ข้อมูลเพิ่มเติมของ request)
- Body (ข้อมูลที่ต้องการส่ง เช่น form data)
Response (การตอบกลับ)
- Server รับ Request และประมวลผล
- จากนั้นส่ง Response กลับไปยัง Client
- Response ประกอบด้วย:
- Status Code (200 OK, 404 Not Found, 500 Error)
- Headers (ข้อมูลเพิ่มเติมของ response)
- Body (ข้อมูลที่ส่งกลับ เช่น HTML, JSON)
ขั้นตอนการทำงานทั้งหมด:
- พิมพ์ URL ในเบราว์เซอร์ (เช่นwww.example.com)
- เบราว์เซอร์สร้าง HTTP Request ส่งไปยัง Server
- Server รับ Request และประมวลผล (เช่น ดึงข้อมูลจากฐานข้อมูล)
- Server สร้าง Response และส่งกลับ
- เบราว์เซอร์รับ Response และแสดงผลให้ผู้ใช้เห็น
ตัวอย่างในชีวิตประจำวัน:เปรียบเทียบกับการสั่งอาหารในร้านอาหาร:
- Client = ลูกค้า
- Request = การสั่งอาหาร
- Server = พ่อครัว
- Response = อาหารที่เสิร์ฟ
- Status Code = สถานะการสั่ง (สำเร็จ, หมด, ไม่มีในเมนู)
RESTful APIs
มาทำความเข้าใจเกี่ยวกับ API และ REST กันครับ
API คืออะไร?API (Application Programming Interface) คือชุดของกฎ โปรโตคอล และเครื่องมือสำหรับการสื่อสารระหว่างซอฟต์แวร์ เปรียบเสมือน “พนักงานเสิร์ฟ” ที่คอยรับคำสั่งจากลูกค้า (Frontend) และส่งต่อไปยังครัว (Backend)
Backend ใช้ API ทำอะไร?
- เป็นจุดเชื่อมต่อกับ Frontend
- รับข้อมูลจาก Frontend
- ส่งข้อมูลกลับไปยัง Frontend
- จัดการการร้องขอต่างๆ
- จัดการข้อมูล
- ดึงข้อมูลจากฐานข้อมูล
- บันทึกข้อมูลใหม่
- อัพเดทข้อมูลที่มีอยู่
- ลบข้อมูล
- การรักษาความปลอดภัย
- ตรวจสอบสิทธิ์ผู้ใช้
- จำกัดการเข้าถึงข้อมูล
- ป้องกันการโจมตี
REST คืออะไร? REST (Representational State Transfer) คือแนวทางการออกแบบ API ที่ใช้หลักการพื้นฐานของ HTTP
เปรียบเทียบกับร้านอาหาร:
- API = พนักงานเสิร์ฟ
- REST = กฎการสั่งอาหาร
- เมนูอาหาร = Resources
- วิธีสั่ง = HTTP Methods
- ใบสั่งอาหาร = Request
- อาหารที่เสิร์ฟ = Response
Web Protocols and Communication
1. HTTP และ HTTPS คืออะไรHTTP (Hypertext Transfer Protocol) คือโปรโตคอลสำหรับการสื่อสารบนเว็บ
- เป็นแบบ client-server
- ไม่มีการเข้ารหัสข้อมูล
HTTPS (HTTP Secure) คือ HTTP ที่มีการเข้ารหัสข้อมูล
-
ใช้ SSL/TLS ในการเข้ารหัส
-
ปลอดภัยกว่า HTTP
-
เห็นเป็นไอคอนกุญแจในเบราว์เซอร์
จริงๆ เดี๋ยวนี้ก็น่าจะเป็น https กันหมดแล้วครับ
2. HTTP Methods
- GET
- ใช้ดึงข้อมูล
- ไม่เปลี่ยนแปลงข้อมูลบน server
- เช่น GET /users - ดึงรายชื่อผู้ใช้
- POST
- สร้างข้อมูลใหม่
- เช่น POST /users - สร้างผู้ใช้ใหม่
- PUT
- อัพเดทข้อมูลทั้งหมด
- เช่น PUT /users/1 - อัพเดทข้อมูลผู้ใช้ ID 1 ทั้งหมด
- PATCH
- อัพเดทข้อมูลบางส่วน
- เช่น PATCH /users/1 - อัพเดทเฉพาะชื่อผู้ใช้
- DELETE
- ลบข้อมูล
- เช่น DELETE /users/1 - ลบผู้ใช้ ID 1
3. HTTP Status Codes
- 2xx - Success
- 200 OK: สำเร็จ
- 201 Created: สร้างข้อมูลสำเร็จ
- 204 No Content: สำเร็จแต่ไม่มีข้อมูลส่งกลับ
- 3xx - Redirection
- 301 Moved Permanently: เวปนี้ได้ย้ายไปอยู่ที่ URL อื่นแล้ว
- 302 Found/Temporary Redirect: เวปนี้ยังอยู่ แต่ว่าตอนนี้ใช้ URL อื่นเป็นการชั่วคราว เดี๋ยวจะกลับมาในอีกเร็วๆนี้ 😆😆
- 4xx - Client Error
- 400 Bad Request: คำขอไม่ถูกต้อง
- 401 Unauthorized: ไม่ได้ยืนยันตัวตน
- 403 Forbidden: ไม่มีสิทธิ์เข้าถึง
- 404 Not Found: ไม่พบข้อมูล
- 429 Too Many Requests: ส่งคำขอมากเกินไป
- 5xx - Server Error
- 500 Internal Server Error: เซิร์ฟเวอร์ผิดพลาด
- 502 Bad Gateway: Gateway ผิดพลาด
- 503 Service Unavailable: บริการไม่พร้อมใช้งาน
4. องค์ประกอบของ HTTP Request/Response
- Headers
- ตัวอย่าง:
- Body
- เนื้อหาของข้อมูล
- มักอยู่ในรูปแบบ JSON
- ตัวอย่าง:
- Query Parameters
- พารามิเตอร์ที่ต่อท้าย URL ด้วย ?
- ใช้ & คั่นหลายพารามิเตอร์
- ตัวอย่าง
- Path Paremeter
- พารามิเตอร์ที่เป็นส่วนหนึ่งของ path
- ตัวอย่าง
- 123 = user ID
- 456 = order ID
ตัวอย่างการใช้งาน:
ในตัวอย่างนี้:
- Path Parameter: 123 (user ID)
- Query Parameter: status=pending
- Header: Authorization และ Content-Type
- Body: JSON object ที่มี filter
Databases
1. ประเภทของฐานข้อมูล
- Relation Database(SQL)
- เก็บข้อมูลในรูปแบบตาราง
- มีความสัมพันธ์ระหว่างตาราง
- ยี่ห้อ: MySQL, PostgreSQL, Oracle, Microsoft SQL Server
- NoSQL Database
- Document-based
- เก็บข้อมูลในรูปแบบ document
- ยี่ห้อ: MongoDB,
- Key-Value
- เก็บข้อมูลแบบ key-value pairs
- ยี่ห้อ: Redis, DynamoDB
- Document-based
2. Basic Data Modeling
- Tables (ตาราง)
- เปรียบเสมือนสมุดทะเบียน
- เช่น: users, products, orders
- Rows (แถว)
- แต่ละรายการในตาราง
- เช่น: ข้อมูลผู้ใช้แต่ละคน
- Columns (คอลัมน์)
- คุณสมบัติของข้อมูล
- เช่น: id, name, email
- Primary Keys
- ตัวระบุที่ไม่ซ้ำกัน
- มักใช้ id เป็น primary key
- Relations (ความสัมพันธ์)
- One-to-One (1:1)
- เช่น: user - user_profile
- One-to-Many (1:N)
- เช่น: user - orders
- Many-to-Many (N:M)
- เช่น: products - categories
- One-to-One (1:1)
ตัวอย่างโครงสร้าง:
3. Basic SQL Commands
- SELECT (ดึงข้อมูล)
- INSERT (เพิ่มข้อมูล)
- UPDATE (อัพเดทข้อมูล)
- DELETE (ลบข้อมูล)
เรามาทำความเข้าใจเกี่ยวกับ Backend Frameworks และองค์ประกอบต่างๆ กันครับ
1. Frameworks คืออะไร และทำไมต้องใช้?
เหตุผลที่ต้องใช้:
- ประหยัดเวลา
- ไม่ต้องเขียนโค้ดพื้นฐานใหม่
- มีฟังก์ชันพร้อมใช้งาน
- มาตรฐานและความปลอดภัย
- มีการจัดการความปลอดภัยพื้นฐาน
- มีแนวทางการเขียนโค้ดที่เป็นมาตรฐาน
- Community Support
- มีผู้ใช้จำนวนมาก
- มี libraries เสริมมากมาย
ตัวอย่าง Frameworks:
- Node.js: Express, NestJS
- Python: Django, Flask
- PHP: Laravel, Symfony
- Java: Spring Boot
- Go: Gin, Echo
2. โครงสร้างของ Backend Framework
- Routes (เส้นทาง)
- Middleware (ตัวกลาง)
- Controllers (ตัวควบคุม)
3. Validation และ Error Handling
- Validation (การตรวจสอบข้อมูล)
- Error Handling (การจัดการข้อผิดพลาด)
4. OpenAPI (Swagger)
OpenAPI คือมาตรฐานสำหรับอธิบาย REST APIs
ตัวอย่าง OpenAPI Specification:
ประโยชน์ของ OpenAPI:
- Documentation อัตโนมัติ
- สร้าง Client Code อัตโนมัติ
- API Design First Approach การใช้ OpenAPI ช่วยให้:
- เอกสาร API เป็นมาตรฐาน
- Frontend และ Backend เข้าใจตรงกัน
- ลดข้อผิดพลาดในการพัฒนา
มาเรียนรู้เรื่องความปลอดภัยพื้นฐานสำหรับ Backend Development กันครับ
1. Authentication (การยืนยันตัวตน)
- JWT (JSON Web Tokens)
- API Keys
- OAuth 2.0
2. Sensitive Data Exposure (การป้องกันข้อมูลรั่วไหล)
- การเข้ารหัสข้อมูล:
3. Rate limit
เป็นการจำกัดการเข้าถึง api ของเราไว้จำนวนกี่ครั้งต่อวินาที ต่อนาที ต่อชั่วโมง แล้วแต่จะตั้ง จะไประดับต่อปีก็ดูสนุกดี ฮ่าๆ
การเข้าถึงข้อมูลบน server ปกติแล้วเราก็ให้ทุกคนเข้ามาแหละ
แต่มันอาจจะมีบางคนที่เรียกมาบ่อยๆ แล้วไม่ได้ประโยชน์อะไร เช่นลองยิงเล่นๆดูสัก 10000 req/s แต่ไม่ได้อยากได้ response อะไร
ทำให้ server เราก็ต้องประมวลผลไปโดยเปล่าประโยชน์
หรือ api บางเส้นอาจจต้องใช้เวลาในการประมวลผลนาน ก็ใช้ rate limit ได้อยู่นะ
Security Best Practices อื่นๆ
CORS (Cross-Origin Resource Sharing)
Basic Networking
1 . IP Address, Ports, และ DNS
-
IP Address
- เป็นเหมือน “ที่อยู่” ของอุปกรณ์ในเครือข่าย
- IPv4: 192.168.1.1 (เลข 4 ชุด)
- ประเภท:
- Public IP: ใช้สื่อสารบนอินเทอร์เน็ต
- Private IP: ใช้ในเครือข่ายภายใน (192.168.x.x, 10.x.x.x)
-
Ports
- 80: HTTP
- 443: HTTPS
- 22: SSH
- 3306: MySQL
- 5432: PostgreSQL
-
DNS (Domain name system)
ตัวอย่าง:www.example.com-> 93.184.216.34
2. การสื่อสารระหว่าง User กับ Server ผ่าน URL
เมื่อผู้ใช้พิมพ์ URL:https://www.example.com/products?id=123
ขั้นตอน DNS Resolution:
องค์ประกอบของ URL:
ขั้นตอนการเรียก:
- User พิมพ์ URL ในเบราว์เซอร์ https://www.example.com/products?id=123
- เบราว์เซอร์ขอ IP จาก DNS www.example.com -> 93.184.216.34
- เบราว์เซอร์สร้าง HTTP Request GET /products?id=123 HTTP/1.1 Host: www.example.com
- Request ถูกส่งไปที่ Server ผ่าน TCP/IP Client -> Internet -> Server (93.184.216.34:443)
- Server ประมวลผลและส่ง Response กลับ HTTP/1.1 200 OK Content-Type: text/html
- เบราว์เซอร์แสดงผลให้ User เห็น