paint-brush
ডেটাডগের সাথে মনোলিথ পর্যবেক্ষণ: কীভাবে বাইস্ট্যান্ডার প্রভাব এড়ানো যায়দ্বারা@feddena
386 পড়া
386 পড়া

ডেটাডগের সাথে মনোলিথ পর্যবেক্ষণ: কীভাবে বাইস্ট্যান্ডার প্রভাব এড়ানো যায়

দ্বারা Fedor Denisov7m2024/07/08
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

বড় একচেটিয়া অ্যাপ্লিকেশনে, ত্রুটি ট্র্যাকিং এবং পর্যবেক্ষণ প্রায়ই স্পষ্ট মালিকানার অভাবের কারণে অকার্যকর হয়ে পড়ে। এই নির্দেশিকাটি মনোলিথ-ডোমেন-স্প্লিটার লাইব্রেরিতে প্রবর্তিত ডোমেন টীকাগুলির মাধ্যমে জবাবদিহিতা নির্ধারণের জন্য একটি কাঠামোগত পদ্ধতির প্রস্তাব করে সমস্যাটির সমাধান করে
featured image - ডেটাডগের সাথে মনোলিথ পর্যবেক্ষণ: কীভাবে বাইস্ট্যান্ডার প্রভাব এড়ানো যায়
Fedor Denisov HackerNoon profile picture
0-item

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


একাধিক দল নিয়ে বৃহৎ মনোলিথিকের জন্য কার্যকর মনিটরিং সেট আপ করা চ্যালেঞ্জিং হতে পারে। স্পষ্ট মালিকানা ছাড়া, ত্রুটি ট্র্যাকিং সাধারণ হয়ে ওঠে এবং প্রায়শই উপেক্ষা করা হয়। একটি সমাধান হ'ল অন-কল ইঞ্জিনিয়ারদের সনাক্ত করা যে কোন দলটি পর্যবেক্ষণ অ্যালার্মগুলিতে প্রতিক্রিয়া জানাবে। যাইহোক, একটি আরও দক্ষ পদ্ধতি হল প্রতিটি লগ এবং ডেটাডগ স্প্যানে ডোমেন এবং দলের তথ্য অন্তর্ভুক্ত করা।


ডোমেন টীকা বোঝা

আমাদের অ্যাপ্লিকেশনের বিভিন্ন অংশের জন্য কোন দল দায়ী তা ট্র্যাক রাখতে, আমরা ডোমেন অ্যানোটেশন নামে একটি সিস্টেম ব্যবহার করি। ডোমেন টীকাগুলি আপনার অ্যাপ্লিকেশনের কোডের প্রতিটি অংশকে লেবেল করে, স্পষ্টভাবে নির্দেশ করে যে কে কিসের জন্য দায়ী৷ এটি দায়িত্ব পরিচালনায় সুস্পষ্ট সংগঠন এবং জবাবদিহিতা প্রদান করে।

ডোমেন টীকা ব্যবহার করার সুবিধা

ডোমেন টীকাগুলি একটি মনোলিথিক অ্যাপ্লিকেশনের মধ্যে দলের দায়িত্বগুলি ট্র্যাক করার জন্য একটি পরিষ্কার এবং সংগঠিত পদ্ধতি প্রদান করে। ডোমেন টীকা দিয়ে আপনার কোডের অংশ ট্যাগ করে, আপনি করতে পারেন:

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

ডোমেন টীকা প্রক্রিয়াকরণ

দক্ষ মনিটরিং এবং ট্রেসেবিলিটি নিশ্চিত করতে, প্রতিটি ওয়েব অনুরোধ যথাযথ ডোমেন তথ্যের সাথে ট্যাগ করা হয়। এটি বেশ কয়েকটি উপাদানের সহযোগিতার মাধ্যমে অর্জন করা হয়েছে: DomainProvider , DomainSpanService , DomainMdcProvider , এবং DomainHandlerInterceptor

