বড় সিস্টেম এবং দীর্ঘ-চলমান ব্যাকগ্রাউন্ড জবগুলির জন্য নির্মাণ করা।ক্রেডিট: ইলিয়াস চেব্বি অন আনস্প্ল্যাশ কয়েক মাস আগে, আমি এমন একটি ভূমিকা গ্রহণ করেছিলাম যা ইনফ্রাস্ট নির্মাণের প্রয়োজন ছিলবড় সিস্টেম এবং দীর্ঘ-চলমান ব্যাকগ্রাউন্ড জবগুলির জন্য নির্মাণ করা।ক্রেডিট: ইলিয়াস চেব্বি অন আনস্প্ল্যাশ কয়েক মাস আগে, আমি এমন একটি ভূমিকা গ্রহণ করেছিলাম যা ইনফ্রাস্ট নির্মাণের প্রয়োজন ছিল

উপদেশের জন্য স্পটিফাই তৈরি করা।

2025/12/11 21:15

বড় সিস্টেম এবং দীর্ঘ-চলমান ব্যাকগ্রাউন্ড জবগুলির জন্য নির্মাণ।

ক্রেডিট: ইলিয়াস চেব্বি অন আনস্প্ল্যাশ

কয়েক মাস আগে, আমি মিডিয়া (অডিও) স্ট্রিমিংয়ের জন্য ইনফ্রাস্ট্রাকচার নির্মাণের প্রয়োজনীয় ভূমিকা গ্রহণ করেছিলাম। কিন্তু স্ট্রিমেবল চাঙ্ক হিসাবে অডিও পরিবেশন করার বাইরে, দীর্ঘ-চলমান মিডিয়া প্রসেসিং জব এবং একটি ব্যাপক RAG পাইপলাইন ছিল যা ট্রান্সক্রিপশন, ট্রান্সকোডিং, এমবেডিং এবং ক্রমিক মিডিয়া আপডেটের জন্য ব্যবস্থা করেছিল। প্রোডাকশন মানসিকতার সাথে একটি MVP তৈরি করার জন্য আমাদের একটি নিরবচ্ছিন্ন সিস্টেম অর্জন করা পর্যন্ত পুনরাবৃত্তি করতে হয়েছিল। আমাদের পদ্ধতি এমন একটি যেখানে আমরা বৈশিষ্ট্য এবং অগ্রাধিকারের অন্তর্নিহিত স্ট্যাক একত্রিত করেছি।

প্রাথমিক উদ্বেগ:

নির্মাণের সময়কালে, প্রতিটি পুনরাবৃত্তি তাৎক্ষণিক এবং প্রায়শই "সর্বাঙ্গীণ" প্রয়োজনের প্রতিক্রিয়া হিসাবে এসেছিল। প্রাথমিক উদ্বেগ ছিল জব সারিবদ্ধ করা, যা Redis দিয়ে সহজেই যথেষ্ট ছিল; আমরা কেবল ফায়ার করেছি এবং ভুলে গেছি। NEST JS ফ্রেমওয়ার্কে Bull MQ আমাদের পুনঃচেষ্টা, ব্যাকলগ এবং ডেড-লেটার কিউয়ের উপর আরও ভাল নিয়ন্ত্রণ দিয়েছিল। স্থানীয়ভাবে এবং প্রোডাকশনে কিছু পেলোড সহ, আমরা মিডিয়া প্রবাহ সঠিকভাবে পেয়েছি। আমরা শীঘ্রই অবজারভেবিলিটির ভারে বোঝাই হয়ে গেছিলাম:
লগ → জবের রেকর্ড (অনুরোধ, প্রতিক্রিয়া, ত্রুটি)।
মেট্রিক্স → কতটা / কতবার এই জবগুলি চলে, ব্যর্থ হয়, সম্পূর্ণ হয় ইত্যাদি।
ট্রেস → একটি জব সার্ভিসগুলির মধ্যে যে পথ নিয়েছে (প্রবাহ পথের মধ্যে কল করা ফাংশন/মেথড)।

আপনি এর কিছু সমাধান করতে পারেন API ডিজাইন করে এবং সেগুলিকে প্লাগ করার জন্য একটি কাস্টম ড্যাশবোর্ড তৈরি করে, কিন্তু স্কেলেবিলিটির সমস্যা যথেষ্ট হবে। এবং আসলে, আমরা API ডিজাইন করেছি।

