ডাটাবেজ, সার্ভার এবং ব্রাউজারগুলোর মতো বিভিন্ন অ্যাপ এর অংশগুলো সাধারণত হিডেন থাকে এবং তা ওয়েব অ্যাপ্লিকেশন এর আর্কিটেকচার দ্বারা মেইনটেইন করা হয়। এই আর্টিকেলের মাধ্যমে ওয়েব অ্যাপ্লিকেশনের আর্কিটেকচার, ফাংশনালিটি এবং এর কম্পোনেন্ট সম্পর্কে বিস্তারিত জানানোর চেষ্টা করবো!
ওয়েব অ্যাপ্লিকেশন আর্কিটেকচার কি?
ওয়েব অ্যাপ্লিকেশন এমন একটি প্রোগ্রাম যা মিডেলওয়্যার এবং ইউজার ইন্টারফেস (UI) এর সাথে ক্লায়েন্ট, সার্ভার (ব্যাক-এন্ড), এবং ডাটাবেজ উভয়কে কানেক্ট করে। যেখানে ব্যাক-এন্ড ডাটা সংরক্ষণ করে এবং ফ্রন্ট-এন্ড ইউজারের কাছে পৌছে দেয়।
একটি স্ট্যান্ডার্ড আর্কিটেকচারে যেসব বিষয় থাকা উচিতঃ
- ভিজুয়াল কম্পোনেন্ট
- ফাস্ট লোডিং ইউজার এক্সপেরিয়েন্স (UI)
- সিকিউরিটি নিশ্চিত করা
- স্টেবিলিটি নিশ্চিত করা
- বাগ বা ত্রুটি গুলো সহজে স্কেল এবং রেকর্ড করে এরকম সিস্টেম ইমপ্লিমেন্ট করা।
ওয়েব অ্যাপ্লিকেশন আর্কিটেকচার কম্পোনেন্ট
UI/UX কম্পোনেন্ট
এধরণের কম্পোনেন্ট ব্রাউজারের সাথে কাজ করে এবং ইন্টারফেসকে অন্তর্ভুক্ত করে। UI/ UX কম্পোনেন্ট মূলত সেসব অপারেশন গুলোর জন্য প্রযোজ্য নয় যা ড্যাশবোর্ড, স্ট্যাটিসটিক, এক্টিভিটি রেকর্ড বা বিভিন্ন সেটিংসের মধ্যে অন্তর্ভুক্ত।
ট্রাকচারাল কম্পোনেন্ট
যে কোনো ওয়েব অ্যাপ্লিকেশন ডেভেলপ করতে যেসব ফাংশনালিটির প্রয়োজন পড়ে:-
- একটি ওয়েব ব্রাউজার, ব্যবহারকারী (বা ক্লায়েন্ট) এবং অ্যাপ্লিকেশনের মধ্যে কমিউনিকেশন তৈরী করে। এই কম্পোনেন্টটি HTML এবং CSS এবং জাভাস্ক্রিপ্ট দ্বারা ডেভেলপ করা।
- মাল্টি-টিয়ার (Multi-Tier) অ্যাপ্লিকেশনগুলোকে সাপোর্ট করার জন্য ওয়েব অ্যাপ্লিকেশন সার্ভারে একটি সেন্ট্রাল নোড বা কমান্ড সেন্টার থাকে। এটি ডেভেলপের জন্য পাইথন, জাভা, নোড জেএস, রুবি, পিএইচপি এবং ডটনেট ব্যবহৃত হয়, এবং এটি ডোমেন লজিক ও পার্সিসটেন্স হিসেবে কাজ করে।
- ডাটাবেজ সার্ভার ইউজার ও ডায়নামিক কন্টেন্ট রিলেটেড ডাটা অন্তর্ভুক্ত করে এমন ডাটা ডেলিভার/স্টোর করে, যা ইউজারের আচরণের উপর ভিত্তি করে পরিবর্তিত হতে পারে।
ওয়েব অ্যাপ্লিকেশন আর্কিটেকচার ডায়াগ্রাম
ক্লাউড অ্যাপগুলির জন্য ব্রাউজার-সাপোর্টেড ল্যাংগুয়েজ প্রয়োজন, এজন্য কয়েকটি সার্ভার থেকে ডাটা প্রসেস করার দরকার হয়। সার্ভারটি অ্যাপ্লিকেশন থেকে তৈরি ইউজার কমান্ডগুলি হেন্ডেল করে এবং ডাটাবেজ তথ্যগুলি সংরক্ষণ করে।
ওয়েব অ্যাপ কম্পোনেন্ট মডেল
অ্যাপ্লিকেশন কম্পোনেন্টগুলোতে বিভিন্ন প্রজেক্টের জন্য উপযুক্ত তিনটি মডেল রয়েছে-
১) একটি ডাটাবেজ সহ একটি ওয়েব সার্ভার
- একটি সিংগেল ওয়েব সার্ভার গঠনের ক্ষেত্রে একটি মাত্র ডাটাবেজ ব্যবহার করা হয়। প্রজেক্ট টেস্টিং অথবা ছোট ব্যক্তিগত প্র্যাকটিস মেইনটেইন করার জন্য এই মডেলটি কার্যকর হতে পারে। আপনি যদি অতি শীঘ্রই রেজাল্ট পেতে চান তবে এটি বেস্ট অপশন নাও হতে পারে।
২) একটি ডেটাবেজ সহ দুটি বা তার বেশি ওয়েব সার্ভার
- এই প্যাটার্নটিতে ডাটাবেজে একটি ইউজারের কাছ থেকে তথ্য আসে, এটি হ্যান্ডেল করে এবং এটি সম্পর্কে “ভুলে যায়”। দুটি ওয়েব সার্ভার সমস্ত কম্পোনেন্টগুলির এককালীন ত্রুটি দূর করে। যদি একটি সার্ভার ব্রেকডাউন হয়, দ্বিতীয়টি সমস্ত কমান্ডের উপর নিয়ন্ত্রণ করে। যদিও এই অপশনটি সুরক্ষিত, কিন্তু এটি আপনাকে পুরো সিস্টেমের ব্রেকডাউন থেকে রক্ষা করতে পারে না।
৩) দুই বা ততোধিক ডেটাবেজ সহ দুটি বা তার বেশি ওয়েব সার্ভার
অপশন ১: ডাটাবেজগুলি একই তথ্য রাখে, সুতরাং দুটির বেশি আপনার প্রয়োজন হবে না। যদি একটি ডাটাবেজ ব্যর্থ হয়, অন্যটি কোনও ক্ষতি ছাড়াই কাজ করে।
অপশন ২: ডেটাবেজগুলির মধ্যে ডাটা সমানভাবে এ্যালোকেট করা হয়। যেহেতু এখানে কোনো ডুপ্লিকেট তথ্য নেই, তাই একাধিক ডাটাবেজ ব্রেকডাউন হলে আপনার কিছু ডাটা অ্যাক্সেস করতে অসুবিধা হতে পারে। এই মডেলটি সবচেয়ে নির্ভরযোগ্য বলে মনে হয় কারণ ওয়েব সার্ভার এবং ডাটাবেজের কোনো SPOF (সিংগেল পয়েন্ট অফ ফেইলার) নেই । তারপরও, যদি পাঁচটির বেশি সার্ভার এবং ডাটাবেজ থাকে তবে লোড ব্যালেন্সারের কাজ করা কঠিন হয়ে ওঠে। অপারেশনাল লোড হ্যান্ডেল করতে তারা ইনবাউন্ড রিকুয়েস্টগুলি এনালাইজ করে এগুলি ডিসট্রিবিউট করতে পারে।
ওয়েব অ্যাপ্লিকেশন আর্কিটেকচারের প্রকারভেদ
ওয়েব অ্যাপ্লিকেশনগুলিকে চারটি প্রধান বিভাগে বিভক্ত করা যেতে পারে:
- সিংগেল পেইজ অ্যাপ্লিকেশন(SPA) এমন অ্যাপ্লিকেশন যা কোনো একটি সিংগেল HTML পেইজে কাজ করে। এই ধরণের অ্যাপ্লিকেশন ইউজারদের সাথে আরও ডায়নামিক ইন্টারেকশন করতে সক্ষম এবং বর্তমান পেইজের বাউন্ডারির ভিতরে আপগ্রেডেড কন্টেন্ট সরবরাহ করে, এবং রিফ্রেশ করার প্রয়োজন হয় না। কনটেন্ট ডাউনলোডের ঝামেলা এড়িয়ে ইউজারকে সবচেয়ে ভালো পার্ফরম্যান্স দিতে সক্ষম হয়।
- মাল্টিপল পেইজ অ্যাপ্লিকেশন(MPA) সাধারণত একাধিক পেইজের সাথে আসে এবং ইউজার যখনই সার্ভারের কাছে রিকুয়েস্ট পাঠায় তখন পুরো পেইজটি পুনরায় লোড করতে হয়। SPA এর তুলনায় MPA ভাল SEO র্যাংকিং এবং স্কেলিবিলিটি দেখায়।
- ইনডিপেনডেন্ট কম্পোনেন্ট সহ মাইক্রোসার্ভিসগুলি কমপ্যাক্ট সার্ভিস দিয়ে থাকে যা নির্দিষ্ট ফাংশনগুলি কভার করে এবং কাস্টম-মেড সফ্টওয়্যার অ্যাপ্লিকেশনগুলি ইমপ্লিমেন্ট করার সময় ওয়েব ডিজাইনারদের আরও বেশি প্রডাক্টিভ হওয়ার জন্য বেনিফিটের একটি বিশাল সেট ডেলিভার করে।
- সার্ভারলেস, যা সার্ভারলেস কম্পিউটিং বা ফাংশন এজ এ সার্ভিস (FAAS) হিসাবে পরিচিত, থার্ড-পার্টি প্রভাইডারের উপর নির্ভর করে যা সার্ভার মেইন্টেইনের দিকে লক্ষ্য রাখে। এটি ওয়েব ডিজাইনারগুলিকে হার্ডওয়্যার নয়, সফ্টওয়্যারটিতে ফোকাস করতে সাহায্য করে।
ওয়েব অ্যাপ আর্কিটেকচার তৈরির ক্ষেত্রে ব্যবহৃত টেকনোলজি
ব্রাউজার ও মোবাইল উভয়ই ওয়েব সার্ভার আর্কিটেকচারের HTTPs প্রোটোকল ব্যবহার করে। ইনটেগ্রাল ওয়েব অ্যাপ মডিউল হিসেবে এটি স্টোরেজ এবং মেমরির দক্ষতা, কম্পিউটিং পারফর্মেন্স এবং অ্যাপ্লিকেশন লেয়ারগুলি নিশ্চিত করে।
বিভিন্ন ওয়েব সার্ভার আর্কিটেকচার :
- জাভা ওয়েব অ্যাপ্লিকেশন আর্কিটেকচারটি বিভিন্ন জাভা টুল (কন্টিনিউয়াস ইন্টিগ্রেশন (CI), ভার্সন কন্ট্রল (Git) ইত্যাদি) এবং ফ্রেমওয়ার্কগুলি (ডেভেলপমেন্ট এবং টেস্টিং) কমবাইন করে, তাদের জটিলতা দূর করে অ্যাপ বিল্ড করতে সক্ষম করে।
- ক্লাউড-বেইজড আর্কিটেকচারটি ক্লাউড বা লোকাল সার্ভারগুলিতে ডাটা এবং ফাংশন স্টোর করে, যা এমন ইনভায়রনমেন্ট তৈরি করে যেখানে সিস্টেমগুলি সরাসরি কানেক্টেড না থাকলেও একে অপরের সাথে যোগাযোগ করতে পারে।
- RabbitMQ হল একটি বহুল ব্যবহৃত মেসেজ ব্রোকার যা অ্যাপ্লিকেশনগুলির মধ্যে মিডেলমেন (Middle-man) হিসাবে কাজ করে, রিসিভিং অ্যাপটি মেসেজ অ্যাক্সেস না করা পর্যন্ত মেসেজগুলি স্টোর করে। এটি ট্রানজেকশনাল সিস্টেমে ব্যবহার করা যেতে পারে, যেখানে আপনি নির্দিষ্ট ওর্ডারে কাজগুলি সম্পন্ন করতে চান।
- .NET ওয়েব সার্ভার আর্কিটেকচার একই কম্পিউটারে ক্রস প্ল্যাটফর্ম সফ্টওয়্যার, ডকার, মাইক্রোসার্ভিস এবং একাধিক অ্যাপ্লিকেশন ভার্সন এক্সিকিউশন হ্যান্ডেল করতে পারে। এটি তথ্য সংরক্ষণের জন্য সোর্স কোড ডিমান্ড করে না এবং ফিচার সেট ও ডেভেলোপমেন্টের অপটিমাইজিং ও ইম্প্রুভিং এর ক্ষেত্রে সাহায্য করে।
- PHP ফ্রেমওয়ার্কগুলো এমন টুল ও ফিচার প্রোভাইড করে যাতে কম কোডেই ভালো রেজাল্ট, শক্তিশালী সিকিউরিটি গ্যারান্টি, ফাস্ট ডেভেলপমেন্ট, সিম্পল অপারেশন এবং ডেভেলোপমেন্ট কমিটি থেকে সাপোর্ট পাওয়া যায়।
- এঙ্গুলার একটি ফ্রেমওয়ার্ক যা কোডের সাইজ হ্রাস করার জন্য লেজি লোডিং এফেক্ট সহ ইউএক্স যুক্ত করে।
- পাইথন সংক্ষিপ্ত, স্পষ্ট এবং সাপোর্টেড কোড দ্বারা গঠিত। পাইথন ইনক্রিসড ওয়েব অ্যাপ্লিকেশন স্পীডে অবদান রাখে এবং এটি অ্যাপ্লিকেশনের মেইনটেনেন্স থেকে মুক্ত।
- Node.js ফ্রেমওয়ার্ক অন্যান্য অনেক কম্পিউটার ল্যাংগুয়েজের জন্য প্রতিযোগিতা তৈরি করে। ডেভেলপাররা কোডিং সার্ভিস, UI এর ধারাবাহিকতা, কোডশেয়ারিং এবং ঝামেলা-মুক্ত নলেজ এক্সচেঞ্জ সুবিধার কারণে এটি ব্যবহার করে। নোডজেস-এ অনেক ফ্রী টুল সহজেই পাওয়া যায় এবং একটি UI এর মাধ্যমে একাধিক সিস্টেম এবং সার্ভিস রান করা যায়। ফলে আপনি একটি দ্রুত ডিজাইন প্রসেস আশা করতে পারেন।
- রুবি অন রেলস- “কনভেনশন ওভার কনফিগারেশন” নীতির উপর নির্ভর করে, এই প্ল্যাটফর্মটি কার্যকর এবং দ্রুত ওয়েব ডিজাইনে অবদান রাখে। কনভেনশনগুলি ডিসিশন মেকিং এর জন্য ব্যবহৃত হয়।
আজ এই পর্যন্তই। ওয়েবের আরো জটিল বিষয় গুলো খুব শীগ্রই আরো উন্ন মানের কনটেন্ট উপস্থাপন করতে কোর্সেবল স্কলার্স ব্লগ টিম নিয়মিত কাজ করে যাচ্ছে। এই আর্টিকেলে যদি কোনো অংশ আপনার বুঝতে সমস্যা হয়, তাহলে কমেন্টে আমাদের জানাতে পারেন।