নিম্নলিখিত ডায়াগ্রামে চিত্রিত প্রক্রিয়াটির একটি উচ্চ-স্তরের ওভারভিউ এখানে রয়েছে:

ডোমেন টীকা প্রক্রিয়াকরণের চিত্র

মূল উপাদানের ব্যাখ্যা

  • DomainProvider : নির্দিষ্ট হ্যান্ডলার পদ্ধতি বা মটরশুটি সঙ্গে যুক্ত ডোমেন সনাক্ত করে। এটি AOP (আসপেক্ট-ওরিয়েন্টেড প্রোগ্রামিং) এবং MVC (মডেল-ভিউ-কন্ট্রোলার) কলগুলিতে ডোমেন টীকা খুঁজে পেতে সহায়তা করে।
  • DomainSpanService : স্প্যানগুলিতে ডোমেন ট্যাগ যুক্ত করে, যা ট্রেসিং সিস্টেমে কাজের একক। এই পরিষেবাটি নিশ্চিত করে যে প্রতিটি স্প্যান উপযুক্ত ডোমেন তথ্যের সাথে ট্যাগ করা হয়েছে।
  • DomainMdcProvider : MDC (ম্যাপড ডায়াগনস্টিক কনটেক্সট) এর মধ্যে ডোমেন ট্যাগগুলি পরিচালনা করে, লগিং ফ্রেমওয়ার্কের একটি বৈশিষ্ট্য যা প্রাসঙ্গিক তথ্য সহ লগ এন্ট্রি ট্যাগ করার অনুমতি দেয়।
  • DomainHandlerInterceptor : ওয়েব অনুরোধগুলিকে আটকায়, নিশ্চিত করে যে প্রতিটি অনুরোধ আরও ভাল পর্যবেক্ষণ এবং সন্ধানযোগ্যতার জন্য উপযুক্ত ডোমেন তথ্যের সাথে ট্যাগ করা হয়েছে।

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

কে কি কোডের মালিক তা বাছাই করা

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


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

টীকা মামলা দ্বারা সমর্থিত নয় অতিক্রম

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

চাকরি এবং প্রক্রিয়াগুলির জন্য যেগুলি সরাসরি টীকা করা যায় না, আমরা চাকরি বাস্তবায়নে সরাসরি DomainTagsService ব্যবহার করেছি। এই পদ্ধতিটি আমাদের কাজের নির্বাহের যুক্তির মধ্যে ম্যানুয়ালি ডোমেন ট্যাগ যুক্ত করার অনুমতি দিয়েছে।

আমরা কিভাবে একটি কোয়ার্টজ কাজের মধ্যে DomainTagsService সংহত করেছি তার একটি উদাহরণ এখানে দেওয়া হল:

 final override fun execute(context: JobExecutionContext) { domainTagsService.invoke(domain) { withLoggedExecutionDetails(context, ::doExecute) } }

কৃত্রিম পরিষেবাগুলির সাথে পর্যবেক্ষণ এবং দৃশ্যমানতা উন্নত করুন৷

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

কৃত্রিম পরিষেবার পরিচিতি

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


স্ক্রিনশটের পরিবর্তে ডায়াগ্রাম ব্যবহার করুন?? এখানে কর্মী/ওয়েবঅ্যাপ থাকার কোন মানে নেই

Datadog APM-এ কৃত্রিম পরিষেবা যা আসলে একটি অ্যাপ

লগের জন্য কৃত্রিম পরিষেবা ব্যবহার করবেন না কেন?

লগের জন্য কৃত্রিম পরিষেবার নাম ব্যবহার করা বিভ্রান্তি তৈরি করতে পারে কারণ একই লগ এন্ট্রি বিভিন্ন পরিষেবার অধীনে প্রদর্শিত হতে পারে।


