บทนำ
Laravel เป็น PHP Framework ยอดนิยมสำหรับสร้าง Web Applications ที่ Scalable และ High-Performance
ในบทความนี้ เราจะเรียนรู้วิธีใช้ Serverless Redis เพื่อ Scale Laravel Applications โดยเก็บ Laravel Session และ Cache Data ใน Serverless Redis Instance
ข้อกำหนดเบื้องต้น
ก่อนเริ่ม คุณต้องมี:
- Upstash Account: หากยังไม่มี สมัครฟรี ไม่ต้อง Credit Card
- หากยังไม่มี Laravel ติดตั้ง ตามขั้นตอน Install Laravel with 1-click
ภาพรวมสถาปัตยกรรม
แทนที่จะรัน Laravel บน Single Server ลองพิจารณาสถานการณ์นี้:
- Laravel Application รันบน Web Servers 2 ตัว
- Load Balancer เดียวจัดการ Routing Requests ไปยัง Web Servers ทั้ง 2
- MySQL Database Server สำหรับเก็บ Application Data
- Upstash Serverless Redis Cluster รับผิดชอบ Cache Data และเก็บ User Sessions
Diagram:

Serverless Redis คืออะไร?
Serverless Redis เป็น Fully Managed Database-as-a-Service ที่คิดค่าบริการต่อ Command (Per-command Pricing) คุณจ่ายแค่สิ่งที่ใช้จริง
วิธีนี้คุณไม่ต้อง Over-provision Servers และ Scale Application ได้ตามต้องการ
ทำไมต้อง Serverless Redis?
โดย Default Laravel จะเก็บ User Sessions ใน Files บน Disk ของ Web Server หาก Load Balancer ส่ง Request ไป Server อื่น User Session จะหายไป
นี่คือเหตุผลที่ต้องมีที่เก็บ User Sessions และ Application Cache แบบ Centralized เพื่อให้ Share ระหว่าง Requests และข้าม Multiple Servers ได้ ไม่หายเมื่อ Load Balancer ส่ง Request ไป Server อื่น
แน่นอน คุณสามารถใช้ Database เก็บ Sessions และ Cache ได้ แต่เพื่อ Performance ที่ดีกว่า แนะนำให้ใช้ Redis ดูรายละเอียดประโยชน์ด้าน Performance ได้ที่ Which is the best Laravel cache driver for performance?
Horizontal Scaling vs Vertical Scaling
สรุปความต่างระหว่าง Horizontal และ Vertical Scaling:
- Vertical Scaling (Scale-up): เพิ่ม Resources ให้ Server เดียว เช่น CPU, RAM, Disk
- Horizontal Scaling (Scale-out): เพิ่ม Servers มากขึ้นเพื่อรับ Requests
ตัวอย่างง่าย:

เมื่อ Scale แบบ Horizontal สำคัญที่ต้องจัดการ User Sessions และ Cache Data แบบ Scalable
สร้าง Serverless Redis Cluster
กับ Upstash สร้าง Serverless Redis Cluster ได้ใน 30 วินาที:
- Login Upstash Account
- กดปุ่ม Create Database
- ใส่ชื่อ Redis Cluster และเลือก Region
- กด Create
เสร็จแล้ว! มี Serverless Redis Cluster พร้อมใช้งาน
จด Endpoint, Password และ Port ของ Redis Cluster ไว้
ตั้งค่า Laravel กับ Serverless Redis
ตอนนี้มี Serverless Redis Cluster แล้ว ตั้งค่า Laravel ใช้ได้เหมือน Redis Instance ปกติ
ติดตั้ง Predis Package
ก่อนหน้านี้ใช้ PHP Redis Extension แต่ตอนนี้ใช้ Predis Package แทนได้
composer require predis/predis
ไปที่ .env ของ Laravel Project อัปเดตบรรทัดต่อไปนี้:
REDIS_HOST=your_upstash_redis_endpoint
REDIS_PASSWORD=your_upstash_redis_password
REDIS_PORT=your_upstash_redis_port
ขณะเปลี่ยน Redis Details ต้องเปลี่ยน Cache Driver และ Session Driver เป็น redis ด้วย:
CACHE_DRIVER=redis
SESSION_DRIVER=redis
สุดท้าย Clear Config Cache:
php artisan config:clear
ตอนนี้ Laravel Application จะใช้ Serverless Redis Cluster เก็บ Cache และ Session Data
ข้อสรุป
ใช้ Laravel กับ Serverless Redis เป็นวิธียอดเยี่ยมในการ Scale Application แม้รัน Laravel บน Kubernetes Cluster ก็ยังใช้ Serverless Redis Cluster เก็บ User Sessions และ Cache Data แบบ Scalable ได้
ข้อมูลเพิ่มเติมเกี่ยวกับ Upstash ดูที่ Documentation
ข้อมูลเพิ่มเติมเกี่ยวกับการ Scale Laravel Application:
- How to Set Up a Scalable Laravel 6 Application using Managed Databases and Object Storage