অ্যাপ্লিকেশন দলগুলিকে অবশ্যই বুঝতে হবে তাদের গ্রাহকের অভিজ্ঞতা কেমন। এটি শুধুমাত্র একটি সাধারণ দৃষ্টিকোণ থেকে (ব্যবহারযোগ্যতা এবং প্রতিক্রিয়াশীলতার পরিপ্রেক্ষিতে) নয় বরং প্রতিদিন, মিনিটে মিনিটের ভিত্তিতেও সত্য৷
বিশেষ করে, আপনি যখন বিতরণ করা সিস্টেমের সাথে কাজ করেন, তখন ত্রুটিগুলি অনিবার্য। সাইটের ট্র্যাফিক সারা দিন ওঠানামা করে, এবং সিস্টেমের যেকোনও একটি নির্ভরতা যেকোন সময় একটি সমস্যার সম্মুখীন হতে পারে।
এই নিবন্ধে, আমরা একটি রুবি অন রেল অ্যাপ্লিকেশনের মধ্যে পারফরম্যান্স সমস্যাগুলি নিরীক্ষণ এবং সমাধান করতে সাহায্য করার জন্য ম্যাজিক ড্যাশবোর্ড ব্যবহার করব৷
কিন্তু আমরা ম্যাজিক ড্যাশবোর্ডে ডুব দেওয়ার আগে, আসুন দেখি আমাদের অ্যাপ ডিজাইন করার সময় আমাদের কী কী খেয়াল রাখা উচিত।
রুবি অ্যাপ তৈরি করার সময় যে বিষয়গুলি বিবেচনা করতে হবে
৷একজন অ্যাপ্লিকেশানের মালিক বা দলের সদস্য হিসাবে, গ্রাহকের আগে আপনার আবেদনে কোন সমস্যা আছে কিনা তা আপনি জানতে চাইবেন। এটি আপনাকে অবিলম্বে সংশোধনমূলক পদক্ষেপ নিতে সক্ষম করে এবং আশা করি আপনার ব্যবহারকারীদের কোনো বাধা এড়াতে পারে৷
অ্যাপ্লিকেশনের কয়েকটি মূল প্রশ্ন রয়েছে যা আপনাকে যেকোনো সময়ে উত্তর দিতে সক্ষম হতে হবে:
- পৃষ্ঠার প্রতিক্রিয়ার সময় কি গ্রহণযোগ্য? Google এর মতে, আজকাল দুই সেকেন্ডের চেয়ে ধীরগতির যেকোন কিছু গ্রাহকদের আপনার সাইট ছেড়ে অন্যত্র চলে যেতে বাধ্য করবে।
- আপনার ব্যবহারকারীরা কি কোনো ত্রুটির সম্মুখীন হচ্ছেন? যদি তাই হয়, কি ধরনের ত্রুটি? ত্রুটির হার কত?
- কোন চলমান অপারেশনাল সমস্যা কি আপনার আবেদনকে প্রভাবিত করছে? এটি নেটওয়ার্ক, স্টোরেজ বা নিরাপত্তা পরিষেবাগুলির সাথে হতে পারে৷ আমরা সবাই জানি, ক্লাউড প্রদানকারীদের বিভ্রাট রয়েছে যা আমাদের অ্যাপ্লিকেশনের স্বাস্থ্যকেও প্রভাবিত করে।
পর্যবেক্ষণযোগ্যতা গুরুত্বপূর্ণ, তবুও এটি প্রায়শই শেষ জিনিস যা ইঞ্জিনিয়াররা চিন্তা করে। তদ্ব্যতীত, অপারেশনাল প্রস্তুতির জন্য ইতিমধ্যে সময়সূচী তৈরি করা হয়েছে। এটাকে পণ্য লঞ্চের আগের সপ্তাহান্ত বলা হয়!
একদিকে ঠাট্টা করে, কিছু পর্যবেক্ষণ করার আগে আপনাকে প্রথমে আপনার অ্যাপ তৈরি করতে হবে। এটি ডেভেলপমেন্ট লাইফ সাইকেলের শেষ না হওয়া পর্যন্ত পারফরম্যান্স টেস্টিং বিলম্বিত করে। পণ্যটি কোড-সম্পূর্ণ না হলে আপনি কার্যক্ষমতা পরীক্ষা করার জন্য খুব বেশি সময় ব্যয় করতে চান না, কারণ তারপরে আপনাকে পরে আবার এটি করতে হবে।
একই নিরাপত্তা পরীক্ষার জন্য সত্য. আপনি যদি এটি খুব তাড়াতাড়ি পরিচালনা করেন তবে পরীক্ষার পরেও একটি দুর্বলতা প্রবর্তন করা যেতে পারে, তবে একটি পণ্য উৎপাদনে যাওয়ার আগে।
সুতরাং, আমরা জানি যে পর্যবেক্ষণ করা গুরুত্বপূর্ণ, তবে এই সমস্ত উদ্বেগগুলি ন্যায্য বিষয়। পর্যবেক্ষণ প্রক্রিয়ার দেরী পর্যন্ত এটি প্রাপ্য মনোযোগ পায় না। এজন্য AppSignal ম্যাজিক ড্যাশবোর্ড তৈরি করেছে।
অ্যাপসিগন্যালে ম্যাজিক ড্যাশবোর্ড
AppSignal মেট্রিক্স, ড্যাশবোর্ড এবং আপনার অ্যাপের পারফরম্যান্সের গুরুত্ব বোঝে — তবে এটিও যে প্রকৌশলীদের লঞ্চের আগে এগুলি নিয়ে কাজ করার জন্য ন্যূনতম সময় থাকে৷
আমাদের ম্যাজিক ড্যাশবোর্ডগুলিকে "ম্যাজিক" বলা হয় কারণ মেট্রিক্স সংগ্রহ এবং সংশ্লিষ্ট ড্যাশবোর্ডগুলি আপনার জন্য স্বয়ংক্রিয়ভাবে তৈরি হয়, যখন আপনি আপনার অ্যাপ এবং ইন্টিগ্রেটেড উপাদানগুলিকে সংযুক্ত করেন৷
ম্যাজিক ড্যাশবোর্ড:রেল অ্যাপে একটি উদাহরণ রুবি
আসুন জেনে নেওয়া যাক কিভাবে আমরা ম্যাজিক ড্যাশবোর্ড ব্যবহার করে রুবি অন রেল অ্যাপের মধ্যে পারফরম্যান্স সংক্রান্ত সমস্যাগুলি নিরীক্ষণ ও সমাধান করতে পারি।
আমাদের অ্যাপ্লিকেশন ক্রিপ্টোকারেন্সি মূল্য পূর্বাভাসের জন্য একটি সাধারণ মেশিন লার্নিং (ML) মডেল ব্যবহার করে। একটি অ্যাসিঙ্ক্রোনাস কাজ সর্বশেষ মূল্য ডেটা সহ মডেলটিকে প্রতিদিন আপডেট করে এবং সময়ের সাথে সাথে সঠিকতা উন্নত করে। এই রেল অ্যাপটিতে ওয়েব পৃষ্ঠা এবং একটি REST API উভয়ই রয়েছে, যেমনটি নীচের আর্কিটেকচার ডায়াগ্রামে দেখানো হয়েছে৷