অবজারভেবিলিটির জন্য নির্মাণ

জটিল, দীর্ঘ-চলমান ব্যাকএন্ড ওয়ার্কফ্লো পরিচালনার চ্যালেঞ্জ, যেখানে ব্যর্থতাগুলি পুনরুদ্ধারযোগ্য হতে হবে, এবং অবস্থা স্থায়ী হতে হবে, Inngest আমাদের আর্কিটেকচারাল মুক্তি হয়ে উঠেছিল। এটি মৌলিকভাবে আমাদের পদ্ধতি পুনর্গঠন করেছে: প্রতিটি দীর্ঘ-চলমান ব্যাকগ্রাউন্ড জব একটি ব্যাকগ্রাউন্ড ফাংশন হয়ে যায়, যা একটি নির্দিষ্ট ইভেন্ট দ্বারা ট্রিগার হয়।

উদাহরণস্বরূপ, একটি Transcription.request ইভেন্ট একটি TranscribeAudio ফাংশন ট্রিগার করবে। এই ফাংশনে স্টেপ-রান থাকতে পারে: fetch_audio_metadata, deepgram_transcribe, parse_save_trasncription, এবং notify_user।

ওয়ার্কফ্লো বিশ্লেষণ: Inngest ফাংশন এবং স্টেপ-রান

কোর স্থায়িত্বের প্রাথমিক হল স্টেপ-রান। একটি ব্যাকগ্রাউন্ড ফাংশন অভ্যন্তরীণভাবে এই স্টেপ-রানগুলিতে বিভক্ত হয়, প্রতিটিতে একটি ন্যূনতম, অবিভাজ্য লজিক ব্লক থাকে।

  • অবিভাজ্য লজিক: একটি ফাংশন আপনার ব্যবসায়িক লজিক ধাপে ধাপে কার্যকর করে। যদি একটি ধাপ ব্যর্থ হয়, সম্পূর্ণ রানের অবস্থা সংরক্ষিত হয়, এবং রান পুনরায় চেষ্টা করা যেতে পারে। এটি শুরু থেকে ফাংশন পুনরায় শুরু করে। পৃথক ধাপ বা স্টেপ-রান বিচ্ছিন্নভাবে পুনরায় চেষ্টা করা যাবে না।
  • রেসপন্স সিরিয়ালাইজেশন: একটি স্টেপ-রান এর রেসপন্স দ্বারা সংজ্ঞায়িত হয়। এই রেসপন্স স্বয়ংক্রিয়ভাবে সিরিয়ালাইজ করা হয়, যা এক্সিকিউশন সীমানা জুড়ে জটিল বা শক্তিশালী-টাইপ করা ডেটা স্ট্রাকচার সংরক্ষণের জন্য অপরিহার্য। পরবর্তী স্টেপ-রান এই সিরিয়ালাইজড রেসপন্স নির্ভরযোগ্যভাবে পার্স করতে পারে, বা দক্ষতার জন্য লজিক একটি একক ধাপে মার্জ করা যেতে পারে।
  • ডিকাপলিং এবং শিডিউলিং: একটি ফাংশনের মধ্যে, আমরা শর্তসাপেক্ষে নতুন, নির্ভরশীল ইভেন্ট সারিবদ্ধ বা শিডিউল করতে পারি, যা জটিল ফ্যান-আউট/ফ্যান-ইন প্যাটার্ন এবং এক বছর পর্যন্ত দীর্ঘমেয়াদী শিডিউলিং সক্ষম করে। যেকোনো পয়েন্টে ত্রুটি এবং সাফল্য ধরা, শাখাবদ্ধ এবং ওয়ার্কফ্লোর আরও নিচে পরিচালনা করা যেতে পারে।

Inngest ফাংশন অ্যাবস্ট্রাক্ট:

import { inngest } from 'inngest-client';

