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

এক্সেপশন নয়জ কমানো: প্রোডাকশন লগ পরিষ্কার রাখার প্রমাণিত কৌশল

কোনো অ্যাপ একচুয়ু ইউজারের সাথে প্রথম কন্ট্যাক্টে বাঁচে থাকতে পারে না। একবার লোকেরা ব্যবহার শুরু করলে, তারা এরর 마주 করবে।

তাই, প্রোডাকশনে যাওয়ার পর, অধিকাংশ অ্যাপের এক্সেপশন ট্র্যাক ও রিপোর্ট করার ব্যবস্থা থাকে। আপনি exception_notification দিয়ে সিম্পল রাখতে পারেন বা Honeybadger বা Raygun এর মত ওয়েবঅ্যাপ ব্যবহার করতে পারেন।

তবে শীঘ্রই, আপনি একই কিছু এক্সেপশন বারবার দেখবেন। হয়তো আপনি যে ওয়েব সার্ভিসে ডিপেন্ড করেন সেটি পুরোপুরি স্টেবল নয়। অথবা আপনার সাইট ব্যবহারকারীরা তাদের ইমেইল টাইপো করে দিয়েছে, তাই আপনার কনো মেসেজই পৌঁছাচ্ছে না। এক্সেপশনগুলো এক্সেপশনাল হওয়া উচিত, সেগুলো আনএক্সপেক্টেড হওয়া উচিত। কিন্তু একটি এরর কতটুকু আনএক্সপেক্টেড হতে পারে যদি আপনি সেটি দিনে তρίς বার দেখেন?

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

নেটওয়ার্ক ডাউন!

কম অ্যাপই একা কাজ করে। অধিকাংশ অন্য অ্যাপের সাথে কমিউনিকেট করে। কিন্তু যখন আপনার জিওলোকেশন API ডাউন চলে যায় বা ec2-এ একটি হিকাপ হয়, তখন আপনি হাজার হাজার এক্সেপশন থেকে স্প্যাম হতে চান না যেগুলো আপনি কিছুই করতে পারবেন না।

অনন্যisable সার্ভিসের সাথে ডিল করার সময়, সার্কিট ব্রেকার প্যাটার্ন চেষ্টা করুন, মাইকেল নাইগার্ডের Release It থেকে:

সার্কিট ব্রেকার এর বেসিক আইডিয়া খুব সিম্পল। আপনি একটি প্রোটেক্টেড ফাংশন কলকে একটি সার্কিট ব্রেকার অবজেক্টে র‍্যাপ করুন, যা ফেইলচার মনিটর করে। একবার ফেইলচারগুলো একটি নির্দিষ্ট থ্রেশহোল্ডে পৌঁছালে, সার্কিট ব্রেকার ট্রিপ করে, এবং সার্কিট ব্রেকারের সকল ফर्दার কল প্রোটেক্টেড কল না করে সরাসরি এরর রিটার্ন করে।

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

সার্কিট ব্রেকার প্যাটার্ন ক্যাসকেডিং ফেইলচার প্রতিরোধ করার জন্য ডিজাইন করা হয়েছে, কিন্তু আপনি এক্সেপশন নোটিফিকেশন লিমিট করার জন্যও ব্যবহার করতে পারেন। এই প্যাটার্ন দিয়ে, আপনাকে শুধু তখন নোটিফাই হওয়া প্রয়োজন যখন সেটি ট্রিপ করে এবং রিকভার করতে ব্যর্থ হয়। এটি হাজার হাজার এক্সেপশনকে কয়েকটি করতে পারে। যদি এটিও বেশি লাগে, তবে ব্রেকারকে বলুন কয়েকবার রিট্রাই ফেইল হলে রিপোর্ট করবে। (অথবা একটি আরও নির্ভরযোগ্য সার্ভিস খুঁজুন!)

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

বের হয় gmaaaail.com আপনার মানে সেটি নয়

আমি যে অন্য ধরনের এক্সেপশন খুব দেখি সেটি আসে খারাপ ইউজার ডেটা থেকে।

উদাহরণস্বরূপ, কেউ সাইন আপ করার সময় তাদের ইমেইল টাইপো করে দিয়েছে। তিনি লিখেছেন, "justinweiss@gmaill.com", কিন্তু মানে ছিল "justinweiss@gmail.com"। প্রথমটিও তেমন ভাবতে পারে একটি ভ্যালিড ইমেইল অ্যাড্রেস, কিন্তু আপনি যা ইমেইল পাঠাবেন সেগুলো বাউন্স করবে। এবং আপনার ইমেইল প্রোভাইডার আপনাকে সেগুলো নোটিফাই করবে।

এই নোটিফিকেশনগুলো শুধু নয়জ।

