কর্মক্ষেত্রে, আমাদের কাছে একটি বৃহত অভ্যন্তরীণ অ্যাপ্লিকেশন রয়েছে যা প্রায় ২ বছর ধরে বিকাশাধীন; আমি সম্প্রতি এই প্রকল্পে যোগ দিয়েছি এবং কিছু আর্কিটেকচার আমাকে কিছুটা বিভ্রান্ত করেছে, তাই আমি আশা করছি যে স্থপতিদের এই একই প্রশ্নগুলি জিজ্ঞাসা করার আগে আমি এখানে যাওয়ার আগে কেউ পরামর্শ দিতে পারে (যাতে আমি তাদের সাথে একটি সুসংগত আলোচনা করতে পারি) )।
আমার ক্ষমাপ্রার্থী যদি নীচে কিছুটা দীর্ঘ হয় তবে আমি আমার প্রশ্ন জিজ্ঞাসার আগে সিস্টেমটি কী তার একটি ভাল চিত্র আঁকার চেষ্টা করতে চাই :)
সিস্টেমটি যেভাবে সেটআপ করা হচ্ছে তা হ'ল আমাদের কাছে একটি প্রধান ওয়েব অ্যাপ্লিকেশন (এসপ নেট, অ্যাংুলারজেএস) রয়েছে যা বেশিরভাগই কেবল অন্যান্য বিভিন্ন পরিষেবাদির ডেটা একত্রিত করে। সুতরাং মূলত এটি অ্যাংুলারজেএস অ্যাপ্লিকেশনটির জন্য একটি হোস্ট; আক্ষরিকভাবে একটি এমভিসি নিয়ামক রয়েছে যা ক্লায়েন্টের পাশে বুটস্ট্র্যাপ করে এবং তারপরে অন্যান্য প্রতিটি নিয়ামকই একটি ওয়েবএপিআই নিয়ামক।
ক্লায়েন্টের পক্ষ থেকে কলগুলি এই নিয়ন্ত্রকদের দ্বারা পরিচালিত হয়, যা সর্বদা এমন বাক্সে স্থাপন করা হয় যা ওয়েব অ্যাপ্লিকেশনটিকে হোস্ট করা ছাড়া কিছুই করে না। আমাদের কাছে বর্তমানে 4 টি বাক্স রয়েছে।
যাইহোক, কলগুলি চূড়ান্তভাবে ওয়েবেপিআই অ্যাপ্লিকেশনগুলির অন্য সেটগুলিতে পৌঁছে দেওয়া হয় (সাধারণত এটি ব্যবসায়ের ক্ষেত্রে যেমন সুরক্ষা, গ্রাহকের ডেটা, পণ্য ডেটা ইত্যাদি)। এই ওয়েবএপিআইয়ের সমস্ত একই সাথে উত্সর্গীকৃত বাক্সগুলিতে স্থাপন করা হয়; আমাদের কাছে এই বাক্সগুলির 4 টিও রয়েছে।
একক ব্যতিক্রম সহ, এই ওয়েবএপিআইগুলি আমাদের সংস্থার অন্য কোনও অংশ ব্যবহার করে না।
অবশেষে এই ওয়েবএপিআইগুলি "ব্যাক এন্ড" পরিষেবাদিগুলিতে কলগুলির আরও একটি সেট করে, যা সাধারণত ইআরপি সিস্টেম এবং ডেটা স্টোর (যার উপরে আমাদের কোনও নিয়ন্ত্রণ নেই) এর উপরে চাপ দেওয়া লেগ্যাসি এসএমএক্স বা ডাব্লুসিএফ পরিষেবাগুলি।
আমাদের অ্যাপ্লিকেশনটির বেশিরভাগ ব্যবসায়িক যুক্তি এই ওয়েবএপিসগুলিতে রয়েছে যেমন লিগ্যাসির ডেটা রূপান্তর করা, এটিকে একত্রিত করা, ব্যবসার বিধিগুলি কার্যকর করা, সাধারণ ধরণের জিনিস।
যা আমাকে বিভ্রান্ত করেছে তা হ'ল ওয়েব অ্যাপ্লিকেশন এবং এটি পরিবেশনকারী ওয়েবএপিআইয়ের মধ্যে এইরকম বিচ্ছেদ হওয়ার সম্ভাব্য সুবিধা। যেহেতু অন্য কেউ এগুলি ব্যবহার করছে না, তাই আমি কোনও স্কেলিবিলিটি সুবিধা দেখতে পাচ্ছি না (যেমন বর্ধিত লোড হ্যান্ডেল করার জন্য আরও 4 টি এপিআই বাক্স রাখার কোনও অর্থ নেই, যেহেতু এপিআই সার্ভারগুলিতে লোড বাড়ানোর অর্থ অবশ্যই ওয়েব সার্ভারগুলিতে লোড বাড়ানো আছে - অতএব এপিআই সার্ভারের সাথে ওয়েব সার্ভারের 1: 1 অনুপাত থাকতে হবে)
অতিরিক্ত HTTP কল ব্রাউজার => HTTP => ওয়েব অ্যাপ্লিকেশন => HTTP => ওয়েবএপিআই => HTTP => ব্যাকএন্ড পরিষেবা করা মোটেও কোনও সুবিধা দেখছি না। (ওয়েব অ্যাপ্লিকেশন এবং ওয়েবএপিআইয়ের মধ্যে এইচটিটিপি কলটি আমার সমস্যা)
সুতরাং আমি বর্তমানে চলমান ওয়েবএপিআইগুলিকে পৃথক সমাধান থেকে সরানো, কেবলমাত্র ওয়েব অ্যাপ্লিকেশন সমাধানের মধ্যে পৃথক প্রকল্পগুলিতে, এর মধ্যে সরল প্রকল্পের রেফারেন্স সহ এবং একটি একক স্থাপনার মডেলকে ধাক্কা দেওয়ার দিকে লক্ষ্য করছি। সুতরাং তারা শেষ পর্যন্ত কেবল ক্লাস লাইব্রেরিতে পরিণত হবে।
স্থাপনার ভিত্তিতে, এর অর্থ আমাদের 4 + 4 এর বিপরীতে 8 টি "সম্পূর্ণ স্ট্যাক" ওয়েব বাক্স থাকবে।
নতুন পদ্ধতির বিষয়ে আমি যে উপকারগুলি দেখছি তা হ'ল
- কার্যকারিতা বৃদ্ধি করুন কারণ ওয়েব অ্যাপ্লিকেশন এবং ওয়েবএপিআই সার্ভারের মধ্যে সিরিয়ালাইজেশন / ডিসরিয়ালাইজেশন করার একটি কম চক্র রয়েছে performance
- প্রচুর পরিমাণে কোড যা মুছে ফেলা যায় (যেমন ডিটিও এবং ম্যাপারদের ক্ষেত্রে ওয়েব অ্যাপ্লিকেশন এবং ওয়েবএপি সার্ভারের যথাক্রমে বহির্গামী এবং আগত সীমারেখাগুলি বিবেচনা করে)
- অর্থপূর্ণ স্বয়ংক্রিয় সংহত পরীক্ষাগুলি তৈরি করার আরও ভাল দক্ষতা, কারণ আমি কেবল ব্যাক-এন্ড পরিষেবাগুলিকে ব্যঙ্গ করতে পারি এবং মাঝারি স্তরের এইচটিটিপি জাম্পের আশেপাশের গোলযোগ এড়াতে পারি।
তাহলে প্রশ্নটি হচ্ছে: আমি কি ভুল করছি? আমি কি ওয়েব অ্যাপ্লিকেশন এবং ওয়েবএপিআই বাক্সগুলি পৃথক করার কিছু মৌলিক "যাদু" মিস করেছি?
আমি কিছু এন-টিয়ার আর্কিটেকচার উপাদান গবেষণা করেছি তবে এগুলির মধ্যে এমন কিছু খুঁজে পাচ্ছি না যা আমাদের পরিস্থিতির জন্য একটি ন্যূনতম সুবিধা দিতে পারে (যেহেতু স্ক্যালাবিলিটি যতদূর আমি বলতে পারি কোনও সমস্যা নয়, এবং এটি একটি অভ্যন্তরীণ অ্যাপ্লিকেশন তাই তাই ওয়েবএপিআই অ্যাপ্লিকেশনগুলির ক্ষেত্রে সুরক্ষা কোনও সমস্যা নয়))
এবং এছাড়াও, আমি যদি আমার প্রস্তাবিত সেটআপটিতে সিস্টেমটি পুনরায় সংগঠিত করতে পারি তবে আমি সুবিধার ক্ষেত্রে কী হারাব?