ফায়ারবেস অ্যাপ হোস্টিংকে একটি VPC নেটওয়ার্কে সংযুক্ত করুন

আপনার Firebase App Hosting ব্যাকএন্ড একটি ভার্চুয়াল প্রাইভেট ক্লাউড (VPC) নেটওয়ার্কের সাথে সংযুক্ত হতে পারে। এটি আপনার Firebase App Hosting ব্যাকএন্ডকে ক্লাউড SQL, স্প্যানার, ক্লাউড মেমোরিস্টোর, Compute Engine , অথবা Kubernetes অভ্যন্তরীণ মাইক্রোসার্ভিসের মতো পাবলিক IP ঠিকানা ব্যবহার করে অ্যাক্সেসযোগ্য নয় এমন ব্যাকএন্ড পরিষেবাগুলিতে অ্যাক্সেস করার অনুমতি দেয়।

VPC অ্যাক্সেস শুধুমাত্র রানটাইমে (আপনার Cloud Run কন্টেইনার থেকে) পাওয়া যায়, বিল্ড টাইমে নয় ( Cloud Build )।

VPC নেটওয়ার্কের সাথে কীভাবে সংযোগ করবেন তা বেছে নিন

  • ডাইরেক্ট ভিপিসি এগ্রেস : সহজ, দ্রুত এবং কম ব্যয়বহুল। প্রতিটি কন্টেইনারে একটি আইপি ঠিকানা ব্যবহার করা হয়। বেশিরভাগ ব্যবহারের ক্ষেত্রে এটি সুপারিশ করা হয়।
  • সার্ভারলেস সংযোগকারী : বৃহত্তর অ্যাপ্লিকেশনের জন্য পুল আইপি ঠিকানা। অন্তর্নিহিত ভিএমের জন্য অর্থ প্রদানের প্রয়োজন। মূল্যের বিশদ বিবরণের জন্য ভিপিসি মূল্য পৃষ্ঠায় "সার্ভারলেস ভিপিসি অ্যাক্সেস" দেখুন।

apphosting.yaml এ কনফিগার করুন

অ্যাক্সেস কনফিগার করতে আপনার apphosting.yaml ফাইলে vpcAccess ম্যাপিং ব্যবহার করুন। সম্পূর্ণরূপে যোগ্য নেটওয়ার্ক/সংযোগকারীর নাম অথবা একটি আইডি ব্যবহার করুন। আইডি ব্যবহার করলে বিভিন্ন সংযোগকারী/নেটওয়ার্ক সহ স্টেজিং এবং প্রোডাকশন পরিবেশের মধ্যে পোর্টেবিলিটি সম্ভব হয়।