export const createMyFunction = (dependencies) => {
return inngest.createFunction(
{
id: 'my-function',
name: 'My Example Function',
retries: 3, // retry the entire run on failure
concurrency: { limit: 5 },
onFailure: async ({ event, error, step }) => {
// handle errors here
await step.run('handle-error', async () => {
console.error('Error processing event:', error);
});
},
},
{ event: 'my/event.triggered' },
async ({ event, step }) => {
const { payload } = event.data;

// Step 1: Define first step
const step1Result = await step.run('step-1', async () => {
// logic for step 1
return `Processed ${payload}`;
});

// Step 2: Define second step
const step2Result = await step.run('step-2', async () => {
// logic for step 2
return step1Result + ' -> step 2';
});

// Step N: Continue as needed
await step.run('final-step', async () => {
// finalization logic
console.log('Finished processing:', step2Result);
});

return { success: true };
},
);
};

Inngest এর ইভেন্ট-চালিত মডেল প্রতিটি ওয়ার্কফ্লো এক্সিকিউশনে সূক্ষ্ম অন্তর্দৃষ্টি প্রদান করে:

  • ব্যাপক ইভেন্ট ট্রেসিং: প্রতিটি সারিবদ্ধ ফাংশন এক্সিকিউশন এর উৎপত্তি ইভেন্টের বিপরীতে লগ করা হয়। এটি একটি একক ব্যবহারকারী ক্রিয়া সম্পর্কিত সমস্ত কার্যকলাপের একটি স্পষ্ট, উচ্চ-স্তরের ট্রেইল প্রদান করে।
  • বিস্তারিত রান ইনসাইট: প্রতিটি ফাংশন এক্সিকিউশনের জন্য (সাফল্য এবং ব্যর্থতা উভয়), Inngest এর ack (স্বীকৃতি) এবং nack (নেতিবাচক স্বীকৃতি) রিপোর্টিংয়ের মাধ্যমে বিস্তারিত লগ প্রদান করে। এই লগগুলিতে ত্রুটি স্ট্যাক ট্রেস, সম্পূর্ণ অনুরোধ পেলোড এবং প্রতিটি পৃথক স্টেপ-রানের জন্য সিরিয়ালাইজড রেসপন্স পেলোড অন্তর্ভুক্ত থাকে।
  • অপারেশনাল মেট্রিক্স: লগগুলির বাইরে, আমরা ফাংশন স্বাস্থ্যের উপর গুরুত্বপূর্ণ মেট্রিক্স অর্জন করেছি, যার মধ্যে সাফল্যের হার, ব্যর্থতার হার এবং পুনঃচেষ্টার সংখ্যা অন্তর্ভুক্ত, যা আমাদের বিতরণকৃত ওয়ার্কফ্লোর নির্ভরযোগ্যতা এবং লেটেন্সি নিরন্তর মনিটর করতে দেয়।

স্থিতিস্থাপকতার জন্য নির্মাণ

শুধুমাত্র ইভেন্ট প্রসেসিংয়ের উপর নির্ভর করার সতর্কতা হল যে যদিও Inngest দক্ষতার সাথে ফাংশন এক্সিকিউশন সারিবদ্ধ করে, ইভেন্টগুলি নিজেরাই অভ্যন্তরীণভাবে সারিবদ্ধ নয় ঐতিহ্যগত মেসেজিং ব্রোকার অর্থে। একটি স্পষ্ট ইভেন্ট কিউয়ের অনুপস্থিতি উচ্চ-ট্রাফিক পরিস্থিতিতে সমস্যাজনক হতে পারে সম্ভাব্য রেস কন্ডিশন বা ড্রপড ইভেন্টের কারণে যদি ইনজেশন এন্ডপয়েন্ট অভিভূত হয়।

এটি সমাধান করতে এবং কঠোর ইভেন্ট স্থায়িত্ব জোরদার করতে, আমরা একটি বাফার হিসাবে একটি নিবেদিত কিউয়িং সিস্টেম বাস্তবায়ন করেছি।

AWS সিম্পল কিউ সিস্টেম (SQS) ছিল পছন্দের সিস্টেম (যদিও যেকোনো শক্তিশালী কিউয়িং সিস্টেম করা যায়), আমাদের বিদ্যমান ইনফ্রাস্ট্রাকচার AWS-এ থাকার কারণে। আমরা একটি দুই-কিউ সিস্টেম আর্কিটেক্ট করেছি: একটি মেইন কিউ এবং একটি ডেড লেটার কিউ (DLQ)