আমরা আমাদের Rails অ্যাপ স্থাপন করার পর, Rails Puma ওয়েব সার্ভার এবং Sidekiq অ্যাসিঙ্ক্রোনাস কাজের জন্য ম্যাজিক ড্যাশবোর্ডগুলি স্বয়ংক্রিয়ভাবে তৈরি হয়। ম্যাজিক ড্যাশবোর্ডের জন্য অন্যান্য সমর্থিত ইন্টিগ্রেশনের মধ্যে রয়েছে MongoDB এবং Erlang VM।
আপনি থ্রেড, পুল ক্ষমতা এবং puma কর্মীদের উপর ভিত্তি করে কর্মক্ষমতা মূল্যায়ন করতে Puma ম্যাজিক ড্যাশবোর্ড ব্যবহার করতে পারেন। Sidekiq ম্যাজিক ড্যাশবোর্ড সারির দৈর্ঘ্য, কিউ লেটেন্সি, কাজের সময়কাল, কাজের স্থিতি এবং মেমরি ব্যবহার নিরীক্ষণ করে।
ম্যাজিক ড্যাশবোর্ড শনাক্ত করা হয় এবং ইভেন্ট-ভিত্তিক মেট্রিক্স যেমন একটি Sidekiq জব রান, সেইসাথে নিখুঁতভাবে অনুসন্ধানের উপর ভিত্তি করে তৈরি করা হয়। মিনিটলি প্রোব বৈশিষ্ট্যটি আপনাকে AppSignal-এ কাস্টম মেট্রিক্স পাঠাতে রুবি ব্লক বা ক্লাস নিবন্ধন করতে দেয়। ম্যাজিক ড্যাশবোর্ডগুলি সমর্থিত উপাদানগুলির জন্য বাক্সের বাইরের ইন্টিগ্রেশন প্রদান করে, তবে আপনি AppSignal-এ আপনার কাস্টম মেট্রিক্স পাঠাতে এই পদ্ধতিটি ব্যবহার করতে পারেন৷
কাস্টম মিনিটলি প্রোবের একটি উদাহরণ
Sidekiq ইন্টিগ্রেশন ইতিমধ্যেই তৈরি করা হয়েছে, কিন্তু কল্পনা করুন যে আপনি একটি মালিকানাধীন ব্যাকগ্রাউন্ড জব মেকানিজম নিরীক্ষণ করতে চান। আপনি নিম্নলিখিত ক্লাস উদাহরণ ব্যবহার করতে পারেন. প্রোব ক্লাস একটি সংযোগ পায় যা প্রতিটি কলে পছন্দসই মেট্রিক্স পেতে ব্যবহৃত হয়৷
Appsignal::Minutely.probes.register এ কল দুটি পরামিতি লাগে — প্রোব এবং এর বাস্তবায়নের একটি নাম, যা হয় একটি ল্যাম্বডা বা একটি ক্লাস হতে পারে যা কল পদ্ধতি প্রয়োগ করে৷
অ্যাপসিগন্যালের জন্য কনফিগারেশন এবং সিস্টেমের প্রয়োজনীয়তা
ম্যাজিক ড্যাশবোর্ড পেতে আপনার রেল অ্যাপ্লিকেশনের সাথে শুধু AppSignal ব্যবহার করুন। আপনি যদি ইতিমধ্যে অ্যাপসিগন্যাল ইনস্টল না করে থাকেন, তাহলে আপনার জেমফাইলে অ্যাপসিগন্যাল রত্নটি অন্তর্ভুক্ত করুন এবং একটি বান্ডেল ইনস্টল চালান।
তারপর appsignal install চালান আপনার পরিবেশ কনফিগার করার জন্য কমান্ড। এই কনফিগারেশনটি একটি কনফিগারেশন ফাইল বা এনভায়রনমেন্ট ভেরিয়েবলে সংরক্ষণ করা যেতে পারে এবং আপনার অ্যাপ্লিকেশনটিকে আপনার AppSignal অ্যাকাউন্ট এবং ড্যাশবোর্ডের সাথে সংযুক্ত করে।
আপনি আপনার সার্ভার ইন্সটল ও রান করার পর, আপনি নিচের মত কিছু ইমেল দেখতে পাবেন।

