আলগাভাবে মিলিত মাইক্রোসার্চেস আর্কিটেকচারে, আপনি কীভাবে আপনার নির্ভরতার উপর নজর রাখবেন?


9

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

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

এই ঝুঁকি কমাতে এবং স্বচ্ছভাবে যুগল স্থাপত্যের নির্ভরতাগুলি কীসের মধ্যে আরও বেশি দৃশ্যমানতা সরবরাহ করতে কোন নিদর্শন বা সরঞ্জাম ব্যবহার করা যেতে পারে?


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

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

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

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

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

উত্তর:


4

এই ঝুঁকি হ্রাস করতে কোন নিদর্শন বা সরঞ্জাম ব্যবহার করা যেতে পারে

আপনার এপিআই এবং আপনার ব্যবসায়িক ক্ষমতা পিছনের দিকে সামঞ্জস্যপূর্ণ রাখা।

আলগাভাবে মিলিত আর্কিটেকচারের নির্ভরতাগুলি কী তার মধ্যে আরও বেশি দৃশ্যমানতা সরবরাহ করে

স্বাস্থ্য পরীক্ষা।

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

সুতরাং আপনার লগগুলি আপনাকে দেখিয়ে দেবে যে আপনি প্রস্তাবিত প্রতিটি বিশেষ পরিষেবাটি এখনও উপলব্ধ just


1

কমপক্ষে দুটি অবস্থান রয়েছে যেখানে আপনি নির্ভরতাগুলি খুঁজে পেতে পারেন:

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

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

রিফ্যাক্টরের সময় এলে ত্রৈমাসিক কলগুলি ভাঙ্গার ঝুঁকিতে বেশি।

এটিই হল রিগ্রেশন টেস্টিং।

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


-2

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


2
এটি মন্তব্য হিসাবে ভাল হতে পারে ... তবে সত্য যে এটি খুব বেশি ব্যাখ্যা করে না।
ডেভিড মনিকাকে পুনরায়

যথেষ্ট ফর্সা। একটি বিশ্রাম এপিআই-তে অন্য কোনও পরিষেবায় কোনও নির্দিষ্ট সংকলনের সময় নির্ভরতা নেই কারণ দুজনের মধ্যে লিঙ্কটি কেবল একটি এইচটিটিপি রেস্ট কল, হোস্ট এবং পথের মতো কিছু। জিআরপিসি, বা প্রোটোবুফ বা থ্রিফ্টের সাহায্যে একটি ইন্টারফেস সংজ্ঞায়িত করা হয় যা কোড উত্পন্ন করতে ব্যবহৃত হয়। উত্পন্ন কোডটি সংকলিত, এবং সংস্করণযুক্ত এবং তারপরে আপনার পরিষেবা (গুলি) সেই ইন্টারফেসের বিপরীতে নির্মিত। ফলাফলটি হ'ল প্রতিটি পরিষেবা আপনার স্পষ্টভাবে অন্য এক বা একাধিক পরিষেবা ইন্টারফেসের উপর নির্ভরশীল। আশা করি যে আমার উত্তর স্পষ্ট!
প্যাট্রিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.