কম্পিউটার টিউটোরিয়াল

ফাস্টলি কম্পিউট@এজ সাথে রেডিস ইন্টিগ্রেশন করে দক্ষ পেজ ভিউ ট্র্যাকিং

এই উদাহরণে ফাস্টলি সিএলআই-এর পুরনো ভার্সন ব্যবহার করা হয়েছে। আপডেটেড ভার্সনের জন্য এই আর্টিকেলটি দেখুন।

উদ্দেশ্য

এজ কম্পিউটিং গত কয়েক বছরের সবচেয়ে উত্সাহজনক ট্রেন্ডের একটি। ক্লাউডফ্লেয়ার এবং ফাস্টলি-এর মতো সিডিএন সার্ভিসগুলো ডেভেলপারদের তাদের এজ ইনফ্রাস্ট্রাকচারে অ্যাপ্লিকেশন চালানোর সুযোগ দিচ্ছে। এতে বিশ্বব্যাপী বিতরণ করা, উচ্চ-Презফরম্যান্স অ্যাপ্লিকেশন তৈরি করা সম্ভব হচ্ছে।

কম্পিউট@এজ হলো ফাস্টলি-এর সার্ভারলেস প্ল্যাটফর্ম। আপনি রাস্ট, অ্যাসেম্বলিস্ক্রিপ্ট, জাভাস্ক্রিপ্টে কোড লিখে ফাস্টলি-এর এজ নেটওয়ার্কে রান করতে পারেন। ফাস্টলি কম্পিউট ফাংশনগুলো স্টেটলেস। অর্থাৎ ডেভেলপারদের অ্যাপ্লিকেশন স্টেট এক্সটার্নাল স্টোরেজে রাখতে হয়। কিন্তু ফাস্টলি ওয়েবঅ্যাসেম্বলি ব্যবহার করে রানটাইম হিসেবে এবং এটি টিসিপি কানেকশন অনুমতি দেয় না। আপস্ট্যাশ রেডিস এর রেস্ট এপিআই, গ্লোবাল রেপ্লিকেশন এবং সার্ভারলেস প্রাইসিং-এর কারণে ফাস্টলি কম্পিউট ফাংশনের জন্য আদর্শ সমাধান।

কোড এবং ডেমো দেখুন।

প্রজেক্ট সেটআপ

আপস্ট্যাশ কনসোল-এ একটি ডেটাবেস তৈরি করুন। এজ লোকেশন থেকে কম লেটেন্সির জন্য গ্লোবাল ডেটাবেস পছন্দ করুন।

ফাস্টলি সিএলআই ইনস্টল করুন:

brew install fastly/tap/fastly

আপনার ফাস্টলি অ্যাকাউন্টের সাথে সিএলআই কনফিগার করুন:

fastly configure

একটি ফোল্ডার তৈরি করে fastly compute init চালিয়ে প্রজেক্ট আরম্ভ করুন:

➜ using-fastly-compute git:(master) ✗ fastly compute init
Creating a new Compute@Edge project. Press ^C at any time to quit.
Name: [using-fastly-compute]
Description: 
Author: [enes@upstash.com]
Language: [1] Rust
[2] AssemblyScript (beta)
[3] JavaScript (beta)
[4] Other ('bring your own' Wasm binary)
Choose option: [1] 3
Starter kit: [1] Default starter for JavaScript
A basic starter kit that demonstrates routing, simple synthetic responses and overriding caching rules. https://github.com/fastly/compute-starter-kit-javascript-default
Choose option or paste git URL: [1]
✓ Initializing...
✓ Fetching package template...
✓ Updating package manifest...
✓ Initializing package...
Initialized package using-fastly-compute to: /Users/enes/dev/examples/using-fastly-compute
To publish the package (build and deploy), run:
fastly compute publish
To learn about deploying Compute@Edge projects using third-party orchestration tools, visit: https://developer.fastly.com/learning/integrations/orchestration/
SUCCESS: Initialized package using-fastly-compute

@upstash/redis এবং flight-path ইনস্টল করুন:

npm install @upstash/redis flight-path

ওয়েবপ্যাক কনফিগারেশন আপডেট করুন:

plugins: [
  // Polyfills go here.
  // Used for, e.g., any cross-platform WHATWG,
  // or core nodejs modules needed for your application.
  new webpack.ProvidePlugin({
    URL: "core-js/web/url",
  }),
],

fastly.toml ফাইল আপডেট করুন:

authors = ["enes@upstash.com"]
description = "Example of using Upstash with Fastly Compute@Edge"
language = "javascript"
manifest_version = 2
name = "fastly-upstash"
service_id = "PASTE_YOUR_SERVICE_ID"
[local_server.backends.upstash-db]
url = "https://eu1-liberal-cat-30162.upstash.io"

আপনার ফাস্টলি কম্পিউট সার্ভিস তৈরি করে সার্ভিস আইডি পেস্ট করুন।

ফাস্টলি কম্পিউট@এজ সাথে রেডিস ইন্টিগ্রেশন করে দক্ষ পেজ ভিউ ট্র্যাকিং

