বর্তমান পরিস্থিতি
আমরা একটি মাইক্রোসারাইস আর্কিটেকচারে একটি অনলাইন শপিং ওয়েব অ্যাপ্লিকেশন বাস্তবায়ন করছি (এবং এখন বজায় রেখেছি)।
প্রয়োজনীয়তার মধ্যে একটি হ'ল ব্যবসায়ের অবশ্যই তাদের গ্রাহকরা তাদের কার্টে কী যুক্ত করে তার অভিজ্ঞতা এবং পরিণামের ক্রমটি কাস্টমাইজ করার জন্য নিয়ম প্রয়োগ করতে সক্ষম হতে হবে। স্পষ্টতই, একটি ব্যবসার বিধি ইঞ্জিন স্থাপন করতে হয়েছিল, এবং আমরা এর জন্য একটি নির্দিষ্ট "মাইক্রোসার্চিস" প্রয়োগ করেছি (যদি আমরা এখনও এটি কল করতে পারি)।
এক বছরের ব্যবধানে, এই নিয়ম ইঞ্জিনটি আরও বেশি জটিল হয়ে উঠেছে, আরও বেশি করে ডেটা (যেমন কার্টের বিষয়বস্তু ছাড়াও ব্যবহারকারীর তথ্য, তার ভূমিকা, তার বিদ্যমান পরিষেবাদি, কিছু বিলিংয়ের তথ্য ইত্যাদি) সক্ষম হতে হবে requ এই বিধি গণনা।
এই মুহুর্তের জন্য, আমাদের shopping-cart
মাইক্রোসারওয়াইস অন্যান্য মাইক্রোসার্ভিসেস থেকে এই সমস্ত ডেটা সংগ্রহ করছে। যদিও এই ডেটার অংশটি ব্যবহার করে shopping-cart
, বেশিরভাগ সময় এটি মূলত নিয়ম ইঞ্জিনকে খাওয়ানোর জন্য ব্যবহৃত হয়।
নতুন প্রয়োজনীয়তা
অনুরূপ প্রয়োজনীয়তার জন্য নিয়ম ইঞ্জিনটিকে পুনরায় ব্যবহার করার জন্য এখন অন্যান্য অ্যাপ্লিকেশন / মাইক্রোসার্ফেসিজের প্রয়োজনীয়তা উপস্থিত হয়েছে। বর্তমান পরিস্থিতিতে, নিয়ম ইঞ্জিনকে কল করতে সক্ষম হওয়ার জন্য তাদেরকে একই ধরণের ডেটা প্রেরণ করতে হবে, একই মাইক্রোসার্ফেসিকে কল করতে হবে এবং (প্রায়) একই সংস্থান তৈরি করতে হবে।
যেমনটি অব্যাহত রেখে আমরা বেশ কয়েকটি সমস্যার মুখোমুখি হব:
- প্রত্যেককে (নিয়ম ইঞ্জিনকে কল করা) ডেটা আনতে পুনরায় প্রতিস্থাপন করতে হবে, এমনকি তাদের নিজের প্রয়োজন না হলেও;
- বিধি ইঞ্জিনের অনুরোধগুলি জটিল;
- এই দিক অব্যাহত রেখে, আমাদের অনেক অনুরোধের জন্য নেটওয়ার্কের চারপাশে এই ডেটা পরিবহনের করতে হবে (নিয়ম ইঞ্জিনকে কল করার μ 'এস কলিং'স বি'র কথা ভাবেন, তবে এ-এর বিধিগুলির ইঞ্জিনের প্রয়োজনীয় কিছু ডেটা ইতিমধ্যে রয়েছে);
shopping-cart
সমস্ত ডেটা আনার কারণে বিশাল আকার ধারণ করেছে;- আমি সম্ভবত অনেক ভুলে গেছি ...
এই সমস্যাগুলি এড়াতে আমরা কী করতে পারি?
আদর্শভাবে, আমরা নিয়ম ইঞ্জিনে আরও জটিলতা এড়াতে চাই। আমাদের এটিও নিশ্চিত করতে হবে যে এটি কোনও বাধা হয়ে দাঁড়ায় না - উদাহরণস্বরূপ কিছু ডেটা আনার ক্ষেত্রে ধীরে ধীরে (10s বা তারও বেশি) তাই আমরা প্রি-আনয়নকে shopping-cart
এমনভাবে প্রয়োগ করেছিলাম যাতে আমরা নিয়মগুলি বলার আগে ডেটা সেখানে থাকার সম্ভাবনা বেশি থাকে ইঞ্জিন, এবং একটি গ্রহণযোগ্য ব্যবহারকারীর অভিজ্ঞতা রাখুন।
কিছু ধারণা
- নিয়ম ইঞ্জিনটিকে প্রয়োজনীয় ডেটা আনতে দিন। এটি এতে আরও জটিলতা যুক্ত করবে, একক দায়িত্বের নীতি লঙ্ঘন করে ( আরও বেশি… );
- ডেটা আনার জন্য নিয়ম ইঞ্জিনের আগে একটি প্রক্সি প্রয়োগ করুন;
- কোনও "ডেটা ফ্যাচার" প্রয়োগ করুন the যা নিয়ম ইঞ্জিনকে একবারে প্রয়োজনীয় সমস্ত ডেটা আনার জন্য কল করে (সম্মিলিত তদন্ত)।
shopping-cart
তবে আমরা অন্যান্য মাইক্রোসার্ভিসেসগুলির প্রয়োজনীয়তার জন্য এটি সহজেই খাপ খাইয়ে নিতে পারি (তারা এখনও ব্যবহারকারী, পণ্য ও ক্রম সম্পর্কিত)। যেমনটি আমরা এটি দেখছি, তাদের একই ইনপুট ডেটার প্রয়োজন হবে , বিশেষত ব্যবসায়টি প্রয়োগের জন্য পূর্বাভাসগুলি বেছে নিতে সক্ষম as সমস্ত ডেটা কার্টের বিষয়বস্তু ছাড়া অন্য মাইক্রোসার্ভেসিস দ্বারা সরবরাহ করা হয়। ডেটা আনতে প্রতি সেচ জটিল নয় তবে যখন আপনাকে ~ 10 অন্যান্য মাইক্রো সার্ভিসেস কল করতে হয় এবং নিয়ম ইঞ্জিন দ্বারা প্রত্যাশিত কাঠামোটি বজায় রাখতে হয় তখন তা জটিল হয়ে ওঠে।