উদাহরণস্বরূপ, একই প্রমাণীকরণ পরিষেবা ব্যবহার করে দুটি শেষ পয়েন্ট বিবেচনা করুন। যদি এই শেষ পয়েন্টগুলি বিভিন্ন ডোমেনের সাথে টীকা করা হয়, তাহলে প্রমাণীকরণ যুক্তি বিভিন্ন কৃত্রিম পরিষেবার অধীনে লগ তৈরি করবে। লগগুলি অন্বেষণ করার সময় এটি বিভ্রান্তির কারণ হতে পারে, কারণ সেগুলি একাধিক পরিষেবার নামে প্রদর্শিত হয়৷ এই সমস্যাটি এড়াতে, কৃত্রিম পরিষেবার নামগুলি শুধুমাত্র স্প্যানগুলিতে প্রয়োগ করা ভাল যা ট্রেসগুলিতে একত্রিত হয় যাতে কম বিভ্রান্তি হয়


এটা কোন অর্থে তোলে? আমি এটা মনে করি না


এখানে এই সমস্যার একটি চাক্ষুষ উপস্থাপনা:

লগের জন্য কৃত্রিম পরিষেবা ব্যবহার না করার পিছনে যুক্তি

মনিটরিং এবং ডাসবোর্ডে কৃত্রিম পরিষেবা ব্যবহার করা

কৃত্রিম পরিষেবাগুলি ব্যবহার করা আপনাকে শুধুমাত্র APM ট্রেসগুলির সাথে কাজ করতে সক্ষম করে না, তবে ডেটাডগ মেট্রিক্সে পরিষেবা দ্বারা ফিল্টার করতে সক্ষম করে, যা একটি বর্ধিত সময়ের জন্য সংরক্ষণ করা হয়, দীর্ঘ সময়ের জন্য পরিবর্তনগুলি ট্র্যাক করার অনুমতি দেয়৷

মনিটরের উদাহরণ

নীচে Datadog-এ একটি মনিটরের একটি স্ক্রিনশট রয়েছে যা ক্যোয়ারীতে কৃত্রিম পরিষেবার নাম konsus-assets ব্যবহার করে:

মনিটর যা ক্যোয়ারীতে কৃত্রিম পরিষেবা 'কনসাস-সম্পদ' ব্যবহার করে

ড্যাশবোর্ডের উদাহরণ

নীচে Datadog-এ একটি ড্যাশবোর্ডের একটি স্ক্রিনশট রয়েছে যা ফিল্টারে কৃত্রিম পরিষেবার নাম konsus-assets ব্যবহার করে:

ড্যাশবোর্ড যা ফিল্টারে জাল পরিষেবা 'কনসাস-অ্যাসেট' ব্যবহার করে

আপনার মনিটরিং কৌশলে জাল পরিষেবাগুলি ব্যবহার করে, আপনি একটি একচেটিয়া অ্যাপ্লিকেশনের মধ্যে প্রতিটি দলের কার্যকলাপের দৃশ্যমানতা এবং জবাবদিহিতা বাড়াতে পারেন। এই পদ্ধতিটি দল-নির্দিষ্ট মনিটর এবং ড্যাশবোর্ড তৈরি এবং রক্ষণাবেক্ষণের প্রক্রিয়াকে সহজ করে, যা Datadog-এ আরও কার্যকর এবং সংগঠিত পর্যবেক্ষণের দিকে পরিচালিত করে।


মোড়ক উম্মচন

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

