Sidekiq রুবি ডেভেলপারদের সময় সাপেক্ষ কাজগুলিকে পটভূমিতে সরিয়ে দ্রুত এবং প্রতিক্রিয়াশীল ওয়েব অ্যাপ্লিকেশনগুলি বজায় রাখার অনুমতি দেয়৷
এর মূল অংশে মাল্টিথ্রেডিং সহ, Sidekiq একসাথে অনেকগুলি কাজ প্রক্রিয়া করতে পারে৷ এটি Sidekiq কে রুবি বা রেল অ্যাপ্লিকেশনগুলির একটি গুরুত্বপূর্ণ অংশ করে তোলে যা ভারী লোড পরিচালনা করে বা ইমেল বা ফাইলগুলি প্রসেস করার মতো কাজগুলি সম্পাদন করে৷ ব্যাকগ্রাউন্ড প্রসেসিং ব্যতীত, দীর্ঘমেয়াদী কাজগুলি আপনার অ্যাপ্লিকেশনের মূল থ্রেডকে ব্লক করবে, যার ফলে প্রতিক্রিয়ার সময় ধীর হবে এবং ব্যবহারকারীর অভিজ্ঞতা খারাপ হবে।
এই পোস্টে, আমরা ব্যাকগ্রাউন্ড জবগুলি পরিচালনা এবং প্রক্রিয়া করার জন্য Sidekiq কে কার্যকরভাবে ব্যবহার করার উপর ফোকাস করব৷
চলুন শুরু করা যাক!
সিডেকিকের মূল বিষয়গুলি
সারমর্মে, Sidekiq হল Ruby-এর জন্য একটি সম্পূর্ণ বৈশিষ্ট্যযুক্ত ব্যাকগ্রাউন্ড প্রসেসিং ফ্রেমওয়ার্ক৷ এটি আপনাকে একযোগে পটভূমির কাজগুলি চালাতে দেয়, প্রতিক্রিয়াশীল এবং নির্ভরযোগ্য ওয়েব অ্যাপ্লিকেশনগুলির জন্য গুরুত্বপূর্ণ৷ ইমেল পাঠানো, ইমেজ রিসাইজ করা বা CSV ফাইল প্রসেস করা যাই হোক না কেন, Sidekiq ব্যবহার করে পর্দার আড়ালে সময়সাপেক্ষ কাজ করা যেতে পারে।
Sidekiq এর স্থাপত্য মাল্টিথ্রেডিং এবং "শ্রমিক" ধারণার উপর অনেক বেশি নির্ভর করে। যাইহোক, Sidekiq 6.3.0 অনুযায়ী, Sidekiq::Worker মডিউলটি Sidekiq::Job-এর পক্ষে বাতিল করা হয়েছে যেহেতু পরিভাষা "কর্মী" বিভ্রান্তিকর হতে পারে:
আপনি একটি প্রক্রিয়া সম্পর্কে কথা বলছেন? একটি থ্রেড? এক ধরনের চাকরি? আমি ডেভেলপারদের কর্মী শব্দটি ব্যবহার বন্ধ করতে উত্সাহিত করি৷
৷রেডিস, একটি বিদ্যুত-দ্রুত ইন-মেমরি ডেটাবেস, এখানে একটি অপরিহার্য ভূমিকা পালন করে, কিউ সিস্টেম হিসাবে কাজ করে যা এই ব্যাকগ্রাউন্ড কাজগুলিকে সংরক্ষণ করে৷
দ্রষ্টব্য: যদিও Sidekiq স্টোরেজের জন্য Redis-এর উপর নির্ভর করে, আমরা এই নিবন্ধে Redis কনফিগারেশন এবং ব্যবহার সম্পর্কে বিস্তারিত জানতে পারব না।
রেলের জন্য Sidekiq এর ইনস্টলেশন এবং সেটআপ
শুরু করার জন্য, আপনাকে রুবি সংস্করণ 2.5 বা তার পরে এবং রেডিস সার্ভার সংস্করণ 4 বা তার পরে চালাতে হবে৷
এখন আপনি Sidekiq রুবি রত্ন ইনস্টল করার জন্য প্রস্তুত৷
৷আপনার অ্যাপ্লিকেশনের জেমফাইলে Sidekiq যোগ করে শুরু করুন:
এর পরে, এটি আপনার প্রকল্পের ডিরেক্টরিতে ইনস্টল করুন:
এখন যেহেতু Sidekiq ইনস্টল করা হয়েছে, আপনাকে এটি কনফিগার করতে হবে। একটি Railsapplication এ, আপনি Sidekiq কে আপনার ActiveJob হিসাবে কনফিগার করেন অ্যাডাপ্টার। config/application.rb খুলুন এবং অ্যাপ্লিকেশনক্লাস সংজ্ঞার ভিতরে নিম্নলিখিত লাইন যোগ করুন:
উদাহরণস্বরূপ, একটি Redis উদাহরণের দিকে নির্দেশ করতে আপনি একটি Sidekiq ইনিশিয়ালাইজার তৈরি করে Sidekiq কে আরও কনফিগার করতে পারেন। এটি রেলের একটি বিশেষ স্ক্রিপ্ট যা আপনার অ্যাপ্লিকেশন শুরু হলে চলে৷
৷
config/initializers-এ , sidekiq.rb নামে একটি ফাইল তৈরি করুন . এই ফাইলের ভিতরে, আপনি বিভিন্ন Sidekiq কনফিগারেশন নির্দিষ্ট করতে পারেন। উদাহরণস্বরূপ:
এই কনফিগারেশনটি Sidekiq কে একটি স্থানীয় Redis সার্ভারের সাথে সংযোগ করতে বলে। অবশ্যই, একটি উত্পাদন পরিবেশে, আপনি আপনার প্রকৃত রেডিস সার্ভারের সাথে স্থানীয় URL প্রতিস্থাপন করবেন (এটি একটি পরিবেশ পরিবর্তনশীলের জন্য একটি দুর্দান্ত জায়গা)।
আর এটাই! Sidekiq ইনস্টল এবং কনফিগার করার সাথে, আপনি এখন আপনার Rails অ্যাপ্লিকেশনের পটভূমিতে কাজ তৈরি এবং প্রক্রিয়াকরণ শুরু করতে প্রস্তুত৷
একটি Sidekiq কাজ সেট আপ করা
এখানে আপনি কিভাবে একটি মৌলিক Sidekiq কাজ সেট আপ এবং শুরু করবেন:
আসলে একটি কাজ চালানোর জন্য সারিবদ্ধ করতে, আপনি perform_async কল করুন কাজের ক্লাসে পদ্ধতি, এইরকম:
এই লাইনটি ডিফল্ট সারিতে একটি কাজ যোগ করে যা একটি কাজ উপলব্ধ হওয়ার সাথে সাথে কার্যকর হয়। আর্গুমেন্ট 'some_name' এবং 42 পারফর্ম মেথড SomeNameForAJob-এ পাঠানো হয়েছে মৃত্যুদন্ড কার্যকর করার পরে।
এখান থেকে, Sidekiq ক্লায়েন্ট কাজটিকে Redis-এ একটি সারিতে ঠেলে দেয়, এবং Sidekiq সার্ভার সেই কাজটিকে সারির বাইরে নিয়ে যায় যখন এটি প্রক্রিয়া করার জন্য প্রস্তুত হয়।
আপনার প্রথম Sidekiq কাজ তৈরি করা
Sidekiq-এ, চাকরিগুলিকে কাজের শ্রেণী দ্বারা প্রতিনিধিত্ব করা হয় এবং তাদের যে কাজগুলি সম্পাদন করতে হবে তা একটি perform-এ সংজ্ঞায়িত করা হয়েছে পদ্ধতি আসুন একটি মৌলিক Sidekiq কাজ তৈরি করি:
এই কোড স্নিপেটে, আমরা HelloNameJob ক্লাস তৈরি করেছি . এটি দুটি আর্গুমেন্ট নেয়:name এবং times . সঞ্চালিত হলে, এটি একটি নির্দিষ্ট সংখ্যক বার কনসোলে অভিবাদন প্রিন্ট করে। এটি অবশ্যই একটি সহজ উদাহরণ। একটি বাস্তব-বিশ্বের অ্যাপ্লিকেশনে, perform পদ্ধতিতে আপনি ব্যাকগ্রাউন্ডে চালাতে চান এমন কোনো কোড থাকতে পারে।
এখন আপনার কাজ সম্পাদন করুন। শুধু perform_async কল করুন আপনার perform যেকোন আর্গুমেন্টে ক্লাস এবং পাসের পদ্ধতি পদ্ধতি আশা করে। এখানে আমরা কিভাবে HelloNameJob এর সময়সূচী করতে পারি আমরা এইমাত্র তৈরি করেছি:
এটি "হ্যালো, জেফ!" প্রিন্ট করার জন্য একটি কাজ সারিবদ্ধ করবে! পাঁচ বার।
আপনার যদি একটি নির্দিষ্ট সময়ে কাজ করার প্রয়োজন হয়, আপনি perform_in ব্যবহার করতে পারেন অথবা perform_at পদ্ধতি যেমন:
এই উদাহরণগুলিতে, 'মেরিডিথ' তার অভিবাদন তিনবার পাঁচ মিনিটের মধ্যে গ্রহণ করবে, যখন 'জেফ'কে দুইবার অভিবাদন গ্রহণের জন্য দুই দিন অপেক্ষা করতে হবে।
উন্নত Sidekiq ব্যবহার
Sidekiq ব্যাকগ্রাউন্ডে কাজ অফলোড করার জন্য সীমাবদ্ধ নয়। এটিও উন্নত বৈশিষ্ট্যগুলি অফার করে যা আপনাকে আপনার কাজগুলি কনফিগার করার অনুমতি দেয়, যার মধ্যে চাকরির পুনঃপ্রচার এবং কাজের অগ্রাধিকার সহ৷
স্বয়ংক্রিয় কাজের পুনরায় চেষ্টা
Sidekiq-এর সবচেয়ে শক্তিশালী বৈশিষ্ট্যগুলির মধ্যে একটি হল স্বয়ংক্রিয় কাজের পুনঃপ্রচার। বাই-ডিফল্ট, যদি কোনো কাজ না-হ্যান্ডেল করা ব্যতিক্রমের কারণে ব্যর্থ হয়, Sidekiq একটি এক্সপোনেনশিয়াল ব্যাকঅফের সাথে কাজটি পুনরায় চেষ্টা করবে। আপনি sidekiq_options উল্লেখ করে পুনরায় চেষ্টার সংখ্যা কাস্টমাইজ করতে পারেন আপনার ক্লাসে এইরকম:
এই উদাহরণে, যদি একটি কাজ ব্যর্থ হয়, Sidekiq এটি ছেড়ে দেওয়ার আগে দশবার পুনরায় চেষ্টা করবে।
চাকরির অগ্রাধিকার
কাজের অগ্রাধিকার হল আরেকটি উন্নত বৈশিষ্ট্য যা Sidekiq প্রদান করে। আপনি বিভিন্ন সারিতে নিয়োগ করে এবং প্রতিটি সারির অগ্রাধিকার সেট করে আপনার কাজের অগ্রাধিকার নিয়ন্ত্রণ করতে পারেন। একটি কাজ সংজ্ঞায়িত করার সময় আপনি কীভাবে সারি নির্দিষ্ট করতে পারেন তা এখানে:
এই উদাহরণে, ThisJob-এর চাকরি সমালোচনামূলক সারিতে রাখা হবে। আপনার Sidekiq সার্ভার শুরু করার সময়, আপনি তারপরে নির্দিষ্ট করতে পারেন কোন সারিতে প্রক্রিয়া করা হবে৷
Sidekiq-এর উন্নত বৈশিষ্ট্যগুলি কীভাবে আপনার ব্যাকগ্রাউন্ড জব প্রসেসিংকে সূক্ষ্ম-টিউন করার জন্য ব্যবহার করা যেতে পারে তার কয়েকটি উদাহরণ এইগুলি। Sidekiq-এর সাথে, আপনার কাজগুলি দক্ষতার সাথে, নির্ভরযোগ্যভাবে এবং আপনার আবেদনের প্রয়োজনের জন্য সবচেয়ে উপযুক্ত উপায়ে প্রক্রিয়া করা হয়েছে তা নিশ্চিত করার জন্য আপনার কাছে সরঞ্জাম রয়েছে৷
Sidekiq দিয়ে মনিটরিং এবং স্কেলিং
Sidekiq আপনার কাজের প্রক্রিয়াকরণ ক্ষমতা নিরীক্ষণ এবং স্কেল করার জন্য স্ট্যান্ডার্ড বৈশিষ্ট্যগুলির সাথে আসে। একটি ওয়েব-ভিত্তিক ড্যাশবোর্ড আপনাকে আপনার কাজের সারিগুলির একটি রিয়েল-টাইম ভিউ দেয়। আপনি প্রক্রিয়াকৃত এবং ব্যর্থ কাজের সংখ্যা দেখতে পারেন, সেইসাথে বর্তমান এবং নির্ধারিত চাকরি সম্পর্কে বিস্তারিত তথ্য দেখতে পারেন।
Sidekiq ড্যাশবোর্ড ব্যবহার করতে, আপনার রেল রুট ফাইলে মাউন্ট করুন। config/routes.rb-এ , যোগ করুন:
এই লাইনগুলি যোগ করার পরে, আপনি আপনার সার্ভারে '/sidekiq' নেভিগেট করে ড্যাশবোর্ড অ্যাক্সেস করতে পারেন৷
AppSignal দিয়ে Sidekiq মনিটরিং
আরও ব্যাপক পর্যবেক্ষণের জন্য, Sidekiq AppSignal-এর মতো অ্যাপ্লিকেশন পারফরম্যান্স মনিটরিং সরঞ্জামগুলির সাথে ভালভাবে সংহত করে৷ AppSignal-এর Sidekiq ড্যাশবোর্ড আপনার Sidekiq কাজের বিশদ অন্তর্দৃষ্টি প্রদান করে, যার মধ্যে ব্যর্থ এবং পুনঃপ্রচেষ্ট করা চাকরি, চাকরির মেয়াদ এবং রেডিস মেমরি ব্যবহার রয়েছে।

