এই নির্দেশিকায়, আমরা পারফরম্যান্সের বাধাগুলি সনাক্ত করতে, নির্ণয় করতে এবং অপসারণ করতে AppSignal ব্যবহার করব এবং একটি Ruby on Rails অ্যাপ্লিকেশনে সঠিক ট্রেসিং নিযুক্ত করব৷ ট্রেসিং সেট আপ থেকে ক্যাপচারিং ত্রুটি এবং লগিং পর্যন্ত, আমরা আপনাকে কভার করেছি৷
আমরা নিশ্চিত করব যে আমাদের অ্যাপ্লিকেশন আগের চেয়ে মসৃণভাবে চলছে, এমনকি সবচেয়ে বেশি লোডের মধ্যেও!
তবে প্রথমে, আসুন দ্রুত কীভাবে ট্রেসিং এবং এর সুবিধাগুলিকে সংজ্ঞায়িত করা যায় তা স্পর্শ করি৷
ট্রেসিং কি?
ট্রেসিং হল একটি আবেদনের মাধ্যমে একটি অনুরোধ এবং অপারেশন অনুসরণ করার প্রক্রিয়া। রুবি অ্যাপ্লিকেশনে, ট্রেসিং এক্সিকিউশন ফ্লো ক্যাপচার করে, বিভিন্ন উপাদানের পারফরম্যান্সের গভীর অন্তর্দৃষ্টি প্রদান করে।
ট্রেসিংয়ের সুবিধাগুলি
ট্রেসিংয়ের বেশ কিছু সুবিধা রয়েছে, যার মধ্যে রয়েছে:
- পারফরমেন্স অপ্টিমাইজেশান :ট্রেসিং একটি অ্যাপ্লিকেশানের ধীরগতির অংশগুলিকে চিহ্নিত করে যেগুলির কর্মক্ষমতা উন্নতির প্রয়োজন৷
- ভাল ডিবাগিং :বিস্তারিত ট্রেস আপনাকে কোড সমস্যাগুলি দ্রুত পিন ডাউন করতে এবং তাদের কারণগুলি নির্ধারণ করতে দেয়৷
- উন্নত নির্ভরযোগ্যতা :ট্রেসিং অ্যাপ্লিকেশন আচরণ ট্র্যাক করে, আরো নির্ভরযোগ্য এবং কার্যকর সিস্টেম অপারেশন নিশ্চিত করে।
একটি দৃশ্য:আমাদের ল্যাগিং রেল অ্যাপ
ধরা যাক এটি ব্ল্যাক ফ্রাইডে, বছরের সবচেয়ে বড় কেনাকাটার দিন। আপনার রেল-ভিত্তিক ই-কমার্স প্ল্যাটফর্ম হাজার হাজার আগ্রহী গ্রাহকদের সাথে গুঞ্জন করছে, তাদের কার্টগুলি পণ্যে পরিপূর্ণ, চেক আউট করার জন্য প্রস্তুত। সবকিছু নিখুঁত বলে মনে হচ্ছে — যতক্ষণ না সিস্টেমটি পিছিয়ে পড়া শুরু হয়।
লেনদেন ব্যর্থ হয়। পরিত্যক্ত গাড়ি আকাশচুম্বী। আতঙ্ক দেখা দেয়। এটি প্রতিটি বিকাশকারীর দুঃস্বপ্ন। কিন্তু যদি আপনার কাছে গোপন অস্ত্র থাকত? এমন একটি টুল যা আপনাকে রিয়েল-টাইমে সমস্যা সম্পর্কে সতর্ক করে না বরং আপনার অ্যাপ্লিকেশনের হৃদয়ের গভীরে ডুব দেয়, প্রতিটি অনুরোধ, প্রতিটি ডাটাবেস কোয়েরি এবং প্রতিটি ব্যাকগ্রাউন্ড কাজের সন্ধান করে? AppSignal লিখুন .
অ্যাপসিগন্যাল ব্যবহার করে রুবি অন রেল অ্যাপের জন্য কীভাবে ট্রেসিং সেট আপ করবেন
AppSignal ব্যবহার করে ট্রেসিংয়ের ক্ষমতা প্রদর্শন করতে, আমি একটি নমুনা রেল ই-কমার্স প্রকল্প তৈরি করেছি যা আমরা AppSignal-এর সাথে একীভূত করতে পারি। এটি আপনাকে সরাসরি দেখতে সাহায্য করবে কিভাবে ট্রেসিং এই সমস্যাগুলি সনাক্ত করতে এবং সমাধান করতে পারে৷
পূর্বশর্ত
- রুবি সংস্করণ :AppSignal রুবি 2.5 এবং তার বেশির সাথে সামঞ্জস্যপূর্ণ৷ ৷
- AppSignal অ্যাকাউন্ট :AppSignal-এ একটি অ্যাকাউন্ট তৈরি করুন (এখানে একটি বিনামূল্যে ট্রায়াল উপলব্ধ আছে)
এখন আপনি AppSignal ব্যবহার করে আপনার রুবি অ্যাপ্লিকেশনে ট্রেসিং সেট আপ করতে প্রস্তুত৷
৷ধাপ 1:AppSignal Gem ইনস্টল করুন
এখানে মণি:
শুধু bundle install চালান :
ধাপ 2:অ্যাপসিগন্যাল শুরু করুন
প্রয়োজনীয় কনফিগারেশন ফাইল সেট আপ করতে AppSignal ইনস্টলেশন কমান্ড চালান।
আপনার টার্মিনালে প্রম্পট অনুসরণ করুন। আপনি আপনার অ্যাপে AppSignal কনফিগার করতে একটি কনফিগারেশন ফাইল বা পরিবেশ ভেরিয়েবল বেছে নিতে পারেন। আমরা কনফিগার ফাইল বিকল্পটি নির্বাচন করব।
এই কমান্ডটি একটি appsignal.yml তৈরি করবে আপনার কনফিগারেশন ডিরেক্টরিতে কনফিগারেশন ফাইল। এই ফাইলটি আপনার AppSignal push API কী এবং কিছু মৌলিক কনফিগারেশন সেটিংস দিয়ে আগে থেকে পূর্ণ হবে।
ধাপ 3:AppSignal কনফিগার করুন
config/appsignal.yml নিশ্চিত করুন আপনার পরিবেশের জন্য সঠিকভাবে কনফিগার করা হয়েছে। এই ফাইলটিতে বিভিন্ন পরিবেশের জন্য কনফিগারেশন সেটিংস রয়েছে (উন্নয়ন, পরীক্ষা, উৎপাদন)। সামান্য মূল্য প্রদান করে এমন কর্ম উপেক্ষা করুন।
আর তা দা! আপনি সব সেট আপ করেছেন:

