ওয়েব অ্যাপ্লিকেশনটির জন্য পৃথক এপিআই এবং ইউআই সার্ভার ব্যবহারের সুবিধা


17

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

আমার ক্ষমাপ্রার্থী যদি নীচে কিছুটা দীর্ঘ হয় তবে আমি আমার প্রশ্ন জিজ্ঞাসার আগে সিস্টেমটি কী তার একটি ভাল চিত্র আঁকার চেষ্টা করতে চাই :)

  • সিস্টেমটি যেভাবে সেটআপ করা হচ্ছে তা হ'ল আমাদের কাছে একটি প্রধান ওয়েব অ্যাপ্লিকেশন (এসপ নেট, অ্যাংুলারজেএস) রয়েছে যা বেশিরভাগই কেবল অন্যান্য বিভিন্ন পরিষেবাদির ডেটা একত্রিত করে। সুতরাং মূলত এটি অ্যাংুলারজেএস অ্যাপ্লিকেশনটির জন্য একটি হোস্ট; আক্ষরিকভাবে একটি এমভিসি নিয়ামক রয়েছে যা ক্লায়েন্টের পাশে বুটস্ট্র্যাপ করে এবং তারপরে অন্যান্য প্রতিটি নিয়ামকই একটি ওয়েবএপিআই নিয়ামক।

  • ক্লায়েন্টের পক্ষ থেকে কলগুলি এই নিয়ন্ত্রকদের দ্বারা পরিচালিত হয়, যা সর্বদা এমন বাক্সে স্থাপন করা হয় যা ওয়েব অ্যাপ্লিকেশনটিকে হোস্ট করা ছাড়া কিছুই করে না। আমাদের কাছে বর্তমানে 4 টি বাক্স রয়েছে।

  • যাইহোক, কলগুলি চূড়ান্তভাবে ওয়েবেপিআই অ্যাপ্লিকেশনগুলির অন্য সেটগুলিতে পৌঁছে দেওয়া হয় (সাধারণত এটি ব্যবসায়ের ক্ষেত্রে যেমন সুরক্ষা, গ্রাহকের ডেটা, পণ্য ডেটা ইত্যাদি)। এই ওয়েবএপিআইয়ের সমস্ত একই সাথে উত্সর্গীকৃত বাক্সগুলিতে স্থাপন করা হয়; আমাদের কাছে এই বাক্সগুলির 4 টিও রয়েছে।

  • একক ব্যতিক্রম সহ, এই ওয়েবএপিআইগুলি আমাদের সংস্থার অন্য কোনও অংশ ব্যবহার করে না।

  • অবশেষে এই ওয়েবএপিআইগুলি "ব্যাক এন্ড" পরিষেবাদিগুলিতে কলগুলির আরও একটি সেট করে, যা সাধারণত ইআরপি সিস্টেম এবং ডেটা স্টোর (যার উপরে আমাদের কোনও নিয়ন্ত্রণ নেই) এর উপরে চাপ দেওয়া লেগ্যাসি এসএমএক্স বা ডাব্লুসিএফ পরিষেবাগুলি।

  • আমাদের অ্যাপ্লিকেশনটির বেশিরভাগ ব্যবসায়িক যুক্তি এই ওয়েবএপিসগুলিতে রয়েছে যেমন লিগ্যাসির ডেটা রূপান্তর করা, এটিকে একত্রিত করা, ব্যবসার বিধিগুলি কার্যকর করা, সাধারণ ধরণের জিনিস।

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

  • অতিরিক্ত HTTP কল ব্রাউজার => HTTP => ওয়েব অ্যাপ্লিকেশন => HTTP => ওয়েবএপিআই => HTTP => ব্যাকএন্ড পরিষেবা করা মোটেও কোনও সুবিধা দেখছি না। (ওয়েব অ্যাপ্লিকেশন এবং ওয়েবএপিআইয়ের মধ্যে এইচটিটিপি কলটি আমার সমস্যা)

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

  • স্থাপনার ভিত্তিতে, এর অর্থ আমাদের 4 + 4 এর বিপরীতে 8 টি "সম্পূর্ণ স্ট্যাক" ওয়েব বাক্স থাকবে।

নতুন পদ্ধতির বিষয়ে আমি যে উপকারগুলি দেখছি তা হ'ল

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

তাহলে প্রশ্নটি হচ্ছে: আমি কি ভুল করছি? আমি কি ওয়েব অ্যাপ্লিকেশন এবং ওয়েবএপিআই বাক্সগুলি পৃথক করার কিছু মৌলিক "যাদু" মিস করেছি?

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

এবং এছাড়াও, আমি যদি আমার প্রস্তাবিত সেটআপটিতে সিস্টেমটি পুনরায় সংগঠিত করতে পারি তবে আমি সুবিধার ক্ষেত্রে কী হারাব?