আমরা একটি ইলাস্টিক বিনস্টক (EB) ওয়ার্কার এনভায়রনমেন্ট স্থাপন করেছি যা বিশেষভাবে মেইন কিউ থেকে সরাসরি মেসেজ গ্রহণ করার জন্য কনফিগার করা হয়েছে। যদি মেইন কিউতে একটি মেসেজ EB ওয়ার্কার দ্বারা একটি নির্দিষ্ট সংখ্যক বার প্রক্রিয়া করতে ব্যর্থ হয়, মেইন কিউ স্বয়ংক্রিয়ভাবে ব্যর্থ মেসেজটি নিবেদিত DLQ-তে স্থানান্তর করে। এটি নিশ্চিত করে যে কোনো ইভেন্ট স্থায়ীভাবে হারিয়ে যায় না যদি এটি ট্রিগার করতে বা Inngest দ্বারা পিক আপ করতে ব্যর্থ হয়। এই ওয়ার্কার এনভায়রনমেন্ট একটি স্ট্যান্ডার্ড EB ওয়েব সার্ভার এনভায়রনমেন্ট থেকে আলাদা, কারণ এর একমাত্র দায়িত্ব হল মেসেজ গ্রহণ এবং প্রক্রিয়াকরণ (এই ক্ষেত্রে, গৃহীত মেসেজটি Inngest API এন্ডপয়েন্টে ফরওয়ার্ড করা)।

সীমা এবং স্পেসিফিকেশন বোঝা

এন্টারপ্রাইজ-স্কেল ইনফ্রাস্ট্রাকচার নির্মাণের একটি অবমূল্যায়িত এবং বরং প্রাসঙ্গিক অংশ হল যে এটি সম্পদ ব্যবহার করে, এবং সেগুলি দীর্ঘ-চলমান। মাইক্রোসার্ভিসেস আর্কিটেকচার প্রতি সার্ভিসের জন্য স্কেলেবিলিটি প্রদান করে। স্টোরেজ, RAM, এবং সম্পদের টাইমআউট কাজে আসবে। উদাহরণস্বরূপ, AWS ইনস্ট্যান্স টাইপের জন্য আমাদের স্পেসিফিকেশন দ্রুত t3.micro থেকে t3.small-এ চলে গেছে, এবং এখন t3.medium-এ পেগ করা আছে। দীর্ঘ-চলমান, CPU-ইনটেনসিভ ব্যাকগ্রাউন্ড জবের জন্য, ছোট ইনস্ট্যান্স দিয়ে হরিজন্টাল স্কেলিং ব্যর্থ হয় কারণ বটলনেক হল একটি একক জব প্রক্রিয়া করতে যে সময় লাগে, নতুন জব কিউতে প্রবেশ করার পরিমাণ নয়।

জব বা ফাংশন যেমন ট্রান্সকোডিং, এমবেডিং সাধারণত CPU-বাউন্ড এবং মেমরি-বাউন্ডCPU-বাউন্ড কারণ তারা স্থায়ী, তীব্র CPU ব্যবহার প্রয়োজন, এবং মেমরি-বাউন্ড কারণ তারা প্রায়ই বড় মডেল লোড করতে বা বড় ফাইল বা পেলোড দক্ষতার সাথে পরিচালনা করতে উল্লেখযোগ্য RAM প্রয়োজন।

শেষ পর্যন্ত, এই বর্ধিত আর্কিটেকচার, SQS এর স্থায়িত্ব এবং একটি EB ওয়ার্কার এনভায়রনমেন্টের নিয়ন্ত্রিত এক্সিকিউশন সরাসরি Inngest API-এর আপস্ট্রিমে রাখা, অপরিহার্য স্থিতিস্থাপকতা প্রদান করেছে। আমরা কঠোর ইভেন্ট মালিকানা অর্জন করেছি, ট্রাফিক স্পাইকের সময় রেস কন্ডিশন দূর করেছি, এবং একটি নন-ভোলাটাইল ডেড লেটার মেকানিজম অর্জন করেছি। আমরা Inngest-কে এর ওয়ার্কফ্লো অর্কেস্ট্রেশন এবং ডিবাগিং ক্ষমতার জন্য ব্যবহার করেছি, যখন সর্বাধিক মেসেজ থ্রুপুট এবং স্থায়িত্বের জন্য AWS প্রিমিটিভগুলির উপর নির্ভর করেছি। ফলস্বরূপ সিস্টেমটি শুধুমাত্র স্কেলেবল নয় বরং অত্যন্ত অডিটযোগ্য, সফলভাবে জটিল, দীর্ঘ-চলমান ব্যাকএন্ড জবগুলিকে নিরাপদ, পর্যবেক্ষণযোগ্য এবং ব্যর্থতা-সহনশীল মাইক্রো-স্টেপে রূপান্তরিত করে।


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