কী Takeaways

  1. বর্ধিত মালিকানা এবং জবাবদিহিতা : ডোমেন টীকা সহ আপনার কোডের অংশগুলি টীকা করে, আপনি স্পষ্টভাবে নির্ধারণ করতে পারেন যে প্রতিটি ডোমেনের জন্য কোন দল দায়ী। এটি আরও ভাল সংগঠন এবং লক্ষ্যযুক্ত পর্যবেক্ষণের সুবিধা দেয়।
  2. উন্নত লগ এবং ট্রেস ম্যানেজমেন্ট : ডোমেন টীকাগুলি আপনাকে নির্দিষ্ট মানদণ্ডের উপর ভিত্তি করে লগ এবং ট্রেস উভয় ফিল্টার করার অনুমতি দেয়, যেমন দলের দায়িত্ব, দ্রুত সনাক্তকরণ এবং সমস্যার সমাধান সক্ষম করে।
  3. কৃত্রিম পরিষেবাগুলির সাথে নমনীয়তা : স্প্যানগুলির জন্য কৃত্রিম পরিষেবার নাম ব্যবহার করা (লগগুলি নয়) নিশ্চিত করে যে লগগুলি স্পষ্ট এবং তাদের আসল উত্সের সন্ধানযোগ্য, বিভ্রান্তি এড়িয়ে যায়৷
  4. ইন্টিগ্রেশন চ্যালেঞ্জগুলি কাটিয়ে ওঠার ক্ষেত্রে : যে ক্ষেত্রে টীকাগুলি সরাসরি প্রয়োগ করা যায় না, যেমন কোয়ার্টজ-এর মতো নির্দিষ্ট কাজের এক্সিকিউশন ফ্রেমওয়ার্কের সাথে, চাকরি বাস্তবায়নে সরাসরি DomainTagsService এর মতো পরিষেবাগুলি ব্যবহার করা নিশ্চিত করে যে ডোমেন-নির্দিষ্ট পর্যবেক্ষণ এখনও বজায় রাখা যেতে পারে।

ডোমেন টীকা ব্যবহার করার জন্য ধাপে ধাপে পদ্ধতি:

  1. ডোমেইন এবং দল সংজ্ঞায়িত করুন

    যে lib সঙ্গে পরিবর্তন হবে!!!

    আপনার অ্যাপ্লিকেশনে বিভিন্ন ডোমেন এবং টিমের প্রতিনিধিত্ব করে enums তৈরি করুন:

    • @Domain হল একটি টীকা যা ক্লাস বা ফাংশনে প্রয়োগ করা যেতে পারে, একটি নির্দিষ্ট ডোমেন মান দিয়ে চিহ্নিত করে।
    • DomainValue হল একটি enum যা বিভিন্ন ডোমেনের প্রতিনিধিত্ব করে, প্রতিটি একটি দলের সাথে যুক্ত।
    • Team হল একটি এনাম যেটি বিভিন্ন টিমের প্রতিনিধিত্ব করে অ্যাপ্লিকেশনটিতে কাজ করে।
     @Retention(AnnotationRetention.RUNTIME) @Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) annotation class Domain(val value: DomainValue) enum class DomainValue(val team: Team) { USER_MANAGEMENT(Team.TEAM_A), PAYMENT_PROCESSING(Team.TEAM_B), NOTIFICATIONS(Team.TEAM_C) } enum class Team { TEAM_A, TEAM_B, TEAM_C }
  2. ক্লাস টীকা (এবং পদ্ধতি প্রয়োজন হলে)

     @Domain(DomainValue.USER_MANAGEMENT) class UserService { @Domain(DomainValue.PAYMENT_PROCESSING) fun processPayment() { ... } }
  3. অসমর্থিত কেস পরিচালনা করুন

    যে ক্ষেত্রে সরাসরি টীকা করা যায় না, যুক্তি মোড়ানোর জন্য সরাসরি DomainTagsService ব্যবহার করুন

     fun executeNotSupportedByAnnotationsLogic() { domainTagsService.invoke(domain) { executeLogic() } }
  4. ডাটাডগ দিয়ে মনিটর করুন

    মনিটর, ড্যাশবোর্ড এবং APM ট্রেস ফিল্টারিংয়ের জন্য কৃত্রিম পরিষেবা ফিল্টার ব্যবহার করুন


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


পোস্ট পড়ার জন্য ধন্যবাদ!