ইন্সট্রুমেন্টিং আমাদের রুবি অন রেল অ্যাপ্লিকেশন
AppSignal স্বয়ংক্রিয়ভাবে আমাদের রেল অ্যাপ্লিকেশনের বিভিন্ন মূল উপাদান যেমন ডাটাবেস ক্যোয়ারী এবং ওয়েব অনুরোধের উপকরণ তৈরি করতে পারে। আমরা আমাদের অ্যাপ্লিকেশনের নির্দিষ্ট অংশগুলি ট্রেস করতে কাস্টম ইন্সট্রুমেন্টেশনও যোগ করতে পারি।
কাস্টম রেল ইন্সট্রুমেন্টেশন
আমাদের কোডের নির্দিষ্ট অংশগুলিকে ইন্সট্রুমেন্ট করার জন্য, আমরা কোডের কয়েকটি লাইন Appsignal.instrument দিয়ে মোড়ানো করব পদ্ধতি এই পদ্ধতিটি কোডের নির্দিষ্ট ব্লক ট্রেস করতে ব্যবহার করা যেতে পারে, যেমন কন্ট্রোলার অ্যাকশনের আরও জটিল অংশ বা ব্যাকগ্রাউন্ড জব।
এই এন্ডপয়েন্টে একটি অনুরোধ পাঠানোর ফলে একটি N+1 ক্যোয়ারী রিপোর্ট করা হবে৷
৷একটি N+1 সমস্যা দেখা দেয় যখন আমাদের অ্যাপ্লিকেশন একটি একক, দক্ষ ক্যোয়ারী ব্যবহার করার পরিবর্তে একটি সংগ্রহের প্রতিটি বস্তুর জন্য সংশ্লিষ্ট রেকর্ড লোড করতে একাধিক ডাটাবেস কোয়েরি করে। এটি উল্লেখযোগ্যভাবে কর্মক্ষমতা হ্রাস করতে পারে, বিশেষ করে যখন বড় ডেটাসেট নিয়ে কাজ করা হয়।
এই ক্ষেত্রে সমাধান হল সমস্ত অর্ডার কোয়েরি পেতে আগ্রহী লোড করা — কেবল এই কোডটি প্রতিস্থাপন করুন:
নিম্নলিখিত সহ:
অ্যাপসিগন্যালের মাধ্যমে রুবি ত্রুটিগুলি সংগ্রহ এবং প্রতিবেদন করা
AppSignal আপনাকে Appsignal.set_error ব্যবহার করে অ্যাপ্লিকেশন ত্রুটিগুলি ক্যাপচার এবং রিপোর্ট করতে দেয়৷ পদ্ধতি।
অর্ডার কন্ট্রোলার সূচক অ্যাকশনে একটি ত্রুটি ক্যাপচার এবং রিপোর্ট করার একটি উদাহরণ এখানে দেওয়া হল:
এই উদাহরণে, আমরা একটি নির্দিষ্ট কন্ট্রোলার অ্যাকশনের মধ্যে কাস্টম ত্রুটি হ্যান্ডলিং প্রদর্শন করি। যাইহোক, এটি মনে রাখা গুরুত্বপূর্ণ যে অ্যাপসিগন্যাল ডিফল্টভাবে ত্রুটিগুলি রিপোর্ট করে, তাই Appsignal.set_error এর সাথে স্পষ্ট ত্রুটি রিপোর্ট করা সাধারণত প্রয়োজন হয় না।
সমস্ত কন্ট্রোলার অ্যাকশন জুড়ে সামঞ্জস্যপূর্ণ এবং কেন্দ্রীভূত ত্রুটি পরিচালনার জন্য, আপনাকে rescue_from ব্যবহার করার পরামর্শ দেওয়া হয় নিয়ামক পর্যায়ে। এই পদ্ধতিটি নিশ্চিত করে যে আপনার কন্ট্রোলার অ্যাকশনে যেকোনও পরিচালনা না করা ব্যতিক্রমগুলি সঠিকভাবে রিপোর্ট করা এবং পরিচালিত হয়েছে৷
আপনি কীভাবে এটি বাস্তবায়ন করতে পারেন তার একটি উদাহরণ এখানে দেওয়া হল:
ত্রুটি-এ> ইস্যু তালিকা ট্যাবে, আমরা সমস্ত ত্রুটির তালিকা, প্রতিটি সমস্যার স্থিতি এবং কতদিন আগে ত্রুটিটি ঘটেছে তা দেখতে পারি:

