কীভাবে স্টেট এবং ইভেন্ট সিস্টেমগুলি বাইপাস করবেন (এবং গরিলাকে বীট করুন)

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

আপনার বিস্তৃত ডোমেন ডায়াগ্রাম, আকর্ষণীয় ব্যবহারকারীর গল্প, ইউআই মডেল বা ভাল-ডকুমেন্টেড গ্রহণযোগ্যতার মানদণ্ডটি একবারে না দেখে এটি বিন্দুযুক্ত "প্রসঙ্গ সীমানা" ভেঙে যায় যা এটিকে পিছনে রাখা উচিত।

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

হাই বন্ধুরা! আপনার রিস্টফুল মাইক্রো-পরিষেবা অ্যাপ্লিকেশনটি কীভাবে এই 30 বছরের পুরানো bespoke ERP সিস্টেমের সাথে একীভূত হয়েছে তা দেখার অপেক্ষা করতে পারি না! আশা করি আপনি কোবল পছন্দ করবেন (

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

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

উত্তরাধিকার সিস্টেমের সাথে লেনদেন করা

ইউসিএলএর গবেষণা তথ্য সিস্টেম অফিসে ডেপুটি আর্কিটেকচারাল ডিরেক্টর হিসাবে আমি অনেক সিস্টেম এবং ডেটার ফাঁকগুলি বন্ধ করার জন্য দায়বদ্ধ। ইউসিএলএর গবেষণা থেকে বহু দশকের দীর্ঘকালীন ব্যবসায়িক প্রক্রিয়া এবং সিস্টেমগুলির পাইপলাইন রয়েছে যা নতুন প্রযুক্তিগুলির সাথে এই traditionalতিহ্যগত পদ্ধতির "ব্যাহত" করার যে কোনও প্রয়াসের বিরুদ্ধে চলে।

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

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

আমার অফিসে, আমাদের কাজ হ'ল এই উত্তরাধিকার ব্যবস্থায় ক্রমবর্ধমান গতিতে একীকরণ নিশ্চিত করা। আমরা ছোট ব্যবসায়িক প্রক্রিয়াগুলি পরিচালনা করতে আমাদের বিসপোক লেনদেন সিস্টেমগুলিও প্রসারিত করছি।

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

সংহতকরণের কাছে পৌঁছেছে

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

একটি কার্যকর টেনেট যা প্রয়োগকারীরা প্রায়শই অবহেলা করে তা হ'ল ইভেন্ট সোর্সিং সর্বত্র প্রয়োগ করা উচিত নয়। এটি গ্রেগ ইয়াং অনুসারে, যিনি “ইভেন্ট সোর্সিং” সফ্টওয়্যার আর্কিটেকচার প্যাটার্নটি প্রবর্তনের জন্য ব্যাপকভাবে কৃতিত্ব অর্জন করেছেন।

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

একটি সংশয়যুক্ত সমাধান

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

  1. ইভেন্ট উত্সটি এমন ইভেন্টগুলি উত্পন্ন করতে পারে যা উত্তরাধিকারের রাষ্ট্র মেশিনের জন্য প্রাসঙ্গিক রাষ্ট্র পরিবর্তনগুলিতে নেতৃত্ব দেয় না। তাঁর দৃষ্টিকোণ থেকে, এটি "মিথ্যা ইতিবাচক" ইভেন্ট
  2. লিগ্যাসি স্টেট মেশিনের সাথে প্রাসঙ্গিক পরিবর্তনের জন্য ইভেন্ট উত্স ইভেন্ট উত্পন্ন করতে সক্ষম না হতে পারে। তার দৃষ্টিকোণ থেকে, এগুলি "মিস" বা "এড়িয়ে যাওয়া" ইভেন্টগুলি
  3. ইভেন্টের মূল উত্সটিতে ত্রুটি বা ত্রুটির কারণে ইভেন্টগুলি মোটেই উত্পন্ন করা যায় না। এটি পুরানো ডেটা সংগ্রহস্থলগুলি থেকে ETL স্ট্রিমগুলিতে (এক্সট্র্যাক্ট-ট্রান্সফর্ম-লোড) বিশেষত ঘটে। প্রতিটি অর্থে, এগুলি সত্যিই বাদ দেওয়া ঘটনা are

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

অংশগ্রহণকারীকে অবহিত হওয়ার সাথে সাথেই স্থিতি পরিবর্তিত হতে পারে, সে একটি স্ট্যাটাস গেটওয়ে সূচিত করে, যা ইভেন্ট ভিত্তিক সিস্টেমের স্থিতি নিয়ে প্রশ্ন উত্থাপন করে।

এই স্ট্যাটাস গেটওয়েটি সর্বশেষ জ্ঞাত স্থিতির উপর ভিত্তি করে স্থিতির মূল্যায়ন করে (যেমন এটি সাবস্ক্রাইবিং সিস্টেম দ্বারা পরিচিত ছিল)।

যদি পরিবর্তনটি প্রাসঙ্গিক হয় তবে এটি সাবস্ক্রাইবিং সিস্টেমের স্থিতি আপডেট করে এবং প্রয়োজনে সাবস্ক্রাইবিং সিস্টেম সম্পর্কিত ব্যবসায়িক প্রক্রিয়া শুরু করে।

মহিলা ও জীবাণু, সংশয়ী গ্রাহক!

কিছু প্রয়োজনীয়তা

এই পদ্ধতির ব্যবহার করতে, আপনার সাবস্ক্রিপশন সিস্টেমটি অবশ্যই:

  1. প্রশ্নে স্থিতি বৈশিষ্ট্যগুলি ইতিমধ্যে ইভেন্ট পুনরুদ্ধার ব্যবস্থা থেকে অব্যাহত রয়েছে বা এটি যা করে তা থেকে প্রাপ্ত করা যেতে পারে?
  2. রাষ্ট্র পরিবর্তন সম্পর্কিত ডেটা আবার পেস্ট করার মতো একই কাজ করার অনুমতি দিন

আপনার ইভেন্ট সোর্সিং সিস্টেম অবশ্যই:

  1. এমন একটি ক্যোয়ারী পরিষেবা সরবরাহ করুন যা নির্ভরযোগ্যভাবে সিস্টেমের স্থিতি উপস্থাপন করে এবং সাবস্ক্রাইবিং সিস্টেমের জন্য প্রয়োজনীয় সমস্ত স্থিতি বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করে
  2. ক্যোয়ারী পরিষেবাতে প্রাসঙ্গিক রেকর্ডগুলি খুঁজতে ইভেন্ট স্ট্রিমে পর্যাপ্ত ডেটা অন্তর্ভুক্ত করুন
  3. কোয়েরি পরিষেবা থেকে একটি "তালিকা" বা অন্যান্য ব্যাচের ক্যোয়ারী সমর্থন করুন

আপনার প্রয়োগ করা সংশয়ী গ্রাহককে অবশ্যই এতে অন্তর্ভুক্ত করবেন:

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

সংশয়ী গ্রাহক সাবস্ক্রিপশন পদ্ধতিতে ব্যবসায়িক প্রক্রিয়াগুলির সূচনাও বাস্তবায়ন করতে পারে।

যদি এটি কেবল একটি স্থিতি থাকে তবে এটির সাথে সম্পর্কিত প্রক্রিয়াগুলি শুরু করতে নতুন প্রক্রিয়া রেকর্ড রেখে এটি করা যেতে পারে। অন্যথায়, উন্মুক্ত প্রক্রিয়া এপিআই কল করা যেতে পারে।

এই ব্যবসায়িক প্রক্রিয়াগুলির সূচনা করার সময়, আপনাকে অবশ্যই গেটওয়েতে লকিং প্রয়োগ করতে হবে যাতে ইটিএল প্রক্রিয়া চলাকালীন কোনও ইভেন্ট ট্রিগার ঘটে তবে আপনি প্রক্রিয়াকরণের সূচনাটিকে নকল করবেন না।

ইতিবাচক ফলাফল

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

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

আমরা সাবস্ক্রিপশন সিস্টেমটিকে ইভেন্টের সাথে সরাসরি যোগাযোগ থেকে রক্ষা করতে আলগা কাপলিংয়ের একটি স্তরও যুক্ত করেছি। এটি অংশগ্রহণকারী সিস্টেমের অন্যান্য ট্রিগারগুলির পুনঃনির্মাণ সক্ষম করে।

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

ডেটা বিজ্ঞানী এবং প্রযুক্তিবিদরা যারা এটি পরিচালনা করে তাদের জন্য এখানে একটি পরামর্শ: আপনি যদি সাবস্ক্রাইবিং রিপোজিটরিতে বহুগ্লট অধ্যবসায় বাস্তবায়ন করেন তবে আপনি এমন একটি ডকুমেন্ট স্টোরও তৈরি করতে পারেন যা স্বয়ংক্রিয়ভাবে ডেটা পরিবর্তনের জন্য ফিল্টার করে যা অর্থবহ ব্যবসায়ের প্রক্রিয়াটি প্রতিফলিত করে।

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

আমরা ইভেন্টের প্রবাহকে স্পর্শ না করে এটি করতে পারি। এর অর্থ হ'ল অন্যান্য গ্রাহক অ্যাপ্লিকেশনগুলি সমর্থন ক্রিয়াকলাপ দ্বারা প্রভাবিত হয় না।

সর্বশেষ ভাবনা

এটি প্রতিটি সমস্যার জন্য নয় (এমনকি বেশিরভাগ সমস্যা)। তবে সমস্যা সমাধানের লিগ্যাসির ডেটা স্ট্রিমগুলির সমর্থন ওভারহেডকে কমানোর সময় eventিলে .ালা সংযোগ এবং ইভেন্ট সোর্সিং এবং সিকিউআরএসের অন্যান্য প্রবাহিত সুবিধাগুলি গ্রহণের জন্য এটি একটি দুর্দান্ত সমাধান। এটি আমাদের বিকাশকারীদের আরও বেশি সময় ব্যয় করতে নতুন অ্যাপ্লিকেশন লেখার অনুমতি দেয় এবং আমাদের গ্রাহকদের জন্য মান যোগ করে।

আপনি যদি এই পোস্টটি পছন্দ করেন তবে দয়া করে নীচের বোতামটি ক্লিক করুন এবং কয়েক বার তালি দাও যাতে আরও লোকেরা এটি দেখতে পাবে। অনেক ধন্যবাদ!

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