এই উদাহরণের জন্য সিস্টেমের প্রয়োজনীয়তা হল:
- অ্যাপসিগন্যাল জেম 2.9.0 বা উচ্চতর, যার মধ্যে রয়েছে মিনিটলি প্রোবের জন্য সমর্থন।
- পুমা ইন্টিগ্রেশন - এর জন্য 3.11.4 বা উচ্চতর সংস্করণ প্রয়োজন৷
- Sidekiq ইন্টিগ্রেশন - Redis gem 3.3.5 বা উচ্চতর প্রয়োজন৷ এই ইন্টিগ্রেশনের জন্য, AppSignal রত্ন 2.9.5 বা উচ্চতর বাঞ্ছনীয়৷
পারফরম্যান্স টেস্টিং আমাদের মূল্য পূর্বাভাস API
উপরের উদাহরণ অ্যাপ্লিকেশনটি পরের দিনের বিটকয়েনের দামের পূর্বাভাস দিতে রুবি FANN রত্ন ব্যবহার করে বাস্তবায়িত একটি সাধারণ নিউরাল নেটওয়ার্ক ব্যবহার করে। গত দশ দিন থেকে শতকরা মূল্যের পরিবর্তনগুলি মডেলের ইনপুট হিসাবে ব্যবহৃত হয়।
REST API কোনো প্যারামিটার নেয় না, কারণ এটি বর্তমানে শুধুমাত্র আগামীকালের জন্য মূল্যের পূর্বাভাস দেয়। আউটপুট হল একটি সাধারণ JSON নথি, যা নীচে দেখানো হয়েছে৷
৷একটি Sidekiq কাজ প্রতিদিনের শুরুতে বাজার মূল্য পায় এবং ML মডেল আপডেট করে। এই কাজটি প্রতি পাঁচ মিনিটে চালানোর জন্য নির্ধারিত হয়েছে, এটি যেকোনো বিভ্রাট বা ত্রুটি দ্রুত ধরতে সক্ষম করে।
আপনি গিটহাবের এই নিবন্ধ থেকে সমস্ত কোড খুঁজে পেতে পারেন। অনুগ্রহ করে মনে রাখবেন যে এই নিবন্ধ বা সফ্টওয়্যার কিছুই বিনিয়োগ পরামর্শ গঠন করে না. ক্রিপ্টোকারেন্সি সংক্রান্ত কোনো বিনিয়োগ সিদ্ধান্ত নেওয়ার আগে একজন আর্থিক উপদেষ্টার সাথে পরামর্শ করুন।
আমরা কর্মক্ষমতা পরীক্ষার জন্য REST API-এ লোড অনুকরণ করতে JMeter ব্যবহার করব। এটি আমাদের ম্যাজিক ড্যাশবোর্ড ব্যবহার করে ট্র্যাফিক তৈরি করতে এবং কর্মক্ষমতা মূল্যায়ন করতে দেয়। আমাদের প্রথম পরীক্ষা 5টি সমবর্তী ক্লায়েন্ট ব্যবহার করে, প্রতিটি 100টি অনুরোধ করে৷
পরিসংখ্যানগুলি প্রতিক্রিয়া সময়ের মধ্যে একটি মোটামুটি উচ্চ পরিসর দেখায়, গড়ে 342ms, কিন্তু P99 হল 852ms। মনে হচ্ছে আমরা আরও ভালো করতে পারি।

