Networking (নেটওয়ার্কিং ডিপ-ডাইভ)
সিস্টেম ডিজাইনে নেটওয়ার্কিং হলো বিভিন্ন কম্পোনেন্টের মধ্যে যোগাযোগের মাধ্যম। ইন্টারভিউতে নেটওয়ার্কিংয়ের কোর কনসেপ্টগুলো পরিষ্কার থাকা খুবই জরুরি।
১. লোড ব্যালেন্সিং অ্যালগরিদম (Load Balancing Algorithms)
লোড ব্যালেন্সার ইনকামিং ট্রাফিককে একাধিক সার্ভারের মধ্যে ডিস্ট্রিবিউট করে। এর জনপ্রিয় কিছু অ্যালগরিদম হলো:
- Round Robin: সিরিয়াল অনুযায়ী প্রতিটি সার্ভারে একটি করে রিকোয়েস্ট পাঠানো।
- Least Connections: যে সার্ভারে বর্তমানে সবচেয়ে কম অ্যাক্টিভ কানেকশন আছে সেখানে পাঠানো।
- IP Hash: ইউজারের আইপি অ্যাড্রেস ব্যবহার করে নির্দিষ্ট সার্ভারে রিকোয়েস্ট পাঠানো (Session persistence নিশ্চিত করতে)।
- Weighted Round Robin: সার্ভারের পাওয়ার (Capacity) অনুযায়ী ওয়েট দেওয়া হয়, শক্তিশালী সার্ভার বেশি রিকোয়েস্ট পায়।
২. প্রক্সি বনাম রিভার্স প্রক্সি (Proxy vs Reverse Proxy)
- Proxy (Forward Proxy): ইউজারের পক্ষ হয়ে কাজ করে। এটি ইউজারের আইপি লুকিয়ে রাখে এবং ইন্টারনেটে রিকোয়েস্ট পাঠায়। (উদা: কোম্পানি বা স্কুলের নেটওয়ার্ক)।
- Reverse Proxy: সার্ভারের পক্ষ হয়ে কাজ করে। এটি ইউজারের রিকোয়েস্ট গ্রহণ করে এবং ইন্টারনাল সার্ভারগুলোর মধ্যে ডিস্ট্রিবিউট করে। (উদা: Nginx, লোড ব্যালেন্সার)। এটি সিকিউরিটি এবং ক্যাশিং বাড়ায়।
৩. ডোমেইন নেম সিস্টেম (DNS)
DNS হলো ইন্টারনেটের ফোনবুক। এটি মানুষের বোঝার মতো নামকে (উদা: google.com) মেশিনের বোঝার মতো IP Address-এ (উদা: 142.250.190.46) কনভার্ট করে।
- Hierarchical Structure: Root -> TLD (.com) -> Domain (google) -> Subdomain (mail).
৪. HTTP বনাম HTTPS
- HTTP: টেক্সট আকারে ডেটা আদান-প্রদান করে, যা নিরাপদ নয়।
- HTTPS: HTTP-এর সাথে TLS/SSL এনক্রিপশন যুক্ত থাকে। এটি ডেটা সিকিউরিটি এবং ইউজারের প্রাইভেসি নিশ্চিত করে।
৫. TCP বনাম UDP
| ফিচার | TCP (Transmission Control Protocol) | UDP (User Datagram Protocol) |
|---|---|---|
| Connection | Connection-oriented (Handshake প্রয়োজন) | Connectionless |
| Reliability | গ্যারান্টি দেয় ডেটা পৌঁছাবেই | গ্যারান্টি দেয় না (Best effort) |
| Speed | কিছুটা স্লো | অত্যন্ত ফাস্ট |
| উদা: | HTTP, SSH, FTP | Video Streaming, Gaming, VoIP |
৬. চেকসাম (Checksums)
চেকসাম হলো একটি ছোট ডেটা যা বড় কোনো ডেটা প্যাকেটের অখণ্ডতা (Integrity) যাচাই করতে ব্যবহৃত হয়।
- ডেটা ট্রান্সমিশনের সময় কোনো এরর হয়েছে কি না তা চেকসাম দিয়ে বোঝা যায়।
- ডেটা রিসিভ করার পর আবার চেকসাম ক্যালকুলেট করা হয় এবং অরিজিনাল চেকসামের সাথে মেলানো হয়।
৭. সাধারণ ইন্টারভিউ প্রশ্নোত্তর (General Q&A)
প্রশ্ন ১: লোড ব্যালেন্সার এবং এপিআই গেটওয়ের মধ্যে পার্থক্য কী?উত্তর: লোড ব্যালেন্সার মূলত ট্রাফিক ডিস্ট্রিবিউট করে। আর এপিআই গেটওয়ে ট্রাফিক ডিস্ট্রিবিউশনের পাশাপাশি অথেনটিকেশন, রেট লিমিটিং, এবং রিকোয়েস্ট রাউটিংয়ের মতো অ্যাডভান্সড কাজগুলো করে।
প্রশ্ন ২: সেশন পারসিস্টেন্স (Session Persistence) কী?উত্তর: যখন কোনো ইউজারের সব রিকোয়েস্ট একটি নির্দিষ্ট সার্ভারে পাঠানো হয়, তখন তাকে সেশন পারসিস্টেন্স বা স্টিকি সেশন (Sticky Session) বলে। এটি আইপি হ্যাশিংয়ের মাধ্যমে করা যায়।
প্রশ্ন ৩: DNS প্রপাগেশন (DNS Propagation) কেন সময় নেয়?উত্তর: ইন্টারনেটে অনেকগুলো ক্যাশ লেভেল থাকে (ব্রাউজার, ওএস, আইএসপি)। যখন ডিএনএস রেকর্ড চেঞ্জ হয়, তখন সব ক্যাশ আপডেট হতে সময় লাগে। TTL (Time to Live) ভ্যালু কমিয়ে এটি দ্রুত করা যায়।
প্রশ্ন ৪: কন্টেন্ট নেগোসিয়েশন (Content Negotiation) কী?উত্তর: এটি একটি মেকানিজম যার মাধ্যমে ক্লায়েন্ট এবং সার্ভার ঠিক করে কোন ফরম্যাটে (উদা: JSON, XML, HTML) ডেটা আদান-প্রদান হবে। এটি মূলত Accept হেডারের মাধ্যমে করা হয়।
৮. জটিল সিনারিও ভিত্তিক প্রশ্ন (Advanced Scenario-based Questions)
সিনারিও ১: "আপনার সিস্টেমে হঠাৎ ডিডিওএস (DDoS) অ্যাটাক হচ্ছে। নেটওয়ার্ক লেভেলে আপনি এটি কীভাবে ঠেকাবেন?"
সমাধান: ১. Rate Limiting: আইপি ভিত্তিক রিকোয়েস্ট লিমিট করে দেব। ২. Anycast DNS: ট্রাফিককে গ্লোবাল নেটওয়ার্কে ছড়িয়ে দেব যাতে কোনো নির্দিষ্ট সার্ভারে চাপ না পড়ে। ৩. Web Application Firewall (WAF): সন্দেহজনক প্যাটার্নগুলো ব্লক করব। ৪. CDN: স্ট্যাটিক ট্রাফিকগুলো এজ সার্ভার থেকে হ্যান্ডেল করব।
সিনারিও ২: "ভিডিও কলিং অ্যাপে অডিও ক্র্যাক করছে এবং ল্যাগ হচ্ছে। নেটওয়ার্ক লেভেলে সমস্যাটি কী হতে পারে?"
সমাধান: ১. এটি মূলত Jitter বা Packet Loss এর কারণে হয়। ২. যেহেতু ভিডিও কলিংয়ে UDP ব্যবহার করা হয়, তাই ল্যাটেন্সি বেশি হলে বা প্যাকেট অর্ডারে না পৌঁছালে এমন সমস্যা হয়। ৩. সমাধান হিসেবে নেটওয়ার্ক ব্যান্ডউইথ বাড়ানো বা প্রক্সিমিটি সার্ভার (Edge) ব্যবহার করা যেতে পারে।
সিনারিও ৩: "একটি ই-কমার্স সাইটে পেমেন্টের সময় 'Handshake Failure' দেখাচ্ছে। এর সম্ভাব্য কারণ কী?"
সমাধান: ১. এটি মূলত SSL/TLS Handshake এর সমস্যা। ২. সম্ভবত ক্লায়েন্ট এবং সার্ভারের মধ্যে এনক্রিপশন প্রোটোকল বা সাইফার স্যুট (Cipher Suite) মিলছে না। ৩. অথবা সার্ভারের এসএসএল সার্টিফিকেট এক্সপায়ার হয়ে গেছে।
সিনারিও ৪: "Load Balancer নিজেই যদি ফেইল করে (SPOF), তবে আপনি কী করবেন?"
সমাধান: ১. এখানে High Availability (HA) লোড ব্যালেন্সার সেটআপ করা উচিত। ২. একটি 'Active-Passive' সেটআপ রাখা যায় যেখানে একটি ফেইল করলে 'Floating IP' ব্যবহার করে অন্যটি সাথে সাথে কাজ শুরু করবে। ৩. অথবা DNS লেভেলে একাধিক আইপি ব্যবহার করা যেতে পারে।
TIP
ইন্টারভিউতে নেটওয়ার্কিংয়ের ট্রেড-অফগুলো (যেমন Reliability vs Speed) সবসময় মাথায় রাখবেন।