ডাইরেক্ট ভিপিসি এগ্রেস কনফিগারেশন ( 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 অ্যাপ থেকে Redis-এর জন্য Memorystore-এ সংযোগ করুন।

Redis বা Memcached এর মতো ক্যাশিং সিস্টেমগুলি সাধারণত একটি অ্যাপের জন্য দ্রুত ডেটা ক্যাশিং স্তর তৈরি করতে ব্যবহৃত হয়। এই উদাহরণটি আপনাকে দেখায় যে কীভাবে আপনার Firebase App Hosting ব্যাকএন্ডের মতো একই Google Cloud প্রকল্পে Redis এর জন্য Memorystore সেট আপ করবেন এবং Direct VPC egress ব্যবহার করে এর সাথে সংযোগ স্থাপন করবেন।

ধাপ ০: Redis ইনস্ট্যান্সের জন্য একটি মেমোরিস্টোর তৈরি করুন

  1. Google Cloud কনসোলে মেমোরিস্টোর ফর রেডিস পৃষ্ঠায় যান।
    • নিশ্চিত করুন যে আপনি Firebase App Hosting জন্য যে প্রকল্পটি ব্যবহার করছেন সেটিই নির্বাচন করা হয়েছে।
    • যদি আপনি এই পৃষ্ঠাটি অ্যাক্সেস করতে না পারেন, তাহলে নিশ্চিত করুন যে আপনার প্রকল্পের জন্য বিলিং সক্ষম করা আছে এবং আপনি মেমোরিস্টোর API সক্ষম করেছেন।
  2. "ইনস্ট্যান্স তৈরি করুন" নির্বাচন করুন।
  3. আপনার পছন্দের সেটিংস দিয়ে নতুন ইনস্ট্যান্সটি কনফিগার করুন। এখানে কিছু উদাহরণ মান দেওয়া হল যা আপনি ব্যবহার করতে পারেন:
    • ইনস্ট্যান্স আইডি এর অধীনে my-redis-cache লিখুন।
    • ডিসপ্লে নামের অধীনে Redis cache লিখুন।
    • টিয়ার সিলেক্টরের অধীনে বেসিক নির্বাচন করুন। বেসিক টিয়ার একটি স্বতন্ত্র রেডিস নোডকে নির্দেশ করে, স্ট্যান্ডার্ড টিয়ারের বিপরীতে, যা আপনার ডেটা ব্যাকআপ করার জন্য একটি রেপ্লিকা নোড ব্যবহার করে।
    • অঞ্চল নির্বাচক থেকে আপনার App Hosting ব্যাকএন্ডের অঞ্চলটি নির্বাচন করুন। আপনার ব্যাকএন্ডের অঞ্চলের সাথে মেলে এই মানটি সেট করতে ভুলবেন না।
    • জোন নির্বাচক থেকে যেকোনো একটি বেছে নিন।
    • Capacity এর অধীনে 5 লিখুন। এটি আপনার ইনস্ট্যান্স ক্যাপাসিটি 5 GB তে সেট করে।
    • সংস্করণ (প্রস্তাবিত) এর অধীনে 5.0 নির্বাচন করুন।
    • অনুমোদিত নেটওয়ার্ক নির্বাচক থেকে ডিফল্ট নির্বাচন করুন।

ধাপ ১: আপনার VPC নেটওয়ার্ক আইডি দিয়ে apphosting.yaml আপডেট করুন।

  1. Google Cloud কনসোলে ভিপিসি নেটওয়ার্ক পৃষ্ঠাটি দেখুন।
  2. আপনার মেমোরিস্টোর ফর রেডিস ইনস্ট্যান্সের জন্য VPC নেটওয়ার্ক আইডি খুঁজুন (এটি প্রায়শই default হবে)।
  3. VPC নেটওয়ার্ক আইডি ব্যবহার করে apphosting.yaml এ সরাসরি VPC egress কনফিগারেশন সেট করুন:

    runConfig:
      vpcAccess:
        egress: PRIVATE_RANGES_ONLY # Default value
      networkInterfaces:
        - network: my-network-id
    

ধাপ ২: আপনার অ্যাপটিকে Redis-এ নির্দেশিত করে এমন পরিবেশগত ভেরিয়েবল যোগ করুন

  1. Google Cloud কনসোলে আপনার মেমোরিস্টোর ফর রেডিস ইনস্ট্যান্সের "কানেকশন" ট্যাবে সংযোগের তথ্য (হোস্ট এবং পোর্ট) খুঁজুন।
  2. 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 ব্যবহার করুন

  1. redis npm প্যাকেজটি ইনস্টল করুন:

    npm install redis@latest

  2. আপনার কোড থেকে আপনার redis ক্যাশে অ্যাক্সেস করুন। পূর্ববর্তী ধাপে কনফিগার করা পরিবেশ ভেরিয়েবলগুলি ব্যবহার করুন। উদাহরণস্বরূপ, Next.js রুট হ্যান্ডলারে আপনি কীভাবে ক্যাশে থেকে পড়তে পারেন তা এখানে দেওয়া হল:

    • src/lib/redis.js

      import { 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(REDISPORT, REDISHOST)
            .on("error", (err) => console.error("Redis Client Error", err))
            .connect();
        }
      
        return redisClient;
      }
      
    • src/app/counter/route.js

      import { 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 এর মান পরিবর্তন করে localhost-এ নির্দেশ করতে পারেন যাতে আপনি Redis এর স্থানীয় ইনস্টলেশন ব্যবহার করে স্থানীয়ভাবে বিকাশ করতে পারেন।

  1. আপনার স্থানীয় মেশিনে Redis ইনস্টল করুন
  2. আপনার স্থানীয় ইনস্ট্যান্স রেফারেন্স করার জন্য apphosting.emulators.yaml তৈরি বা সম্পাদনা করুন:

    env:
      - variable: REDISHOST
        value: 127.0.0.1