সমস্ত 8 টি বাক্স যদি সত্যই আপনার নিয়ন্ত্রণে থাকে তবে আমি বিচ্ছেদের কোনও ভাল কারণ নিয়ে ভাবতে পারি না। আপনি কি জানেন যে অতীতে তাদের আলাদা মালিকানা ছিল কিনা?
Ixrec

@ ইস্ট্রেক - হ্যাঁ 8 টি বাক্সই সংস্থার অন্তর্ভুক্ত, এবং অ্যাপ্লিকেশনটি কেবল 100% অভ্যন্তরীণ। আমি সন্দেহ করি যে এই বিচ্ছেদটি মূলত আংশিকভাবে তৈরি করা হয়েছিল কারণ অন্য একটি অভ্যন্তরীণ গোষ্ঠী অবকাঠামো (প্রচুর রাজনীতি) এর মালিকানা এবং আংশিক কারণ কেউ বলেছিল "এন-টিয়ার" এবং প্রত্যেকেই এটির সাথে চলেছিল।
স্টিফেন বাইর্ন

উত্তর:


25

এর একটি কারন নিরাপত্তা - যদি (! হা হা যখন ) একটি হ্যাকার লাভ আপনার ফ্রন্ট-এন্ড ওয়েবসার্ভার অ্যাক্সেস তিনি এক্সেস সবকিছু পায় এটি অ্যাক্সেস আছে। আপনি যদি ওয়েব সার্ভারে আপনার মাঝারি স্তরটি স্থাপন করেন তবে তার কাছে যা আছে তার সমস্ত কিছুতে তার অ্যাক্সেস রয়েছে - যেমন আপনার ডিবি, এবং পরবর্তী জিনিস আপনি জানেন যে তিনি কেবল আপনার ডিবিতে "ব্যবহারকারীদের থেকে নির্বাচন করুন" চালিয়ে অফলাইন থেকে দূরে নিয়ে গেছেন পাসওয়ার্ড ক্র্যাকিং।

অন্য কারণটি স্কেলিং - ওয়েব স্তর যেখানে পৃষ্ঠাগুলি তৈরি হয় এবং ম্যাঙ্গেলড হয় এবং এক্সএমএল প্রক্রিয়াজাত হয় এবং যা মাঝারি স্তরের তুলনায় অনেক বেশি সংস্থান লাগে যা প্রায়শই ডিবি থেকে ওয়েব স্তরে ডেটা পাওয়ার একটি কার্যকর পদ্ধতি। ওয়েব সার্ভারে থাকা (বা ক্যাশে হওয়া) সমস্ত স্থিতিশীল ডেটা স্থানান্তর করার কথা উল্লেখ করবেন না। আপনি যখন অতীত 1 পেয়ে গেছেন তখন আরও বেশি ওয়েব সার্ভার যুক্ত করা সহজ কাজ web ওয়েব এবং লজিক স্তরগুলির মধ্যে 1: 1 অনুপাত থাকা উচিত নয় - আমি এখন আগে 8: 1 দেখেছি (এবং যুক্তির মধ্যে একটি 4: 1 অনুপাত) স্তর এবং ডিবি)। এটি নির্ভর করে যে আপনার স্তরগুলি কী করে এবং তাদের মধ্যে কতটা ক্যাচিং চলছে।

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

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


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

অবশ্যই, আপনার কেসটি আপনার মামলাটি। আমি ভাবছি যদি ভবিষ্যতে এই পরিষেবাগুলি কোনও অন্য ওয়েবআপ দ্বারা গ্রাস করা হয় (বা এর উদ্দেশ্য হতে পারে) এবং সে কারণেই এটির মতো এটির মতো স্থপতিও রয়েছে। আবার সেখানে, পুরানো স্থপতি সম্ভবত এটি কেবল 10,000 ফুট থেকে নীচে দেখছেন!
gbjbaanb

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

2

আমি মনে করি এখানে সঠিক / ভুল উত্তর নেই। আপনি কি আপনার কলেজগুলিকে এই স্থাপত্যের উদ্দেশ্য সম্পর্কে জিজ্ঞাসা করেছেন?

আমি আপনার বিবরণগুলি কীভাবে বুঝি তার থেকে আপনার আর্কিটেকচারের " ওয়েবএপিআই " স্ব-তৈরি মিডলওয়্যারের ধরণের কাজ করে। মিডলওয়্যারের ব্যবহারে কী কী সুবিধা রয়েছে তা এখন আপনি গবেষণা করতে পারেন। মূলত আপনার ব্যাকঅফিস সিস্টেমটি পরিবর্তন করা থাকলে ( ওয়েব্যাপী ইন্টারফেসটি যতক্ষণ না একই থাকে) আপনার ওয়েব অ্যাপ্লিকেশনটিকে কখনও গ্রহণ করার প্রয়োজন হবে না ।

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

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


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