আপস্ট্যাশ রেস্ট ইউআরএলকে ব্যাকএন্ড হিসেবে ফাস্টলি কম্পিউট সার্ভিসে যোগ করুন। ফাস্টলি কম্পিউটে যেকোনো এক্সটার্নাল নেটওয়ার্ক কানেকশনকে ব্যাকএন্ড হিসেবে রেজিস্টার করতে হয়। সার্ভিসেস স্ক্রিনে Edit Configuration > Clone version x to edit > Origins > Create a host ক্লিক করুন।

হোস্ট যোগ করার পর এডিট আইকনে ক্লিক করে হোস্টের নাম দিন। নাম সেট করুন upstash-db যা আপস্ট্যাশ-রেডিস ক্লায়েন্ট কনফিগার করার সময় backend অপশনের সমান হবে। ইউআরএল থেকে https:// অংশটি সরিয়ে দিন। অবশেষে ডান পাশের উপরে Activate বাটনে ক্লিক করে বর্তমান ডিপ্লয়মেন্ট সহ কনফিগারেশন এক্টিভেট করুন।

ফাস্টলি কম্পিউট@এজ সাথে রেডিস ইন্টিগ্রেশন করে দক্ষ পেজ ভিউ ট্র্যাকিং

local_server.backends.upstash-db লোকালি ফাংশন রান করার জন্য জরুরি। ইউআরএলটি আপনার আপস্ট্যাশ ডেটাবেসের রেস্ট ইউআরএল দিয়ে রিপ্লেস করুন।

ইমপ্লিমেন্টেশন

src/index.js হলো সার্ভারলেস ফাংশনের ইমপ্লিমেন্টেশন। নিচের কোড অনুযায়ী এডিট করুন:

import { Router } from "flight-path";
import { Redis } from "@upstash/redis/fastly";

const router = new Router();
const redis = new Redis({
  url: "PASTE_YOUR_UPSTASH_REST_URL",
  token: "PASTE_YOUR_UPSTASH_TOKEN",
  backend: "upstash-db",
});

router.get("/", async (req, res) => {
  const count = await redis.incr("count");
  res.send(`Fastly with Upstash! Count: ${count}`);
});

router.listen();

আপস্ট্যাশ কনসোল থেকে রেস্ট ইউআরএল এবং টোকেন কপি-পেস্ট করুন।

আমরা সিম্পলি আপস্ট্যাশ-রেডিস ক্লায়েন্ট ব্যবহার করে আপস্ট্যাশের সাথে কানেক্ট করি। একটি কাউন্টার ইনক্রিমেন্ট করে রেসপন্স রিটার্ন করি।

নোট করুন যে অন্যান্য রেডিস ক্লায়েন্ট ব্যবহার করা যাবে না কারণ সেগুলো টিসিপি কানেকশন ব্যবহার করে যা ফাস্টলি কম্পিউটে সাপোর্টেড নয়।

auth() দিয়ে অথেনটিকেট করার সময় backend: upstash-db এক্সট্রা রিকোয়েস্ট অপশন হিসেবে যোগ করতে হবে। ফাস্টলি কম্পিউট যেকোনো এক্সটার্নাল নেটওয়ার্ক কানেকশনকে ব্যাকএন্ড হিসেবে রেজিস্টার করতে বাধ্য করে।

লোকালি রান করুন

ফাংশনটি লোকালি রান করতে:

fastly compute serve

বিল্ড এবং ডিপ্লয়

ফাংশন বিল্ড এবং ডিপ্লয় করতে:

fastly compute publish

আপনার অ্যাপ্লিকেশন ফাস্টলি দ্বারা বিল্ড এবং ডিপ্লয় হবে। কমান্ডটি ইউআরএল লগ করবে যাতে আপনি টেস্ট করতে পারেন:

https://horribly-organic-spider.edgecompute.app

শেষ কথা

এই আর্টিকেলে আমরা ফাস্টলি কম্পিউট@এজে আপস্ট্যাশ ব্যবহার করে একটি খুব সিম্পল অ্যাপ্লিকেশন তৈরি করেছি। আপনার ফিডব্যাক দিয়ে আপস্ট্যাশ এবং আমাদের কন্টেন্ট উন্নত করতে চাই। টুইটার বা ডিসকর্ড-এ আপনার মতামত জানান।

বাহ্যিক লিঙ্ক

https://developer.fastly.com/learning/compute/

https://developer.fastly.com/learning/compute/javascript/

  1. রেডিস লঞ্চপ্যাড: সবচেয়ে প্রিয় ডেটাবেসের শক্তি আনলক করা

  2. নবিনীকৃত Redis.io পরিচিতি: আধুনিক ডিজাইন, আপডেটেড ডক্স, উন্নত ইউজার অভিজ্ঞতা

  3. আধুনিক অ্যাপ্লিকেশনের জন্য 5টি অপরিহার্য Redis ইউজ কেস আবিষ্কার করুন

  4. স্কেলেবল অ্যাপ্লিকেশনের জন্য ৫টি অপরিহার্য Redis ইউজ কেস