পুমা ম্যাজিক ড্যাশবোর্ডের সাথে রেল অ্যাপের পারফরম্যান্স উন্নত করা
আমাদের Puma ম্যাজিক ড্যাশবোর্ডে থ্রেড পুল ক্ষমতার একটি গ্রাফ অন্তর্ভুক্ত রয়েছে এবং আমরা দেখতে পাচ্ছি যে এটি আমাদের পরীক্ষা চালানোর সময় শূন্য স্পর্শ করে। এটি ব্যাখ্যা করবে কেন কিছু অনুরোধ অন্যদের চেয়ে বেশি সময় নেয়, তাই আমরা puma থ্রেডের সংখ্যা 10-এ উন্নীত করব।
মনে রাখবেন, আমরা ড্যাশবোর্ড বা এই গ্রাফ তৈরি করার জন্য কিছুই করিনি। AppSignal আমাদের জন্য স্বয়ংক্রিয়ভাবে এটি তৈরি করেছে৷

বর্ধিত puma থ্রেড গণনা সহ পরীক্ষা চালানোর পরে, প্রতিক্রিয়ার সময়গুলি অনেক বেশি সামঞ্জস্যপূর্ণ, এবং ড্যাশবোর্ড নিশ্চিত করে যে পুল ক্ষমতা গ্রহণযোগ্য স্তরের মধ্যে থাকে।

এখন ডায়াল চালু করার সময়। 5 সেকেন্ডের র্যাম্প-আপ টাইম সহ JMeter সমবর্তী ক্লায়েন্টদের সংখ্যা 50-এ উন্নীত হয়েছে। এই পরীক্ষাটি একটি দুর্বল প্রতিক্রিয়া সময় এবং বেশ কয়েকটি API ত্রুটি দেখায়। পুমা ম্যাজিক ড্যাশবোর্ড আবার দেখায় যে উপলব্ধ পুমা থ্রেডগুলি শূন্যে পৌঁছেছে৷
API কোডের দিকে তাকিয়ে, আমরা দেখতে পাই যে মডেলটি প্রতিবার ডাটাবেস থেকে লোড হচ্ছে। এটি খুব কার্যকর নয়, তাই আমরা শুধুমাত্র নতুন দৈনিক মূল্য ধরতে নয়, ML মডেলটি চালাতে এবং ডেটাবেসে ভবিষ্যদ্বাণী সংরক্ষণ করতে Sidekiq কাজ পরিবর্তন করি৷
আমরা এই পরিবর্তনটি স্থাপন করি৷
৷Sidekiq এর ম্যাজিক ড্যাশবোর্ডের সাথে আরও ভাল API পারফরম্যান্স
এখন আমাদের Sidekiq ম্যাজিক ড্যাশবোর্ড চেক করা যাক। দুর্ভাগ্যবশত, কোডে একটি বাগ আছে, কিন্তু অন্তত আমরা তা দ্রুত শনাক্ত করে ঠিক করতে পারি।

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

আমাদের API কর্মক্ষমতা এখন খুব ভাল. গড় প্রতিক্রিয়া সময় 419ms, এবং কোন API ত্রুটি নেই।

ম্যাজিক ড্যাশবোর্ড নিশ্চিত করে যে এখনও থ্রেড ক্ষমতা উপলব্ধ রয়েছে।

