নিজে নিজে একটি সিস্টেম বিকাশ করার সময়, আমি কী মাইক্রোসার্চেস ব্যবহার করব?


30

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

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

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


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

উত্তর:


49

মাইক্রোসার্ভিসেসগুলি সাধারণত অনাকাঙ্ক্ষিত কারণ তারা আপনার সফ্টওয়্যারকে বিতরণ ব্যবস্থায় পরিণত করে - এবং বিতরণ করা সিস্টেমগুলি সবকিছুকে আরও অনেক কঠিন করে তোলে। তবে একটি পরিষেবা-ভিত্তিক স্থাপত্যের কিছু গুরুত্বপূর্ণ সুবিধা রয়েছে:

  • বিভিন্ন পরিষেবা বিভিন্ন টিমের দ্বারা স্বতন্ত্রভাবে বিকাশ ও মোতায়েন করা যায়
  • বিভিন্ন পরিষেবা স্বাধীনভাবে ছোট করা যেতে পারে

আপনি একমাত্র বিকাশকারী হিসাবে, পরিষেবাগুলি স্বাধীনভাবে বিকাশ করার জন্য আপনার নমনীয়তার প্রয়োজন হবে না।

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

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

মাইক্রোসার্চিস প্রিমিয়াম (২০১৫) সম্পর্কে মার্টিন ফাউলারের ধারণাটিও বিবেচনা করুন : মাইক্রোসার্ফেসগুলি আপনার সিস্টেমের বেস জটিলতা ছাড়াও তাদের নিজস্ব যথেষ্ট পরিমাণে জটিলতা প্রবর্তন করে। হ্রাস উত্পাদনশীলতার ক্ষেত্রে আপনাকে এই "প্রিমিয়াম" দিতে হবে। এর অর্থ হ'ল সহজ প্রকল্পগুলির জন্য, মাইক্রোসার্ভিসেস আপনাকে কম উত্পাদনশীল করে তোলে। আরও জটিল প্রকল্পগুলির জন্য এটি পরিবর্তিত হয়: যেখানে একতরফা সমাধানের সাথে কাজ করা আরও ক্রমশ কঠিন হয়ে উঠতে পারে, সেখানে একটি মাইক্রোসারাইস আর্কিটেকচার আরও ভাল স্কেল করে এবং প্রায় ধ্রুব প্রচেষ্টা প্রয়োজন। আপনার সফ্টওয়্যার সিস্টেমের ভিত্তিতে মাইক্রো সার্ভিসেসের অতিরিক্ত প্রাথমিক প্রচেষ্টাটি মূল্যবান কিনা তা আপনাকে জানতে হবে। যেহেতু আপনি এই প্রশ্নটি জিজ্ঞাসা করছেন, উত্তর সম্ভবত "না"। পাখি অবিরত:

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


31
টিএল; ডিআর সংস্করণ: কেবলমাত্র তখনই জটিলতা যুক্ত করুন যখন এটি আপনার আসলে সমস্যাগুলি সমাধান করে।
jpmc26

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

1
ফাউলারের বিতরণযোগ্য সামগ্রীর প্রথম আইন: করবেন না
কে। অ্যালান বেটস

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

2
হ্যাঁ, ভাল উত্তর। জাতিকে ভুলিয়া যাইতে যে microservices আসলে মনে যোগ তাই যদি না তারা অপসারণ - জটিলতা আরো জটিলতা এটা মূল্য না। এবং প্রায় সব ক্ষেত্রেই একক দেবের এমএসএ করার যথেষ্ট সুবিধা হবে না।
এন্ডারল্যান্ড 16
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.