বুক বিল্ডিং মাইক্রোসার্ভেসিস তার উত্তরে @ রোজারএলসিং দ্বারা উল্লিখিত স্টাইলগুলি সম্পর্কে বিশদভাবে বর্ণনা করেছে।
অর্কেস্টেশন বনাম কোরিওগ্রাফির আওতায় 43 পৃষ্ঠায় বইটি বলেছে:
আরও জটিল জটিল যুক্তি মডেল করা শুরু করার সাথে সাথে আমাদের ব্যক্তিগত প্রক্রিয়াগুলির সীমানা জুড়ে বিস্তৃত ব্যবসায়ের প্রক্রিয়াগুলি পরিচালনা করার সমস্যাটি মোকাবেলা করতে হবে। এবং মাইক্রোসার্ভিসেস সহ, আমরা এই সীমাটিকে স্বাভাবিকের চেয়ে শীঘ্রই হারাব। [...] যখন এই প্রবাহটি বাস্তবে বাস্তবায়নের কথা আসে, সেখানে দুটি স্টাইলের আর্কিটেকচার আমরা অনুসরণ করতে পারি। অর্কেস্টেশন সহ, আমরা প্রক্রিয়াটি পরিচালনা এবং পরিচালনা করতে কেন্দ্রীয় মস্তিষ্কের উপর নির্ভর করি, অনেকটা অর্কেস্ট্রাতে কন্ডাক্টরের মতো। কোরিওগ্রাফির সাহায্যে আমরা তার কাজের সিস্টেমটির প্রতিটি অংশকে অবহিত করি এবং নর্তকীর মতো সমস্ত তাদের উপায় খুঁজে বের করে এবং একটি ব্যালেতে তাদের চারপাশের অন্যদের প্রতিক্রিয়া জানায় like
বইটি তখন দুটি স্টাইলকে ব্যাখ্যা করতে এগিয়ে যায়। অর্কেস্ট্রেশন শৈলী অর্কেস্ট্রেশন / টাস্ক পরিষেবাদির SOA ধারণার সাথে আরও মিল রাখে, যেখানে কোরিওগ্রাফি স্টাইলটি মার্টিন ফোলারের নিবন্ধে উল্লিখিত বোবা পাইপ এবং স্মার্ট এন্ডপয়েন্টগুলির সাথে মিলে যায় ।
অর্কেস্ট্রেশন স্টাইল
এই স্টাইলের আওতায় উপরের বইটি উল্লেখ করেছে:
এই প্রবাহের জন্য একটি অর্কেস্টেশন সমাধান কেমন হবে সে সম্পর্কে ভাবুন। এখানে, সম্ভবত সবচেয়ে সহজ কাজটি হ'ল আমাদের গ্রাহক পরিষেবাটি কেন্দ্রীয় মস্তিষ্ক হিসাবে কাজ করা। তৈরির সময়, এটি আনুগত্য / প্রতিক্রিয়া কলগুলির একটি সিরিজের মাধ্যমে আনুগত্য পয়েন্ট ব্যাংক, ইমেল পরিষেবা এবং ডাক পরিষেবা [...] এর সাথে কথা বলে। এরপরে গ্রাহক পরিষেবা নিজেই ট্র্যাক করতে পারে কোনও গ্রাহক এই প্রক্রিয়াতে কোথায় আছেন। এটি গ্রাহকের অ্যাকাউন্ট সেট আপ হয়েছে কিনা, বা ইমেল প্রেরণ করা হয়েছে বা পোস্ট বিতরণ করা হয়েছে কিনা তা পরীক্ষা করে দেখতে পারে। আমরা ফ্লোচার্ট নিতে [...] এবং এটিকে সরাসরি কোডে মডেল করি। আমরা এমনকি এমন কোনও সরঞ্জাম প্রয়োগ করতে পারি যা এটি আমাদের জন্য কার্যকর করে, সম্ভবত কোনও উপযুক্ত নিয়ম ইঞ্জিন ব্যবহার করে। ব্যবসায়িক প্রক্রিয়া মডেলিং সফ্টওয়্যার আকারে বাণিজ্যিক উদ্দেশ্যে এই একই উদ্দেশ্যে বিদ্যমান। ধরে নেওয়া যায় যে আমরা সিঙ্ক্রোনাস অনুরোধ / প্রতিক্রিয়া ব্যবহার করি, আমরা এমনকি জানতে পারি যে প্রতিটি পর্যায়ে কাজ করেছে কিনা [...] এই অর্কেস্টেশন পদ্ধতির ক্ষুদ্রতর দিকটি হ'ল গ্রাহক পরিষেবা কেন্দ্রীয় প্রশাসনিক কর্তৃপক্ষের খুব বেশি হয়ে উঠতে পারে। এটি একটি ওয়েবের কেন্দ্রস্থল এবং কেন্দ্রীয় পয়েন্টের কেন্দ্রস্থল হয়ে উঠতে পারে যেখানে যুক্তি জীবনযাপন শুরু করে। আমি এই পদ্ধতির ফলাফল অল্প সংখ্যক স্মার্ট "গড" পরিষেবাদিতে দেখেছি যা রক্তাল্প সিআরইউডি ভিত্তিক পরিষেবাগুলি কী করতে হবে তা বলে।
দ্রষ্টব্য: আমি অনুমান করি যে লেখক যখন টুলিংয়ের উল্লেখ করেছেন তখন তিনি বিপিএম (যেমন ক্রিয়াকলাপ , অ্যাপাচি ওডিই , ক্যামুন্ডা ) এর মতো কিছু উল্লেখ করছেন । প্রকৃতপক্ষে, ওয়ার্কফ্লো প্যাটার্নস ওয়েবসাইটটিতে এই ধরণের অর্কেস্টেশনটি করার জন্য দুর্দান্ত ধরণের নিদর্শন রয়েছে এবং এটি বিভিন্ন বিক্রেতার সরঞ্জামগুলির মূল্যায়নের বিশদও সরবরাহ করে যা এটিকে এভাবে প্রয়োগ করতে সহায়তা করে। আমি মনে করি না যে লেখক বোঝাচ্ছেন যে এই শৈলীর একীকরণ বাস্তবায়নের জন্য এই সরঞ্জামগুলির মধ্যে একটি ব্যবহার করা প্রয়োজন যদিও অন্যান্য লাইটওয়েট অর্কেস্ট্রেশন ফ্রেমওয়ার্কগুলি ব্যবহার করা যেতে পারে যেমন স্প্রিং ইন্টিগ্রেশন , অ্যাপাচি উট বা খচ্চর ইএসবি
যাইহোক, অন্যান্য বই আমি মাইক্রোসার্ভেসিসের বিষয়ে পড়েছি এবং সাধারণভাবে ওয়েবে আমি পেয়েছি বেশিরভাগ নিবন্ধগুলি অর্কেস্টেশনের এই পদ্ধতিটিকে পছন্দ করে না এবং এর পরিবর্তে পরবর্তীটি ব্যবহার করার পরামর্শ দেয়।
কোরিওগ্রাফি স্টাইল
কোরিওগ্রাফি স্টাইলের অধীনে লেখক বলেছেন:
কোরিওগ্রাফ করা পদ্ধতির সাহায্যে আমরা পরিবর্তে গ্রাহক পরিষেবাটি একটি অ্যাসিনক্রোনাস পদ্ধতিতে কোনও ইভেন্ট প্রেরণ করতে পারি, গ্রাহক তৈরি করেছেন বলে। ইমেল পরিষেবা, ডাক পরিষেবা এবং আনুগত্য পয়েন্ট ব্যাংক তারপরে এই ইভেন্টগুলিতে কেবল সাবস্ক্রাইব করুন এবং সে অনুযায়ী প্রতিক্রিয়া জানান [...] এই পদ্ধতির উল্লেখযোগ্যভাবে আরও ডিকপলড is যদি গ্রাহকের সৃষ্টিতে পৌঁছানোর জন্য অন্য কোনও পরিষেবা প্রয়োজন হয় তবে এটি কেবল ইভেন্টগুলিতে সাবস্ক্রাইব করা প্রয়োজন এবং প্রয়োজনে এটির কাজটি করা দরকার। খারাপ দিকটি হ'ল আমরা [কর্মপ্রবাহ] এ দেখা ব্যবসায়ের প্রক্রিয়ার সুস্পষ্ট দৃষ্টিভঙ্গি এখন কেবল আমাদের সিস্টেমে স্পষ্টভাবে প্রতিফলিত হয়েছে [...] এর অর্থ আপনি সঠিক জিনিসগুলি পর্যবেক্ষণ করতে এবং ট্র্যাক করতে পারবেন তা নিশ্চিত করার জন্য অতিরিক্ত কাজ করা প্রয়োজন ঘটেছিলো. উদাহরণ স্বরূপ, আপনি কি জানতে পারবেন যদি আনুগত্য পয়েন্ট ব্যাংকে কোনও বাগ থাকে এবং কোনও কারণে সঠিক অ্যাকাউন্ট সেট আপ না করা হয়? আমি এর সাথে মোকাবিলা করার জন্য একটি পন্থা হ'ল একটি মনিটরিং সিস্টেম তৈরি করা যা [ওয়ার্কফ্লো] এর ব্যবসায়িক প্রক্রিয়ার দৃষ্টিভঙ্গিটির সাথে স্পষ্টভাবে মেলে, তবে তারপরে প্রতিটি পরিষেবা স্বতন্ত্র সত্তা হিসাবে কী করে তা ট্র্যাক করে, আপনাকে ম্যাপযুক্ত বিজোড় ব্যতিক্রমগুলি দেখতে দেয় ting আরও সুস্পষ্ট প্রক্রিয়া প্রবাহ। [ফ্লোচার্ট] [...] চালিকা শক্তি নয়, কেবল একটি লেন্স যার মাধ্যমে আমরা দেখতে পাচ্ছি যে সিস্টেমটি কীভাবে আচরণ করছে। সাধারণভাবে, আমি দেখেছি যে কোরিওগ্রাফাগুলি পদ্ধতির দিকে ঝোঁক রয়েছে এমন সিস্টেমগুলি আরও আলগাভাবে মিলিত হয়, এবং আরও নমনীয় এবং পরিবর্তনের জন্য উপযুক্ত হয়। তবে সিস্টেমের সীমানা জুড়ে প্রক্রিয়াগুলি নিরীক্ষণ এবং ট্র্যাক করতে আপনার অতিরিক্ত কাজ করার দরকার নেই। উচ্চতর পরিবর্তনের ব্যয় সহ আমি অত্যন্ত ভারীভাবে অর্কিস্ট্রেটেড বাস্তবায়নগুলি অত্যন্ত ভঙ্গুর হতে দেখেছি। এই বিষয়টি মনে রেখে, আমি দৃ strongly়ভাবে কোরিওগ্রাফ করা সিস্টেমের জন্য লক্ষ্য করা পছন্দ করি, যেখানে প্রতিটি পরিষেবা পুরো নাচের ক্ষেত্রে এর ভূমিকা বোঝার জন্য যথেষ্ট স্মার্ট is
দ্রষ্টব্য: আজও আমি নিশ্চিত নই যে কোরিওগ্রাফি ইভেন্ট-চালিত আর্কিটেকচার (ইডিএ) এর অন্য একটি নাম কিনা, তবে ইডিএ যদি এটি করার একমাত্র উপায় হয় তবে অন্য উপায়গুলি কী? (এছাড়াও "ইভেন্ট-চালিত" বলতে আপনার অর্থ কী? এবং ইভেন্ট-চালিত আর্কিটেকচারের অর্থগুলি দেখুন )। এছাড়াও, দেখে মনে হচ্ছে যে সিকিউআরএস এবং ইভেন্টসোর্সিংয়ের মতো জিনিসগুলি এই স্থাপত্য শৈলীর সাথে অনেকগুলি অনুরণন করে, তাই না?
এখন, এর পরে আসে মজা। মাইক্রোসার্ভেসিস বইটি ধরেই নিচ্ছে না যে মাইক্রোসার্ফেসিগুলি আরইএসইএসটি দিয়ে প্রয়োগ করা হবে। বইয়ের পরবর্তী বিভাগে প্রকৃতপক্ষে, তারা আরপিসি এবং এসওএ-ভিত্তিক সমাধানগুলি বিবেচনা করে অবশেষে বিশ্রাম নেবে। এখানে একটি গুরুত্বপূর্ণ বিষয় হ'ল মাইক্রোসার্ভেসিস বিশ্রামকে বোঝায় না।
সুতরাং, হেটোয়াস সম্পর্কে কী? (অ্যাপ্লিকেশন স্টেটের ইঞ্জিন হিসাবে হাইপারমিডিয়া)
এখন, আমরা যদি বিশ্রামের পদ্ধতির অনুসরণ করতে চাই তবে আমরা হেটোয়াসকে অগ্রাহ্য করতে পারি না বা রায় ফিল্ডিং তার ব্লগে এই বলে খুব খুশি হবে যে আমাদের সমাধানটি সত্যই বিশ্রাম নয়। REST এপিআইতে তার ব্লগ পোস্টটি হাইপারটেক্সট চালিত হতে হবে :
যে কোনও HTTP- ভিত্তিক ইন্টারফেসকে একটি REST এপিআই বলছে এমন লোকের সংখ্যা শুনে আমি হতাশ হচ্ছি। হাইপারটেক্সট একটি সীমাবদ্ধতা, এই ধারণাটি নিয়ে REST স্থাপত্যশৈলীর পরিষ্কার করার জন্য কী করা দরকার? অন্য কথায়, যদি অ্যাপ্লিকেশন স্টেটের ইঞ্জিন (এবং সেইজন্য এপিআই) হাইপারটেক্সট দ্বারা চালিত হয় না, তবে এটি RESTful হতে পারে না এবং একটি REST এপিআই হতে পারে না। সময়কাল। কোথাও কোথাও কোনও ভাঙা ম্যানুয়াল রয়েছে যা সংশোধন করা দরকার?
সুতরাং, যেমন আপনি দেখতে পাচ্ছেন, ফিল্ডিং মনে করে যে HATEOAS ব্যতীত আপনি সত্যিই আরএসএফুল অ্যাপ্লিকেশন তৈরি করছেন না। ফিল্ডিংয়ের ক্ষেত্রে, অর্কেস্ট্রেটিং পরিষেবাদিগুলির ক্ষেত্রে হেটোএইএস যাওয়ার উপায়। আমি কেবল এই সমস্ত কিছু শিখছি, তবে আমার কাছে, হেটিওস স্পষ্টভাবে সংজ্ঞা দেয় না যে লিঙ্কগুলি অনুসরণ করার পিছনে চালক শক্তি কে বা কী। এমন একটি ইউআইতে যে ব্যবহারকারী হতে পারে তবে কম্পিউটার থেকে কম্পিউটারের ইন্টারঅ্যাকশনগুলিতে আমি মনে করি যে এটি একটি উচ্চ স্তরের পরিষেবা দ্বারা করা দরকার।
হেটোয়াসের মতে, API গ্রাহককে সত্যিকারের জানা দরকার এমন একমাত্র লিঙ্কটি হ'ল সার্ভারের সাথে যোগাযোগের সূচনা করে (যেমন পোস্ট / অর্ডার)) এই দিক থেকে, আরইএসটি প্রবাহ পরিচালনা করতে চলেছে, কারণ, এই শেষ পয়েন্টের প্রতিক্রিয়া হিসাবে, ফিরে আসা সংস্থানটি পরবর্তী সম্ভাব্য রাজ্যের লিঙ্কগুলিকে ধারণ করবে। এরপরে এপিআই গ্রাহক কোন লিঙ্কটি অনুসরণ এবং পরবর্তী রাজ্যে স্থানান্তরিত করবেন তা স্থির করে।
কতটা শীতল শোনার পরেও ক্লায়েন্টকে এখনও জানতে হবে লিঙ্কটি অবশ্যই পোস্ট করা উচিত, পুটেড, গেটেড, প্যাচড ইত্যাদি হবে এবং ক্লায়েন্টকে এখনও কোন পেলড পাস করার সিদ্ধান্ত নিতে হবে। ক্লায়েন্টকে এখনও ব্যর্থ হলে কী করতে হবে সে সম্পর্কে সচেতন হওয়া দরকার (পুনরায় চেষ্টা করুন, ক্ষতিপূরণ দিন, বাতিল করুন ইত্যাদি)।
আমি এই সমস্ত কিছুর জন্য মোটামুটি নতুন, কিন্তু আমার জন্য, HATEOAs দৃষ্টিকোণ থেকে, এই ক্লায়েন্ট, বা এপিআই গ্রাহক একটি উচ্চ আদেশ পরিষেবা। যদি আমরা এটি একটি মানুষের দৃষ্টিকোণ থেকে মনে করি, আপনি কোনও ওয়েব পৃষ্ঠায় একটি শেষ ব্যবহারকারীকে কল্পনা করতে পারেন, কোন লিঙ্কগুলি অনুসরণ করতে হবে তা স্থির করে, কিন্তু তবুও, ওয়েব পৃষ্ঠার প্রোগ্রামারকে লিঙ্কগুলি আহ্বান করতে কোন পদ্ধতিটি ব্যবহার করতে হবে তা সিদ্ধান্ত নিতে হয়েছিল, এবং কি পেডলোড পাস করতে হবে। সুতরাং, আমার বক্তব্য, কম্পিউটার থেকে কম্পিউটারের ইন্টারঅ্যাকশনে কম্পিউটারটি শেষ ব্যবহারকারীর ভূমিকা নেয়। আরও একবার এটি আমরা একটি অর্কেস্টেশন পরিষেবা বলি।
আমি মনে করি আমরা অর্কেস্ট্রেশন বা কোরিওগ্রাফি দিয়ে হেটোয়াস ব্যবহার করতে পারি।
এপিআই গেটওয়ে প্যাটার্ন
ক্রিস রিচার্ডসন আরও একটি আকর্ষণীয় প্যাটার্নের পরামর্শ দিয়েছিলেন, যিনি প্রস্তাব করেছিলেন তিনি একটি এপিআই গেটওয়ে প্যাটার্নও বলেছিলেন ।
একতাত্ত্বিক আর্কিটেকচারে, ওয়েব ব্রাউজার এবং নেটিভ অ্যাপ্লিকেশনগুলির মতো অ্যাপ্লিকেশনগুলির ক্লায়েন্টরা লোড ব্যালান্সারের মাধ্যমে অ্যাপ্লিকেশনটির এন-অভিন্ন উদাহরণগুলির মধ্যে একটিতে HTTP অনুরোধ করে। তবে একটি মাইক্রোসারাইস আর্কিটেকচারে মনোোলিথটি পরিষেবার সংকলন দ্বারা প্রতিস্থাপন করা হয়েছে। ফলস্বরূপ, আমাদের একটি মূল প্রশ্নের উত্তর দেওয়া দরকার যা ক্লায়েন্টদের সাথে কীসের সাথে যোগাযোগ করে?
নেটিভ মোবাইল অ্যাপ্লিকেশন এর মতো একটি অ্যাপ্লিকেশন ক্লায়েন্ট পৃথক পরিষেবাগুলিতে RESTful HTTP অনুরোধ করতে পারে [...] পৃষ্ঠতলে এটি আকর্ষণীয় বলে মনে হতে পারে। তবে পৃথক পরিষেবাদির এপিআই এবং ক্লায়েন্টদের প্রয়োজনীয় ডেটার মধ্যে গ্রানুলারিলিটিতে একটি উল্লেখযোগ্য মেলামেশা হওয়ার সম্ভাবনা রয়েছে। উদাহরণস্বরূপ, একটি ওয়েব পৃষ্ঠা প্রদর্শনের জন্য সম্ভাব্য সংখ্যক পরিষেবাগুলিতে কলগুলির প্রয়োজন হতে পারে। উদাহরণস্বরূপ, অ্যামাজন ডট কম,
কয়েকটি পৃষ্ঠাগুলিতে কীভাবে 100+ পরিষেবাগুলিতে কল প্রয়োজন তা বর্ণনা করে । এমনকি উচ্চ-গতির ইন্টারনেট সংযোগের মাধ্যমেও অনেকগুলি অনুরোধ করা, একটি নিম্ন-ব্যান্ডউইথ, উচ্চতর-ল্যাটেন্সি মোবাইল নেটওয়ার্ককে ছেড়ে দেওয়া খুব অকার্যকর হবে এবং ব্যবহারকারীদের দুর্বল অভিজ্ঞতার ফলস্বরূপ।
ক্লায়েন্টদের জন্য প্রতি পৃষ্ঠায় অল্প সংখ্যক অনুরোধ করা, সম্ভবত একটি হিসাবে কয়েকজন, ইন্টারনেটের মাধ্যমে একটি এপিআই গেটওয়ে হিসাবে পরিচিত ফ্রন্ট-এন্ড সার্ভারের কাছে ক্লায়েন্টদের পক্ষে আরও ভাল পদ্ধতির হ'ল।
এপিআই গেটওয়ে অ্যাপ্লিকেশনটির ক্লায়েন্ট এবং মাইক্রো সার্ভিসেসের মধ্যে বসে। এটি ক্লায়েন্টের জন্য উপযুক্ত এমন এপিআই সরবরাহ করে। এপিআই গেটওয়ে মোবাইল ক্লায়েন্টদের জন্য একটি মোটা দানাযুক্ত API এবং ডেস্কটপ ক্লায়েন্টগুলিকে একটি উচ্চ-পারফরম্যান্স নেটওয়ার্ক ব্যবহার করে একটি সূক্ষ্ম দানযুক্ত এপিআই সরবরাহ করে। এই উদাহরণে, ডেস্কটপ ক্লায়েন্টরা কোনও পণ্য সম্পর্কে তথ্য পুনরুদ্ধার করার জন্য একাধিক অনুরোধ করে, যেখানে একটি মোবাইল ক্লায়েন্ট একক অনুরোধ করে।
উচ্চ মানের পারফরম্যান্স ল্যানের মাধ্যমে কিছু সংখ্যক মাইক্রোসার্ভেসিকে অনুরোধ করে এপিআই গেটওয়ে আগত অনুরোধগুলি পরিচালনা করে। Netflix এর, উদাহরণস্বরূপ,
বর্ণনা
গড় ছয় ব্যাকএন্ড পরিষেবাগুলিতে আউট কিভাবে প্রতিটি অনুরোধ ভক্ত। এই উদাহরণে, একটি ডেস্কটপ ক্লায়েন্টের সূক্ষ্ম দানযুক্ত অনুরোধগুলি কেবলমাত্র সেই সম্পর্কিত প্রক্সে প্রক্স করা হয়, যেখানে একটি মোবাইল ক্লায়েন্টের কাছ থেকে প্রতিটি মোটা দানাযুক্ত অনুরোধ একাধিক পরিষেবাগুলির কল করার ফলাফলকে একত্রিত করে পরিচালনা করা হয়।
এপিআই গেটওয়ে কেবল ক্লায়েন্ট এবং অ্যাপ্লিকেশনগুলির মধ্যে যোগাযোগকেই অনুকূলিত করে না, তবে এটি মাইক্রো সার্ভিসেসের বিবরণও সজ্জিত করে। এটি ক্লায়েন্টকে প্রভাবিত না করেই মাইক্রোসার্ভেসিকে বিবর্তিত করতে সক্ষম করে। উদাহরণস্বরূপ, দুটি মাইক্রোসার্ভেসিস একত্রিত হতে পারে। অন্য একটি মাইক্রোসার্ভিস দুই বা ততোধিক পরিষেবাগুলিতে বিভক্ত হতে পারে। এই পরিবর্তনগুলি প্রতিফলিত করতে কেবলমাত্র API গেটওয়ে আপডেট করা দরকার। ক্লায়েন্টরা ক্ষতিগ্রস্থ হয় না।
এখন যেহেতু আমরা এপিআই গেটওয়ে অ্যাপ্লিকেশন এবং এর ক্লায়েন্টদের মধ্যে মধ্যস্থতা করে তা দেখেছি, এখন মাইক্রোসার্চেসের মধ্যে কীভাবে যোগাযোগ বাস্তবায়ন করা যায় তা দেখুন look
এটি উপরে বর্ণিত অর্কেস্ট্রেশন শৈলীর সাথে বেশ সাদৃশ্যপূর্ণ বলে মনে হচ্ছে, এই ক্ষেত্রে, এটি পারফরম্যান্স এবং মিথস্ক্রিয়াটির সরলকরণ সম্পর্কে সমস্ত বলে মনে হয়।