MEHEDI
Back to Blog

Layer 7 লোড ব্যালেন্সিং: অ্যাপ্লিকেশন লেয়ারের স্মার্ট দারোয়ান

Mehedi Imun2 min read
Load BalancingLayer 7NginxSystem ArchitectureNetworking
Layer 7 Load Balancing Architecture

Layer 4 লোড ব্যালেন্সিং নিয়ে তো আমরা কথা বলেছি। Layer 4 কী করে? সে হলো একজন সিধা-সাদা দারোয়ান, যে শুধু দেখে এই রিকোয়েস্টটা কি ঢুকতে চাইছে? আচ্ছা, পোর্ট ঠিক আছে? একটা ওয়েবসাইট বা E-commerce সাইটে শুধু সোজা-সাপ্টা দারোয়ান দিয়ে কাজ চলে না। আমাদের দরকার এমন একজন স্মার্ট দারোয়ান, যে রিকোয়েস্টটা দেখে বলে দেবে দাঁড়াও, তুমি কে? তোমার উদ্দেশ্য কী? তুমি কি শুধু একটা ছবি দেখতে এসেছো, নাকি এখন ক্রেডিট কার্ডের পেমেন্ট করবে?

নেটওয়ার্কিং-এর ভাষায় Layer 7 হলো Application Layer। এটাকে আপনি আপনার সার্ভার বিল্ডিং-এর একজন খুব চালাক দারোয়ান ভাবতে পারেন।

Layer 7 কীভাবে কাজ করে?

Layer 4 যেখানে শুধু TCP/IP কানেকশন দেখে কাজ শেষ করে, Layer 7 সেখানে পুরো HTTP রিকোয়েস্ট-টা খতিয়ে দেখে।

১. URL: সে সবার আগে দেখে ইউজার আসলে কোন ঠিকানায় যেতে চাইছে। এই ঠিকানাটাই হলো URL । যেমন, রিকোয়েস্টটা কি পেমেন্ট গেটওয়ের জন্য /checkout-এ যাচ্ছে? নাকি শুধু একটা ছবির জন্য /images/photo.jpg-এ যাচ্ছে? LB এই ঠিকানা দেখেই বুঝতে পারে কোন সার্ভার এই কাজটা সবচেয়ে ভালো এবং দ্রুত করতে পারে। এই URL-ভিত্তিক রাউটিং-এর মাধ্যমে অ্যাপ্লিকেশন তার রিকোয়েস্টের উদ্দেশ্য অনুযায়ী প্রায়োরিটি সেট করতে পারে।

২. Cookie ও Header: এরপর দারোয়ান check করে ইউজারের পরিচয়পত্র। সে Cookie বা Session ID চেক করে। এই ছোট ডেটা পিসই বলে দেয়, ইউজার কি অলরেডি লগইন করা আছে? তার শপিং কার্টে কিছু অ্যাড করা আছে কি? এই তথ্যের ভিত্তিতে Session Stickiness নিশ্চিত করা হয় যাতে ইউজারের সেশনের সব রিকোয়েস্ট যেন সবসময় একই সার্ভারে যায়। এছাড়াও, HTTP Header দেখে সে ইউজারের ডিভাইস বা অন্যান্য গুরুত্বপূর্ণ তথ্যও বুঝে নেয়।

৩. প্রায়োরিটি ম্যানেজমেন্ট: এই সব ডিটেইলস বোঝার পর দারোয়ান চূড়ান্ত সিদ্ধান্ত নেয়। সে বুঝতে পারে, যেহেতু এই ভিজিটর এখন পেমেন্ট করবে, তাকে এক সেকেন্ডও দেরি করানো যাবে না! তাকে দ্রুত হাই-পাওয়ার পেমেন্ট সার্ভার-এর কাছে পাঠাতে হবে। আর যে শুধু ছবি দেখতে এসেছে, তাকে ফাঁকা থাকা মিডিয়া সার্ভার-এ পাঠিয়ে দিলেও চলবে।

কারণ সব রিকোয়েস্ট কিন্তু সমান জরুরি না। আপনি নিশ্চয়ই চাইবেন না যে একটা প্রোফাইল পিকচার লোড হতে গিয়ে আপনার পেমেন্ট প্রসেসিং আটকে যাক! Layer 7 এই প্রায়োরিটিটা ঠিক করে দেয়। Nginx Layer 7-এ থাকলে সে আপনার HTTPS-এর ডিক্রিপশন (SSL Termination) নিজেই হ্যান্ডেল করে নিতে পারে। এর ফলে আপনার পেছনের সার্ভারগুলোর CPU-এর উপর চাপ কমে। তারা শুধু অ্যাপ্লিকেশনের কাজ করবে, এনক্রিপশনের pain নেবে না।

Trade-Off: Layer 7 এত কিছু করে বলে এর একটা ছোট সমস্যা আছে: এটা Layer 4-এর চেয়ে সামান্য স্লো। কারণ? Layer 4 যেখানে শুধু কানেকশন ইনফো দেখে, Layer 7 সেখানে পুরো HTTP Packet check করে। এই অতিরিক্ত checking জন্য একটু সময় লাগে।

  • Layer 4 দরকার: যখন আপনার শুধু দ্রুত TCP/UDP ট্র্যাফিক আর বিশাল কানেকশন ডিস্ট্রিবিউশন দরকার।
  • Layer 7 দরকার: যখন আপনার URL দেখে ডিসিশন, ইউজার সেশন ম্যানেজমেন্ট, এবং অ্যাপ্লিকেশন লেভেলের সিকিউরিটি দরকার।

Nginx-এর মতো টুলস এই Layer 7-এর বুদ্ধিটাকে কাজে লাগিয়ে আপনার অ্যাপ্লিকেশনকে ট্র্যাফিকের ভিড়েও সঠিক সার্ভিস দিতে সাহায্য করে। আশা করি, এই দুটো পোস্ট Nginx এবং লোড ব্যালেন্সিং নিয়ে আপনাদের অনেক ধারণাই বদলে দিয়েছে। কিন্তু ভাই, এগুলো শুধু পড়লে মজা পাবেন না! আপনার ডেভেলপমেন্ট এনভায়রনমেন্টে Layer 4 এবং Layer 7 কনফিগার করে দেখুন তবেই আসল মজা বুঝতে পারবেন!

Mehedi Imun

Mehedi Imun

Full Stack Web Developer

Full stack web developer in Dhaka, Bangladesh building web products end to end with React, Next.js, Node and PostgreSQL. API design, Docker and CI/CD.

More about Mehedi

Get new posts by email

No spam. Unsubscribe anytime.

Comments