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

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

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 অ্যাপ থেকে Memorystore for Redis-এর সাথে সংযোগ স্থাপন

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

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

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

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

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

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

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

  1. Google Cloud কনসোলে আপনার Memorystore for Redis ইনস্ট্যান্সের 'Connections' ট্যাবে সংযোগের তথ্য (হোস্ট এবং পোর্ট) খুঁজুন।
  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
    

ধাপ ৩: আপনার অ্যাপ থেকে রেডিজ ব্যবহার করুন

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

    npm install redis@latest

  2. আপনার কোড থেকে রেডিস ক্যাশে অ্যাক্সেস করুন। পূর্ববর্তী ধাপে কনফিগার করা এনভায়রনমেন্ট ভেরিয়েবলগুলো ব্যবহার করুন। উদাহরণস্বরূপ, একটি 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 এর ভ্যালু পরিবর্তন করে লোকালহোস্টকে নির্দেশ করতে পারেন, যাতে আপনি Redis-এর লোকাল ইনস্টলেশন ব্যবহার করে স্থানীয়ভাবে ডেভেলপ করতে পারেন।

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

    env:
      - variable: REDISHOST
        value: 127.0.0.1