ডিসক্লেইমার: এই সাইটে পুনঃপ্রকাশিত নিবন্ধগুলো সর্বসাধারণের জন্য উন্মুক্ত প্ল্যাটফর্ম থেকে সংগ্রহ করা হয়েছে এবং শুধুমাত্র তথ্যের উদ্দেশ্যে প্রদান করা হয়েছে। এগুলো আবশ্যিকভাবে MEXC-এর মতামতকে প্রতিফলিত করে না। সমস্ত অধিকার মূল লেখকদের কাছে সংরক্ষিত রয়েছে। আপনি যদি মনে করেন কোনো কনটেন্ট তৃতীয় পক্ষের অধিকার লঙ্ঘন করেছে, তাহলে অনুগ্রহ করে অপসারণের জন্য service@support.mexc.com এ যোগাযোগ করুন। MEXC কনটেন্টের সঠিকতা, সম্পূর্ণতা বা সময়োপযোগিতা সম্পর্কে কোনো গ্যারান্টি দেয় না এবং প্রদত্ত তথ্যের ভিত্তিতে নেওয়া কোনো পদক্ষেপের জন্য দায়ী নয়। এই কনটেন্ট কোনো আর্থিক, আইনগত বা অন্যান্য পেশাদার পরামর্শ নয় এবং এটি MEXC-এর সুপারিশ বা সমর্থন হিসেবে গণ্য করা উচিত নয়।

আপনি আরও পছন্দ করতে পারেন

চেইনলিংকের শীর্ষ তিমিরা দিক পরিবর্তন করেছে, নীরবে $263M LINK সংগ্রহ করছে

চেইনলিংকের শীর্ষ তিমিরা দিক পরিবর্তন করেছে, নীরবে $263M LINK সংগ্রহ করছে

অন-চেইন ডেটা দেখায় যে Chainlink নেটওয়ার্কের শীর্ষ ১০০ তিমি সম্প্রতি আবার সম্পদ সংগ্রহ শুরু করেছে, তাদের পূর্ববর্তী বিতরণ প্রত্যাহার করছে। শীর্ষ Chainlink
শেয়ার করুন
NewsBTC2025/12/17 16:00
বায়োলজিক্স X 3DCC কনফারেন্স 2026: পরবর্তী বায়োফার্মা যুগের জন্য উদ্ভাবন, ড্রাগ ডেভেলপমেন্ট এবং ট্রান্সলেশন একত্রিতকরণ

বায়োলজিক্স X 3DCC কনফারেন্স 2026: পরবর্তী বায়োফার্মা যুগের জন্য উদ্ভাবন, ড্রাগ ডেভেলপমেন্ট এবং ট্রান্সলেশন একত্রিতকরণ

নিবন্ধন উন্মুক্ত ভারতের প্রথম এই ধরনের, ৬ষ্ঠ বার্ষিক শীর্ষ সম্মেলন বায়োফার্মাসিউটিক্যাল পণ্য উন্নয়ন বিষয়ে আন্তর্জাতিক এর ৩য় সংস্করণের সাথে যৌথভাবে
শেয়ার করুন
AI Journal2025/12/17 16:45
B2BINPAY ব্যাংক, EMI এবং পেমেন্ট প্রদানকারীদের জন্য হোয়াইট লেবেল ক্রিপ্টো পেমেন্ট প্ল্যাটফর্ম শক্তিশালী করেছে

B2BINPAY ব্যাংক, EMI এবং পেমেন্ট প্রদানকারীদের জন্য হোয়াইট লেবেল ক্রিপ্টো পেমেন্ট প্ল্যাটফর্ম শক্তিশালী করেছে

রোম, ১৭ ডিসেম্বর, ২০২৫ /PRNewswire/ — Stablecoins একটি বিশেষায়িত উপকরণ থেকে মূল নিষ্পত্তি স্তরে ক্রমাগত এগিয়ে চলেছে। ২০২৫ সালের প্রথম সাত মাসে, stablecoin
শেয়ার করুন
AI Journal2025/12/17 16:46