AppSignal-এর ম্যাজিক ড্যাশবোর্ডগুলি আমাদের Puma ওয়েব সার্ভারের ক্ষমতা সম্পর্কে তাত্ক্ষণিক অন্তর্দৃষ্টি দেয়৷ Sidekiq এবং সক্রিয় কর্মী ড্যাশবোর্ডগুলি আমাদের অ্যাপ্লিকেশনের অ্যাসিঙ্ক্রোনাস কাজের অনুরূপ অন্তর্দৃষ্টি প্রদান করে৷
যাদু ড্যাশবোর্ড থেকে আমরা যা শিখেছি
আমাদের Rails অ্যাপ্লিকেশন কর্মক্ষমতা পরীক্ষার সময়, Puma ম্যাজিক ড্যাশবোর্ড আমাদের সহজেই সনাক্ত করতে সাহায্য করেছে যে থ্রেডের সংখ্যা আমাদের কাঙ্ক্ষিত থ্রুপুট স্তরের জন্য অপর্যাপ্ত ছিল। এটি থ্রেড পুলের ক্ষমতা, সময়ের সাথে কর্মীদের সংখ্যা এবং থ্রেডের মোট সংখ্যা দেখায়৷
যদিও Sidekiq কাজের কোনো পারফরম্যান্স সমস্যা ছিল না, ম্যাজিক ড্যাশবোর্ড আমাদের দ্রুত সনাক্ত করতে সাহায্য করেছে যে স্থাপনার পরে একটি ত্রুটি ছিল, যা আমরা দ্রুত ঠিক করতে এবং পুনরায় স্থাপন করতে সক্ষম হয়েছি। এই সমস্ত মনিটরিং ক্ষমতা অ্যাপসিগন্যাল দ্বারা স্বয়ংক্রিয়ভাবে আমাদের জন্য সেট আপ করা হয়েছে৷
৷রুবি এবং রেল অ্যাপগুলির জন্য অ্যাপসিগন্যালের ড্যাশবোর্ড বৈশিষ্ট্যগুলি
AppSignal-এর ড্যাশবোর্ডগুলিতে "ওয়েব" অ্যাপ্লিকেশন বা "ব্যাকগ্রাউন্ড" কাজগুলির মতো নেমস্পেস রয়েছে, যাতে আপনি আপনার অ্যাপ্লিকেশনের অসংখ্য মনিটরিং ভিউ তৈরি করতে পারেন৷ অন্তর্নির্মিত সারাংশ ড্যাশবোর্ড থ্রুপুট, প্রতিক্রিয়া সময় এবং সর্বশেষ ত্রুটি সহ আপনার অ্যাপ্লিকেশনের স্বাস্থ্যের একটি ওভারভিউ দেখায়৷
মনে রাখবেন, যে কোনো ড্যাশবোর্ডের মতো, আপনি কী গ্রাফ এবং মেট্রিক্স দেখানো হয়েছে তা সম্পাদনা করতে পারেন, সেইসাথে নির্বাচিত গ্রাফের বিন্যাস এবং কনফিগারেশন পরিবর্তন করতে পারেন।
অসঙ্গতি সনাক্তকরণ একটি শক্তিশালী বৈশিষ্ট্য। এটি আপনাকে থ্রেশহোল্ডগুলি সংজ্ঞায়িত করতে দেয় যা একটি মেট্রিক মান একটি নির্দিষ্ট মানের উপরে বা নীচে চলে গেলে বিজ্ঞপ্তি পাঠায়, যেমন ফ্রি মেমরি বা ত্রুটির হার৷
র্যাপিং আপ:AppSignal এর মাধ্যমে আজই আপনার রুবি অ্যাপ মনিটর করুন
আমাদের অ্যাপ্লিকেশনের সাফল্যের জন্য পর্যবেক্ষণযোগ্যতা এবং কর্মক্ষমতা গুরুত্বপূর্ণ। যাইহোক, আমরা প্রায়শই এই বিষয়গুলি মোকাবেলা করার জন্য শেষ মুহূর্ত পর্যন্ত অপেক্ষা করি৷
AppSignal-এর ম্যাজিক ড্যাশবোর্ডগুলি বিস্তৃত আউট-অফ-দ্য-বক্স মেট্রিক্স, ড্যাশবোর্ড এবং অন্তর্দৃষ্টি প্রদান করে যা স্বয়ংক্রিয়ভাবে সেট আপ হয়। এটি আপনাকে আপনার অ্যাপ্লিকেশানের কার্যকারিতাকে দ্রুত সুরক্ষিত করতে এবং কর্মক্ষম প্রস্তুতির অবস্থায় পৌঁছাতে দেয়৷
রুবির জন্য AppSignal সম্পর্কে আরও পড়ুন।
পরের বার পর্যন্ত, খুশি কোডিং!