আপনার Firebase App Hosting ব্যাকএন্ড ভার্চুয়াল প্রাইভেট ক্লাউড (VPC) নেটওয়ার্কের সাথে কানেক্ট করতে পারে। এটি আপনার Firebase App Hosting ব্যাকএন্ডকে এমন ব্যাকএন্ড পরিষেবা অ্যাক্সেস করার অনুমতি দেয় যা পাবলিক IP অ্যাড্রেস ব্যবহার করে অ্যাক্সেস করা যায় না, যেমন Cloud SQL, Spanner, Cloud Memorystore, Compute Engine, বা Kubernetes ইন্টার্নাল মাইক্রোসার্ভিস।
VPC অ্যাক্সেস শুধুমাত্র রানটাইমে (আপনার Cloud Run কন্টেনার থেকে) উপলভ্য, বিল্ড টাইমে (Cloud Build) নয়।
VPC নেটওয়ার্কে কীভাবে কানেক্ট করবেন তা বেছে নিন
- Direct VPC Egress: আরও সহজ, দ্রুত ও কম খরচ। প্রতিটি কন্টেনারের জন্য একটি IP অ্যাড্রেস ব্যবহার করে। বেশিরভাগ ক্ষেত্রে ব্যবহারের জন্য সাজেস্ট করা হয়।
- সার্ভারলেস কানেক্টর: আরও বড় অ্যাপ্লিকেশনের জন্য IP অ্যাড্রেস পুল করে। অন্তর্নিহিত VM-এর জন্য পেমেন্ট করতে হবে। মূল্য সংক্রান্ত বিবরণের জন্য VPC-এর মূল্য সংক্রান্ত পৃষ্ঠা-তে "সার্ভারলেস VPC অ্যাক্সেস" দেখুন।
apphosting.yaml-এ কনফিগার করুন
অ্যাক্সেস কনফিগার করতে আপনার apphosting.yaml ফাইলে vpcAccess ম্যাপিং ব্যবহার করুন।
সম্পূর্ণ উপযুক্ত নেটওয়ার্ক/কানেক্টরের নাম অথবা আইডি ব্যবহার করুন। আইডি ব্যবহার করলে, বিভিন্ন কানেক্টর/নেটওয়ার্ক সহ স্টেজিং ও প্রোডাকশন এনভায়রনমেন্টের মধ্যে
পোর্ট করা যায়।
ডাইরেক্ট VPC ইগ্রেস কনফিগারেশন (apphosting.yaml):
runConfig:
vpcAccess:
egress: PRIVATE_RANGES_ONLY # Default value
networkInterfaces:
# Specify at least one of network and/or subnetwork
- network: my-network-id
subnetwork: my-subnetwork-id
সার্ভারলেস কানেক্টর কনফিগারেশন (apphosting.yaml):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
উদাহরণ: Next.js অ্যাপ থেকে Memorystore for Redis-এ কানেক্ট করা
Redis বা Memcached-এর মতো ক্যাশিং সিস্টেম সাধারণত কোনও অ্যাপের জন্য দ্রুত ডেটা ক্যাশিং লেয়ার তৈরি করতে ব্যবহার করা হয়। এই উদাহরণে দেখানো হয়েছে কীভাবে Memorystore for Redis আপনার Firebase App Hosting ব্যাকএন্ডের মতো একই Google Cloud প্রোজেক্টে সেট-আপ করতে হয় এবং Direct VPC egress ব্যবহার করে এটির সাথে কানেক্ট করতে হয়।
ধাপ ০: Redis ইনস্ট্যান্সের জন্য Memorystore তৈরি করুন
- Google Cloud কনসোলে
Memorystore for Redis পৃষ্ঠায়
যান।
- Firebase App Hosting-এর জন্য আপনি যে প্রোজেক্ট ব্যবহার করছেন সেটিই বেছে নেওয়া হয়েছে কিনা তা ভাল করে দেখে নিন।
- আপনি এই পৃষ্ঠা অ্যাক্সেস করতে না পারলে, আপনার প্রোজেক্টের জন্য বিলিং চালু করা আছে কিনা এবং আপনি Memorystore API চালু করেছেন কিনা তা নিশ্চিত করুন।
- ইনস্ট্যান্স তৈরি করুন বিকল্প বেছে নিন।
- আপনার পছন্দের সেটিংসের মাধ্যমে নতুন ইনস্ট্যান্স কনফিগার করুন। এখানে কিছু
উদাহরণ দেওয়া হল যা আপনি ব্যবহার করতে পারেন:
- ইনস্ট্যান্স আইডি-এর অধীনে
my-redis-cacheলিখুন। - যে নাম দেখানো হবে বিকল্পের অধীনে
Redis cacheলিখুন। - টিয়ার সিলেক্টরের নিচে বেসিক বেছে নিন। বেসিক টিয়ার একটি স্বতন্ত্র Redis নোডকে বোঝায়, যা স্ট্যান্ডার্ড টিয়ারের থেকে আলাদা, কারণ স্ট্যান্ডার্ড টিয়ার আপনার ডেটার ব্যাক-আপ নেওয়ার জন্য একটি রেপ্লিকা নোড ব্যবহার করে।
- অঞ্চল নির্বাচক থেকে আপনার App Hosting ব্যাকএন্ডের অঞ্চল বেছে নিন। আপনার ব্যাকএন্ডের অঞ্চলের সাথে ম্যাচ করার জন্য এই ভ্যালু সেট করতে ভুলবেন না।
- জোন বাছাইকারী থেকে যেকোনও বিকল্প বেছে নিন।
- ধারণ ক্ষমতা-এর অধীনে
5লিখুন। এটি আপনার ইনস্ট্যান্সের ক্ষমতা ৫ জিবিতে সেট করে। - ভার্সন বিকল্পের অধীনে
7.0(বা ডিফল্ট সাজেস্ট করা ভার্সন) বেছে নিন। - অনুমোদিত নেটওয়ার্ক বেছে নেওয়ার বিকল্প থেকে ডিফল্ট বেছে নিন।
- ইনস্ট্যান্স আইডি-এর অধীনে
ধাপ ১: আপনার VPC নেটওয়ার্ক আইডি দিয়ে apphosting.yaml আপডেট করুন
- Google Cloud কনসোলে VPC নেটওয়ার্ক পৃষ্ঠা দেখুন।
- আপনার Memorystore for Redis ইনস্ট্যান্সের জন্য VPC নেটওয়ার্ক আইডি খুঁজুন (এটি প্রায়ই
defaultহবে)। VPC নেটওয়ার্ক আইডি ব্যবহার করে
apphosting.yaml-এ ডাইরেক্ট VPC ইগ্রেস কনফিগারেশন সেট করুন:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
ধাপ ২: এনভায়রনমেন্ট ভেরিয়েবল যোগ করুন যা আপনার অ্যাপকে Redis-এ ডাইরেক্ট করে
- Google Cloud কনসোলে আপনার Memorystore for Redis ইনস্ট্যান্সের "কানেকশন" ট্যাবে কানেকশন সংক্রান্ত তথ্য (হোস্ট ও পোর্ট) খুঁজুন।
REDISPORTএবংREDISHOSTএনভায়রনমেন্ট ভেরিয়েবল সহ Redis-এ কানেক্ট করুন। Google Cloud কনসোল থেকে হোস্ট ও পোর্ট ভ্যালু ব্যবহার করেapphosting.yaml-এ এগুলি সেট করুন:env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
ধাপ ৩: আপনার অ্যাপ থেকে redis ব্যবহার করুন
redis npm প্যাকেজ ইনস্টল করুন:
npm install redis@latestআপনার কোড থেকে আপনার redis ক্যাশে অ্যাক্সেস করুন। পূর্ববর্তী ধাপে কনফিগার করা এনভায়রনমেন্ট ভেরিয়েবেল ব্যবহার করুন। যেমন, Next.js রুট হ্যান্ডলারে ক্যাশে থেকে আপনি কীভাবে পড়তে পারেন তা এখানে দেওয়া হল:
src/lib/redis.jsimport { createClient } from "redis"; // Set these environment variables in apphosting.yaml const REDISHOST = process.env.REDISHOST; const REDISPORT = process.env.REDISPORT; let redisClient; export async function getClient(req, res) { // Only connect if a connection isn't already available if (!redisClient) { redisClient = await createClient({ socket: { host: REDISHOST, port: Number(REDISPORT), }, }) .on("error", (err) => console.error("Redis Client Error", err)) .connect(); } return redisClient; }src/app/counter/route.jsimport { getClient } from "@/lib/redis.js"; export async function GET(request) { const redisClient = await getClient(); const count = await redisClient.get("counter"); return Response.json({ count }); } export async function POST(request) { const redisClient = await getClient(); const count = await redisClient.incr("counter"); return Response.json({ count }); }
ধাপ ৪ (ঐচ্ছিক): লোকাল ডেভেলপমেন্টের জন্য আপনার অ্যাপ কনফিগার করুন
Firebase App Hosting এমুলেটর apphosting.emulator.yaml ব্যবহার করে ভ্যালু ওভাররাইড করতে পারে। এখানে, আপনি REDISHOST-এর মান পরিবর্তন করে
লোকালহোস্টে পয়েন্ট করতে পারেন যাতে আপনি Redis-এর লোকাল ইনস্টলেশন ব্যবহার করে
লোকালি ডেভেলপ করতে পারেন।
- আপনার লোকাল মেশিনে Redis ইনস্টল করুন
আপনার লোকাল ইনস্ট্যান্স রেফারেন্স করতে
apphosting.emulator.yamlতৈরি বা এডিট করুন:env: - variable: REDISHOST value: 127.0.0.1