ভূমিকা
Laravel হল স্কেলেবল, হাই-পারফরম্যান্স ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য একটি জনপ্রিয় PHP ফ্রেমওয়ার্ক।
এই আর্টিকেলে, আমরা শিখব কিভাবে serverless Redis ব্যবহার করে Laravel অ্যাপ্লিকেশন স্কেল করতে হয়, Laravel সেশন এবং ক্যাশ ডেটা একটি serverless Redis ইন্সট্যান্সে সংরক্ষণ করে।
পূর্বশর্ত
শুরু করার আগে, আপনাকে নিচের موارد থাকতে হবে:
- Upstash অ্যাকাউন্ট: যদি আপনার না থাকে, আপনি ফ্রি সাইন আপ করতে পারেন, কোনো ক্রেডিট কার্ড দরকার নেই।
- যদি Laravel ইনস্টল না থাকে, আপনি এখানে ১-ক্লিকে Laravel ইনস্টল করার ধাপগুলো ফলো করতে পারেন।
আর্কিটেকচার ওভারভিউ
Laravelকে একটি সিঙ্গেল সার্ভারে চালানোর বদলে, নিচের সিনেরিওটি বিবেচনা করুন:
- দুইটি ওয়েব সার্ভারে চলমান একটি Laravel অ্যাপ্লিকেশন।
- একটি সিঙ্গেল লোড ব্যালেন্সার যা রিকোয়েস্ট দুটি ওয়েব সার্ভারের কাছে রাউট করে।
- অ্যাপ্লিকেশনের ডেটা সংরক্ষণের জন্য একটি MySQL ডাটাবেস সার্ভার।
- Upstash Serverless Redis ক্লাস্টার ডেটা ক্যাশ করার এবং ব্যবহারকারীর সেশন সংরক্ষণের জন্য দায়ী।
ডায়াগ্রাম:

Serverless Redis কী?
Serverless Redis হল একটি ফুলি ম্যানেজড ডাটাবেস-অ্যাজ-এ-সার্ভিস প্রোডাক্ট যেখানে প্রাইসিং প্রতি কমান্ডের ভিত্তিতে, তাই আপনি শুধু যে ব্যবহার করেন তার জন্য চার্জড হন।
এইভাবে আপনাকে আপনার সার্ভার ওভার-প্রোভিশন করতে হবে না, এবং আপনি প্রয়োজন অনুযায়ী আপনার অ্যাপ্লিকেশন স্কেল করতে পারেন।
কেন Serverless Redis?
ডিফল্টভাবে, Laravel ব্যবহারকারীর সেশন ফাইলে ওয়েব সার্ভারের ডিস্কে সংরক্ষণ করে। সেইভাবে যদি লোড ব্যালেন্সার ব্যবহারকারীর রিকোয়েস্টকে একটি ভিন্ন সার্ভারের কাছে ফরওয়ার্ড করে, ব্যবহারকারীর সেশন হারিয়ে যাবে।
এই 이유로 একটি সেন্ট্রালাইজড জায়গা থাকা গুরুত্বপূর্ণ যেখানে ব্যবহারকারীর সেশন এবং অ্যাপ্লিকেশন ক্যাশ সংরক্ষণ করা যায়, যাতে সেগুলো রিকোয়েস্টের মধ্যে এবং একাধিক সার্ভারের জুড়ে শেয়ার করা যায়, এবং লোড ব্যালেন্সার রিকোয়েস্টকে ভিন্ন সার্ভারের কাছে ফরওয়ার্ড করলে সেগুলো হারিয়ে না যায়।
নিশ্চিতভাবেই, আপনি আপনার ডাটাবেসও ব্যবহারকারীর সেশন এবং ক্যাশ ডেটা সংরক্ষণের জন্য ব্যবহার করতে পারেন, কিন্তু আরও ভালো পারফরম্যান্সের জন্য, Redis ব্যবহার করার পরামর্শ দেওয়া হয়। আপনি যদি বিভিন্ন অপশনের পারফরম্যান্স সুবিধা সম্পর্কে আরও জানতে চান, এই চমৎকার আর্টিকেলটি দেখুন: Which is the best Laravel cache driver for performance?।
হরিজন্টাল স্কেলিং বনাম ভার্টিকেল স্কেলিং
হরিজন্টাল এবং ভার্টিকেল স্কেলিংয়ের পার্থক্য সম্পর্কে কিছু কথা:
- যখন আপনার একটি সিঙ্গেল সার্ভার থাকে, আপনি সেটিকে ভার্টিকেলি স্কেল করতে পারেন সেটিতে আরও রিসোর্স যোগ করে। উদাহরণস্বরূপ, আপনি আরও CPU কোর, RAM, বা ডিস্ক স্পেস যোগ করে স্কেল-আপ করতে পারেন।
- অন্যদিকে, হরিজন্টাল স্কেলিং হলো আরও সার্ভার যোগ করা যারা রিকোয়েস্ট সার্ভ করার জন্য দায়ী স্কেল-আউট করার জন্য।
এখানে হরিজন্টাল স্কেলিং বনাম ভার্টিকেল স্কেলিং-এর একটি সিম্পল উদাহরণ:

যখন একটি অ্যাপ্লিকেশন হরিজন্টালি স্কেল করা হয়, তখন ব্যবহারকারীর সেশন এবং ক্যাশ ডেটা একটি স্কেলেবল উপায়ে হ্যান্ডেল করা গুরুত্বপূর্ণ।
একটি serverless Redis ক্লাস্টার তৈরি করা
Upstash-এর সাথে, আপনি নিচের ধাপগুলো ফলো করে ৩০ সেকেন্ডে একটি serverless Redis ক্লাস্টার তৈরি করতে পারেন:
- আপনার Upstash অ্যাকাউন্ট-এ লগ ইন করুন।
- Create Database বাটনে ক্লিক করুন।
- আপনার Redis ক্লাস্টারের নাম লিখুন এবং একটি অঞ্চল বেছে নিন।
- Create বাটনে ক্লিক করুন।
এটাই সব! এখন আপনার কাছে একটি serverless Redis ক্লাস্টার আছে ব্যবহার করার জন্য।
আপনার Redis ক্লাস্টারের এন্ডপয়েন্ট পাশাপাশি পাসওয়ার্ড এবং পোর্ট নোট ডাউন করতে ভুলবেন না।
Serverless Redis-এ Laravel কনফিগার করা
এখন আপনার কাছে একটি serverless Redis ক্লাস্টার আছে, আপনি Laravel কনফিগার করতে পারেন যেকোনো অন্য Redis ইন্সট্যান্সের মতো এটি ব্যবহার করার জন্য।
Predis প্যাকেজ ইনস্টল করুন
অতীতে, আপনি আপনার Redis ক্লাস্টারের সাথে সংযোগ করতে PHP Redis এক্সটেনশন ব্যবহার করতেন। যাইহোক, এখন আপনি বদলে Predis প্যাকেজ ব্যবহার করতে পারেন।
Predis প্যাকেজ ইনস্টল করতে নিচের কমান্ডটি রান করুন:
composer require predis/predis
এরপর, আপনার Laravel প্রজেক্টের .env ফাইলে যান এবং নিচের লাইনগুলো আপডেট করুন:
REDIS_HOST=your_upstash_redis_endpoint REDIS_PASSWORD=your_upstash_redis_password REDIS_PORT=your_upstash_redis_port
Redis ডিটেইলস পরিবর্তন করার সময়, ক্যাশ ড্রাইভার এবং সেশন ড্রাইভারটিও redis-এ পরিবর্তন করতে ভুলবেন না:
CACHE_DRIVER=redis SESSION_DRIVER=redis
শেষে, নিচের কমান্ডটি রান করে আপনার কনফিগ ক্যাশ ক্লিয়ার করুন:
php artisan config:clear
এইভাবে আপনার Laravel অ্যাপ্লিকেশন serverless Redis ক্লাস্টার ব্যবহার করবে তার ক্যাশ এবং সেশন ডেটা সংরক্ষণের জন্য।
উপসংহার
Serverless Redis-এ Laravel ব্যবহার করা আপনার অ্যাপ্লিকেশন স্কেল করার একটি চমৎকার উপায়। এমনকি যদি আপনি Kubernetes ক্লাস্টারে Laravel চালান, আপনি এখনও একটি serverless Redis ক্লাস্টার ব্যবহার করতে পারেন আপনার ব্যবহারকারীর সেশন এবং ক্যাশ ডেটা একটি স্কেলেবল উপায়ে সংরক্ষণ করার জন্য।
Upstash সম্পর্কে আরও তথ্যের জন্য, ডকুমেন্টেশন চেক করুন।
আপনার Laravel অ্যাপ্লিকেশন কীভাবে স্কেল করবেন সে সম্পর্কে আরও জানতে নিচের আর্টিকেলটি দেখুন:
- How to Set Up a Scalable Laravel 6 Application using Managed Databases and Object Storage