Skip to content

API Architecture & Design (ইন্টারভিউ ডিপ-ডাইভ)

সিস্টেম ডিজাইনে API হলো বিভিন্ন সার্ভিসের মধ্যে যোগাযোগের প্রধান মাধ্যম। ইন্টারভিউতে API এর আর্কিটেকচারাল স্টাইল এবং রিয়েল-টাইম কমিউনিকেশন প্রোটোকল সম্পর্কে বিস্তারিত প্রশ্ন করা হয়।


১. এপিআই কী? (What is an API?)

API (Application Programming Interface) হলো সফটওয়্যার কম্পোনেন্টগুলোর মধ্যে যোগাযোগের একটি সেট বা নিয়ম। এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান সহজ করে।


২. এপিআই আর্কিটেকচারাল স্টাইলস

১. REST (Representational State Transfer): এটি সবচেয়ে জনপ্রিয় স্টাইল। এটি HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে এবং সাধারণত JSON ফরম্যাটে ডেটা পাঠায়। ২. GraphQL: ইউজার শুধুমাত্র কাঙ্ক্ষিত ডেটাই রিকোয়েস্ট করতে পারে (No over-fetching)। ৩. gRPC: এটি Google এর তৈরি হাই-পারফরম্যান্স ফ্রেমওয়ার্ক। এটি Protocol Buffers (Binary format) ব্যবহার করে যা সাধারণ JSON এর চেয়ে অনেক বেশি ফাস্ট। ৪. SOAP: এটি পুরনো এবং মূলত XML ব্যবহার করে। এটি অত্যন্ত সিকিউর কিন্তু অনেক বেশি হেভি।


৩. রিয়েল-টাইম কমিউনিকেশন (Real-time Communication)

ক. WebSockets

WebSockets হলো একটি full-duplex বা উভমুখী যোগাযোগ পদ্ধতি। একবার কানেকশন তৈরি হলে ক্লায়েন্ট এবং সার্ভার একে অপরকে যেকোনো সময় ডেটা পাঠাতে পারে।

  • Use Cases: চ্যাটিং অ্যাপ, শেয়ার বাজার আপডেট, মাল্টিপ্লেয়ার গেমিং।

খ. Webhooks

Webhooks হলো "Reverse API"। যখন সার্ভারে কোনো নির্দিষ্ট ঘটনা (Event) ঘটে, তখন সার্ভার নিজে থেকে ক্লায়েন্টকে একটি HTTP POST রিকোয়েস্ট পাঠায়।

  • উদা: পেমেন্ট গেটওয়েতে পেমেন্ট সাকসেস হলে আপনার সার্ভারে নোটিফিকেশন আসা।

গ. WebRTC

WebRTC হলো ব্রাউজারের মাধ্যমে সরাসরি অডিও, ভিডিও বা ডেটা পিয়ার-টু-পিয়ার (P2P) শেয়ার করার পদ্ধতি।

  • উদা: Google Meet বা Zoom এর ব্রাউজার ভার্সন।

৪. এপিআই গেটওয়ে এবং রেট লিমিটিং (Gateway & Rate Limiting)

এপিআই গেটওয়ে (API Gateway)

এটি একটি সেন্ট্রাল পয়েন্ট যা সব রিকোয়েস্ট গ্রহণ করে এবং সঠিক সার্ভিসে পাঠায়। এটি অথেনটিকেশন, লগিং এবং মাইক্রোসার্ভিস রাউটিং হ্যান্ডেল করে।

রেট লিমিটিং (Rate Limiting)

সিস্টেমকে ওভারলোড বা অ্যাটাক থেকে বাঁচাতে নির্দিষ্ট সময়ে একজন ইউজার কতগুলো রিকোয়েস্ট করতে পারবে তা সীমাবদ্ধ করে দেওয়া।

  • অ্যালগরিদম: Token Bucket, Leaky Bucket.

৫. আইডেমপোটেন্সি (Idempotency)