আপনি আপনার অ্যাপ্লিকেশন স্কেল করার সময় বাধাগুলি সনাক্ত করার জন্য এই ধরণের তথ্য অমূল্য৷ এর বাইরে, অ্যাপসিগন্যালের সতর্কতাগুলি আপনাকে সারির দৈর্ঘ্যের মতো অসামঞ্জস্যগুলির শীর্ষে থাকতে সাহায্য করে, যাতে আপনি জানতে পারেন কখন আপনার সারিগুলি বেড়েছে৷

রেলের সাথে আপনার Sidekiqsetup-এ AppSignal একীভূত করা সহজ। AppSignal এর রুবি রত্ন কোন অতিরিক্ত কনফিগারেশন ছাড়াই Sidekiq সার্ভার মিডলওয়্যারে সন্নিবেশ করায়। এটি ActiveJob!
এর সাথেও কাজ করেডক্সে উল্লিখিত সেটআপ ব্যবহার করে আপনি এমন Sidekiq অ্যাপ্লিকেশনের জন্য AppSignal ব্যবহার করতে পারেন যা Rails-এ চলে না।
একটি Sidekiq ব্যবহার কেস
Sidekiq-এর সবচেয়ে সাধারণ ব্যবহারের ক্ষেত্রে দুটি হল অ্যাসিঙ্ক্রোনাস ইমেল এবং নির্ধারিত রিপোর্ট তৈরি করা। আসুন এই উদাহরণগুলির একটি ঘনিষ্ঠভাবে দেখে নেওয়া যাক।
ইমেলগুলি, বিশেষ করে যাদের বড় সংযুক্তি বা অসংখ্য প্রাপক, পাঠাতে একটি উল্লেখযোগ্য পরিমাণ সময় নিতে পারে৷ একটি ব্যাকগ্রাউন্ড কাজের মধ্যে ইমেল পাঠানো পরিচালনা করার মাধ্যমে, আপনার অ্যাপ্লিকেশনটি একটি ইমেল প্রক্রিয়াকরণের সময় ব্যবহারকারীর অনুরোধে সাড়া দেওয়া চালিয়ে যেতে পারে৷
এখানে একটি রেল অ্যাপ্লিকেশনে ইমেল পাঠানোর জন্য Sidekiq কাজের একটি সহজ উদাহরণ:
এই উদাহরণে, ResetPasswordJob UserMailer ব্যবহার করে একটি ব্যবহারকারীকে পাসওয়ার্ড রিসেট ইমেল পাঠাতে ক্লাস। পাঠানোর জন্য একটি ইমেল সারিবদ্ধ করতে, আপনি ResetPasswordJob.perform_async(user_id) কল করুন আপনার আবেদনের অন্য কোথাও থেকে।
যাইহোক, একটি সাধারণ Rails অ্যাপ্লিকেশনে, আপনাকে প্রায়ই ইমেল পাঠানোর জন্য একটি আলাদা Sidekiq কাজ তৈরি করতে হবে না। রেলগুলি অ্যাকশন মেইলার ফ্রেমওয়ার্ক প্রদান করে, যা ইমেল পাঠাতে ব্যবহৃত হয় এবং ব্যাকগ্রাউন্ডপ্রসেসিংয়ের জন্য সক্রিয় কাজের সাথে সুন্দরভাবে একত্রিত হয়।
পাসওয়ার্ড রিসেট ইমেল পাঠানোর জন্য আপনি কীভাবে অ্যাক্টিভ জব এবং অ্যাকশন মেইলার ব্যবহার করতে পারেন তার একটি উদাহরণ এখানে দেওয়া হল:
এই উদাহরণে, deliver_later কল করা মেইলারে স্বয়ংক্রিয়ভাবে ইমেলটিকে একটি ব্যাকগ্রাউন্ড কাজ হিসাবে পাঠানোর জন্য সারিবদ্ধ করে। পর্দার আড়ালে, সক্রিয় চাকরি এই কাজগুলি পরিচালনা করতে Sidekiq ব্যবহার করে।
কিন্তু আপনি যদি আপনার কাজের উপর আরও নিয়ন্ত্রণ চান — যেমন, আপনি পুনরায় চেষ্টা আচরণ বা সারি অগ্রাধিকার কাস্টমাইজ করতে চান — অথবা আপনি যদি অ্যাকশন মেইলারের মতো সহজে ActiveJob-এর সাথে একীভূত না হয় এমন কাজগুলি নিয়ে কাজ করছেন, তাহলে আলাদা Sidekiqjobs তৈরি করা উপযুক্ত৷
এই নমনীয়তা, Sidekiq-এর কর্মক্ষমতা এবং ব্যবহারের সহজতার সাথে, এটি Rails অ্যাপ্লিকেশনে বিভিন্ন ব্যাকগ্রাউন্ড কাজ পরিচালনার জন্য একটি মূল্যবান টুল করে তোলে৷
র্যাপিং আপ
এই পোস্টে, আমরা Sidekiq-এর পরিচিতি, এর মৌলিক বিষয়গুলি অন্বেষণ, ইনস্টলেশন এবং সেটআপে ডুব দেওয়া এবং দরকারী কাজগুলি তৈরি ও সম্পাদনের মাধ্যমে হেঁটেছি৷
আমরা Sidekiq-এর আরও উন্নত বৈশিষ্ট্যগুলিকে স্পর্শ করেছি, বাস্তব-বিশ্ব ব্যবহারের ক্ষেত্রে দেখেছি, এবং রুবি অ্যাপ্লিকেশনগুলির কর্মক্ষমতা এবং মাপযোগ্যতার উন্নতিতে এর গুরুত্বপূর্ণ ভূমিকা নিয়ে আলোচনা করেছি৷
এই ভূমিকার জ্ঞানে সজ্জিত, আপনি এখন আপনার নিজের রেল অ্যাপগুলিতে আরও কার্যকরভাবে Sidekiq ব্যবহার শুরু করতে সজ্জিত৷
শুভ কোডিং!
পি.এস. আপনি যদি রুবি ম্যাজিক পোস্টগুলি প্রেস থেকে বের হওয়ার সাথে সাথে পড়তে চান তবে আমাদের রুবি ম্যাজিক নিউজলেটারে সাবস্ক্রাইব করুন এবং একটি পোস্ট মিস করবেন না!