বদলে, টু-সাইডেড অ্যাপ্রোছ নিন। আগে থেকে খারাপ ডেটা প্রতিরোধ করুন, এবং পরে ফেইল হলে ফিচারটি ডিজেবল করে ইউজারকে নোটিফাই করুন।

ইমেইলের জন্য, আমি mailcheck-js জেম ব্যবহার করেছি "gmail.com" এবং "yahoo.com" এর মতো জিনিস স্পেলচেক করার জন্য যখন নতুন ইউজার রেজিস্টার করেন:

{% img img-responsive /images/posts/email-spellcheck.gif 477 451 Ooh, fancy. %}

তারপর, যদি পরে কোনো ইমেইল বাউন্স করে, তবে সেই ইউজারের ইমেইল বন্ধ করে দিন।

একবার কাউকে ফিচারটি বন্ধ করলে, আপনাকে তাকে বলতে হবে যে সেটি ডিজেবল হয়েছে এবং কীভাবে ফিক্স করবে। সাইটের টপে একটি ব্যানার সাধারণত ভালো উত্তর। কিছু নিচের মত: "আমরা আপনার последние কিছু ইমেইল পাঠাতে পারিনি, তাই আমরা আপনার কাছে ইমেইল পাঠানো বন্ধ করেছি। এখানে ক্লিক করুন আপনার ইমেইল অ্যাড্রেস আপডেট করতে, এবং আমরা সেগুলো আবার চালু করব।"

আপনি ভালো ডেটা পাবেন, এবং ইউজারের ইমেইল শূন্যতায় যাবে না। সেগুলোকে উপেক্ষা করার চেয়ে অনেক ভালো।

৪০৪ এবং RoutingErrors

আপনি হয়তো আপনার সাইটে ব্রোকেন লিংক বা অ্যাসেট সম্পর্কে জানতে চান। কিন্তু সেগুলো আপনার এক্সেপশন ট্র্যাকারে থাকা উচিত নয়।

এইগুলো এবং অন্যান্য "হাফ-এক্সপেক্টেড এরর" এর জন্য, সেগুলো ব্যাচ আপ করুন এবং একসাথে হ্যান্ডল করুন। আপনাকে সেগুলো হয়ে যাওয়ার সাথে সাথে নোটিফাই হওয়ার প্রয়োজন নয়। আপনি পুল চান, পাশ নয়।

RoutingErrors এবং ৪০৪-এর মত জিনিসগুলো Google Webmaster Tools দিয়ে হ্যান্ডল করা যায়, যা আপনাকে দেখাবে গুগল যে পেজগুলো জানে সেগুলো ৪০৪ থ্রো করছে। অথবা আপনি প্রি-রিলিজ প্রসেসের অংশ হিসেবে লিংক চেকার চালাতে পারেন আপনার সাইটের লিংকগুলো চেক করতে।

এক্সেপশন একশনেবল হওয়া উচিত

এক্সেপশন ইমেইল পাওয়া稀শ হয়ে উচিত। আপনার এরর ট্র্যাকারে খুব বেশি নয়জ থাকলে আপনি আসল সমস্যাগুলো দেখে এবং ফিক্স করতে পারবেন না।

যদি আপনি আপনার দেখা এক্সেপশনগুলো থেকে আতঙ্কিত হওয়ার চেয়ে বিরক্ত বেশি হন, তবে আপনার একটি নয়জ সমস্যা আছে। এই প্যাটার্নগুলো ব্যবহার করে নয়জ কমানো এবং একই সাথে আপনার ইউজারদের অভিজ্ঞতা উন্নত করুন।

আমি নয়জি এক্সেপশন ক্যাটাগরির কিছুটি আলোচনা করেছি যা আমি সবচেয়ে বেশি দেখেছি। কিন্তু আমি নিশ্চিত নই যে আমি সকলে দেখেছি। আপনার অ্যাপে কোন এক্সেপশনগুলো সবচেয়ে বেশি বিরক্ত করে? সেগুলো এই ক্যাটাগরিগুলোর মধ্যে পড়ে কিনা, অথবা একটি নতুন ক্যাটাগরি ডিফাইন করে? আপনি সেগুলোকে কীভাবে দিনে শতকরা বার বিরক্ত করতে দেন না?

  1. iCloud ফটো সিঙ্ক সমস্যা সমাধানের ৮টি এক্সপার্ট টিপস

  2. ইউটিউব কিডসে আপনার শিশুর নিরাপত্তা: প্রয়োজনীয় টিপস

  3. Samsung Galaxy Buds-এর সর্বোত্তম ফলাফল পান: অপরিহার্য টিপস

  4. আপনার iPhone X মাস্টার করার ৯টি অপরিহার্য টিপস