RuntimeError-এ ক্লিক করা হচ্ছে , আমরা ত্রুটির লগ এবং কোড লাইন দেখতে পাচ্ছি যা এই ত্রুটিটিকে ট্রিগার করছে:

চলুন শেষ করার আগে আরও কিছু উন্নত ট্রেসিং কৌশলে স্পর্শ করি।
উন্নত ট্রেসিং কৌশল
আমরা আমাদের ই-কমার্স অ্যাপের অর্ডার এন্ডপয়েন্টে কিছু উন্নত ট্রেসিং কৌশল প্রয়োগ করব।
এই কৌশলগুলি আমাদের উচ্চ-ট্র্যাফিক পরিবেশগুলিকে দক্ষতার সাথে পরিচালনা করতে, ডেটা গোপনীয়তা নিশ্চিত করতে এবং ডেটা ট্রেস করার নিরাপদ অ্যাক্সেস করতে সহায়তা করবে৷
উচ্চ ট্রাফিক ব্যবহারের ক্ষেত্রে
উচ্চ-থ্রুপুট পরিবেশে, প্রতিটি অনুরোধের জন্য ট্রেস ডেটা সংগ্রহ করা উল্লেখযোগ্য ওভারহেড হতে পারে। নমুনা শুধুমাত্র অনুরোধের একটি উপসেটের জন্য ট্রেস ডেটা সংগ্রহ করে এটি কমাতে সাহায্য করে।
লেনদেনে মেটাডেটা যোগ করা
আপনি ট্যাগ এবং নমুনা ডেটা ব্যবহার করে ত্রুটি এবং কর্মক্ষমতা সংক্রান্ত সমস্যার অতিরিক্ত প্রসঙ্গ সরবরাহ করতে পারেন। এটি এমন তথ্য যোগ করতে সাহায্য করতে পারে যা ইতিমধ্যে অনুরোধ, সেশন বা পরিবেশের পরামিতির অংশ নয়। কীভাবে পাস করবেন এবং অতিরিক্ত মেটাডেটা যোগ করবেন সে সম্পর্কে আরও পড়ুন।
অ্যাসিঙ্ক্রোনাস প্রসেসিং
অ্যাসিঙ্ক্রোনাস প্রসেসিং হল একটি সাধারণ কৌশল যা এমন কাজগুলি পরিচালনা করতে ব্যবহৃত হয় যেগুলি অনুরোধ-প্রতিক্রিয়া চক্রের মধ্যে সম্পাদন করা খুব বেশি সময়সাপেক্ষ, যেমন ইমেল পাঠানো, ব্যাকগ্রাউন্ডের কাজগুলি প্রক্রিয়া করা এবং বড় ডেটা আমদানি পরিচালনা করা। রুবি অন রেল অ্যাপ্লিকেশনগুলি সাধারণত এই কাজগুলি পরিচালনা করতে Sidekiq, Resque বা বিলম্বিত চাকরির মতো ব্যাকগ্রাউন্ড জব লাইব্রেরি ব্যবহার করে৷
AppSignal আপনার ব্যাকগ্রাউন্ড কাজের পারফরম্যান্স এবং ত্রুটি সম্পর্কে অন্তর্দৃষ্টি প্রদান করতে সক্রিয় চাকরি, DelayedJob, Shoryuken, Sidekiq এবং Que-এর মতো লাইব্রেরিগুলির সাথে নির্বিঘ্নে সংহত করে৷
নিরাপত্তা বিবেচনা
নিরাপত্তা যে কোনো উৎপাদন-প্রস্তুত অ্যাপ্লিকেশনের একটি অত্যন্ত গুরুত্বপূর্ণ অংশ। ব্যবহারকারীর গোপনীয়তা বজায় রাখার জন্য সংবেদনশীল ডেটা ট্রেস ডেটাতে অন্তর্ভুক্ত করা না হয় তা নিশ্চিত করতে হবে। ফিল্টার প্যারামিটারের মান [FILTERED] দিয়ে প্রতিস্থাপিত হবে যখন অ্যাপসিগন্যালে প্রেরণ করা হয়।
চলুন পরিবর্তন করা যাক config/appsignal.yml একাধিক সংবেদনশীল অনুরোধ প্যারাম অন্তর্ভুক্ত করতে যা মাস্কিং প্রয়োজন।
আপনি যদি রেল filter_parameters ব্যবহার করেন কনফিগারেশন বিকল্প, AppSignal তার কনফিগারেশনকে Rails এর কনফিগারেশনের সাথে একত্রিত করবে, তাই এটিকে দুইবার কনফিগার করার প্রয়োজন নেই।
এই উন্নত ট্রেসিং কৌশলগুলি প্রয়োগ করে, আপনি দক্ষতার সাথে উচ্চ-ট্রাফিক পরিবেশগুলি পরিচালনা করতে পারেন এবং সংবেদনশীল ডেটার গোপনীয়তা নিশ্চিত করতে পারেন৷ ফিল্টার প্যারামিটার সম্পর্কে আরও পড়ুন।
র্যাপিং আপ
আমরা দেখেছি যে AppSignal ব্যবহার করে একটি রুবি অ্যাপের জন্য ট্রেসিং সেট আপ করার জন্য ট্রেসিংয়ের মৌলিক বিষয়গুলি বোঝা, আপনার অ্যাপ্লিকেশন প্রস্তুত করা এবং ধাপে ধাপে সেটআপ প্রক্রিয়া অনুসরণ করা জড়িত৷ তারপরে ট্রেসিং উন্নত করতে উন্নত পদ্ধতি এবং ডিবাগিং কৌশলগুলি ব্যবহার করা যেতে পারে৷
নিয়মিতভাবে উন্নয়ন এবং রক্ষণাবেক্ষণ চক্রে ট্রেসিং প্রয়োগ করা উচ্চতর কর্মক্ষমতা এবং নির্ভরযোগ্যতার দিকে পরিচালিত করে৷ আপনার রুবি অ্যাপ্লিকেশনগুলিতে উন্নত মনিটরিং এবং গভীর কর্মক্ষমতা অন্তর্দৃষ্টির জন্য আজই AppSignal দিয়ে শুরু করুন৷
শুভ কোডিং!
ড্যানিয়েল আমাহ
আমাদের অতিথি লেখক ড্যানিয়েল হলেন একজন প্রিন্সিপাল সফটওয়্যার ইঞ্জিনিয়ার এবং টেকনিক্যাল ফাউন্ডার যার এক দশকেরও বেশি অভিজ্ঞতার সাথে রুবি অন রেল, রিঅ্যাক্ট এবং এআই-চালিত আর্কিটেকচার ব্যবহার করে মাপযোগ্য ওয়েব এবং মোবাইল প্ল্যাটফর্ম তৈরি করার অভিজ্ঞতা রয়েছে। তিনি টাস্কক্ল্যানের স্রষ্টা এবং প্রায়শই ইঞ্জিনিয়ারিং নেতৃত্ব, ডেভেলপার ওয়ার্কফ্লো এবং মিডিয়াম এবং লিঙ্কডইনে স্টার্টআপ এক্সিকিউশন সম্পর্কে লেখেন।
ড্যানিয়েল আমাহের সমস্ত নিবন্ধ