Idempotency মানে হলো একই রিকোয়েস্ট বারবার পাঠালে সার্ভারের স্টেট বা রেজাল্ট বারবার পরিবর্তন হবে না।

  • উদা: পেমেন্টের ক্ষেত্রে যদি ইউজার ভুল করে দুইবার "Pay" বাটনে ক্লিক করে, তবে সিস্টেম যেন একব্লাই টাকা কাটে।
  • সমাধান: Idempotency-Key ব্যবহার করা।

৬. সাধারণ ইন্টারভিউ প্রশ্নোত্তর (General Q&A)

প্রশ্ন ১: REST এবং GraphQL এর মধ্যে প্রধান পার্থক্য কী?উত্তর: REST এ প্রতিটি রিসোর্সের জন্য আলাদা এন্ডপয়েন্ট থাকে এবং অনেক সময় অপ্রয়োজনীয় ডেটা চলে আসে। GraphQL এ একটি মাত্র এন্ডপয়েন্ট থাকে এবং ইউজার নিজের ইচ্ছামতো ডেটা স্ট্রাকচার কুয়েরি করতে পারে।

প্রশ্ন ২: WebSockets এবং Long Polling এর মধ্যে কোনটি ভালো?উত্তর: WebSockets অবশ্যই ভালো কারণ এটি কানেকশন ওপেন রাখে। Long Polling এ বারবার নতুন রিকোয়েস্ট পাঠাতে হয় যা রিসোর্স বেশি অপচয় করে।

প্রশ্ন ৩: API-তে কেন 'Data Formats' হিসেবে JSON সবচেয়ে জনপ্রিয়?উত্তর: JSON লাইটওয়েট, মানুষের জন্য সহজে পাঠযোগ্য এবং প্রায় সব প্রোগ্রামিং ল্যাঙ্গুয়েজের সাথে অনায়াসে ইন্টিগ্রেট করা যায়।


৭. সিনারিও ভিত্তিক প্রশ্ন (Scenario-based Questions)

সিনারিও ১: "আপনি ফেসবুকের মতো একটি মেসেঞ্জার অ্যাপ বানাচ্ছেন। মেসেজ ডেলিভারির জন্য আপনি কোন প্রোটোকল ব্যবহার করবেন?"

সমাধান: এখানে WebSockets ব্যবহার করা সেরা হবে। কারণ মেসেঞ্জারে রিয়েল-টাইম এবং উভমুখী (Two-way) কমিউনিকেশন প্রয়োজন। সার্ভারকে সাথে সাথে ক্লায়েন্টের কাছে মেসেজ পুশ করতে হবে।

সিনারিও ২: "একটি থার্ড-পার্টি পেমেন্ট সার্ভিস থেকে আপনার সিস্টেমে পেমেন্ট স্ট্যাটাস আপডেট করার জন্য কোনো মেকানিজম ব্যবহার করবেন?"

সমাধান: এখানে Webhooks ব্যবহার করা উচিত। পেমেন্ট গেটওয়ে যখন পেমেন্ট কনফার্ম করবে, তখন সে আমার সার্ভারের একটি স্পেসিফিক URL-এ ডাটা পাঠাবে। এতে আমার সার্ভারকে বারবার পেমেন্ট স্ট্যাটাস চেক করতে হবে না।

সিনারিও ৩: "আপনার এপিআই গেটওয়ে হঠাৎ অনেক বেশি ট্রাফিকের কারণে ক্র্যাশ করছে। আপনি কীভাবে এটি সমাধান করবেন?"

সমাধান: ১. গেটওয়ের সামনে একটি লোড ব্যালেন্সার বসাব এবং গেটওয়েকে Autoscale করব। ২. Rate Limiting কড়াভাবে অ্যাপ্লাই করব যাতে কোনো নির্দিষ্ট ইউজার বা বট সিস্টেম ডাউন না করতে পারে। ৩. স্ট্যাটিক রেসপন্সগুলো ক্যাশে রাখার ব্যবস্থা করব।


IMPORTANT

ভালো API ডিজাইনের মূল মন্ত্র হলো Consistency এবং Error Handling। ইউজারের জন্য এরর মেসেজগুলো যেন পরিষ্কার এবং সহায়ক হয়।

Released under the MIT License.