Introduction (ভূমিকা) আজকাল সফটওয়্যার বা অ্যাপ তৈরির সময় আমরা প্রায়ই শুনি যে 'এপিআই' (API) ব্যবহার করা হয়েছে। কিন্তু সব অ্যাপের জন্য একই ধরণের এপিআই কাজ করে না। এই ভিডিওতে জাভা ব্রেইনস (Java Brains) এর ইন্সট্রাক্টর আমাদের শিখিয়েছেন যে কখন কোন প্রোটোকল ব্যবহার করা উচিত। আপনি যদি কেবল ইন্টারভিউয়ের জন্য প্রস্তুতি নেন বা নতুন কোনো প্রজেক্ট শুরু করেন, তবে সঠিক প্রোটোকল বেছে নেওয়াটা আপনার অ্যাপের পারফরম্যান্স এবং আপনার ক্যারিয়ারের জন্য কতটা গুরুত্বপূর্ণ, তা এখানে বিস্তারিত বলা হয়েছে।
১. REST: প্রথাগত এবং নির্ভরযোগ্য স্টাইল
Reference: [01:09]
REST হলো সবচেয়ে জনপ্রিয় পদ্ধতি। এটি কোনো নির্দিষ্ট প্রোটোকল নয়, বরং একটি 'আর্কিটেকচারাল স্টাইল' বা কাজের ধরণ। এখানে আমরা বিভিন্ন 'রিসোর্স' (যেমন: ইউজার, পোস্ট) নিয়ে কাজ করি এবং নির্দিষ্ট কিছু 'ভার্ব' (GET, POST, DELETE) ব্যবহার করি।
-
সহজ ব্যাখ্যা: এটি অনেকটা রেস্টুরেন্টের মেনুর মতো। মেনুতে যা আছে আপনাকে সেখান থেকেই অর্ডার করতে হবে। আপনি চাইলেই আপনার মায়ের হাতের রান্নার মতো কোনো কাস্টম ডিশ অর্ডার করতে পারবেন না।
-
কঠিন শব্দের ব্যাখ্যা:
-
CRUD (ক্রাড): এটি Create, Read, Update, Delete এর সংক্ষিপ্ত রূপ। অর্থাৎ ডাটা তৈরি করা, দেখা, পরিবর্তন করা এবং মুছে ফেলা।
-
Caching (ক্যাশিং): একবার তথ্য আনলে তা সাময়িকভাবে জমা রাখা, যাতে বারবার সার্ভারে রিকোয়েস্ট পাঠাতে না হয়। এটি ইন্টারনেটের গতি বাড়াতে সাহায্য করে।
-
২. GraphQL: আপনার যা প্রয়োজন ঠিক তাই পাবেন
Reference: [02:51]
REST-এ যখন আমাদের অনেকগুলো ডাটা লাগে (যেমন: ইউজারের নাম, তার ৫টি পোস্ট এবং ফলোয়ার সংখ্যা), তখন ৩টি আলাদা আলাদা এপিআই কল করতে হয়। কিন্তু GraphQL আপনাকে সেই স্বাধীনতা দেয় যেখানে আপনি একটি মাত্র রিকোয়েস্টেই সব ডাটা পেতে পারেন।
-
সহজ ব্যাখ্যা: এটি অনেকটা 'নিজের নৌকা নিজেই বানানোর' মতো। আপনার যতটুকু কাঠ বা পাল দরকার, আপনি ঠিক ততটুকুই চাইবেন এবং সার্ভার আপনাকে ঠিক সেটাই দেবে। মোবাইলের কম গতির ইন্টারনেটে এটি দারুণ কাজ করে কারণ এতে ডাটার অপচয় কম হয়।
-
আমার চিন্তা: যখন ফ্রন্টএন্ড এবং ব্যাকএন্ড টিমের মধ্যে সমন্বয় কম থাকে বা খুব দ্রুত ফিচার পরিবর্তন করতে হয়, তখন GraphQL ব্যবহার করা সবচেয়ে বুদ্ধিমানের কাজ।
৩. gRPC: রোবটদের কথা বলার দ্রুততম ভাষা
Reference: [04:34]
গুগল এটি তৈরি করেছে যাতে সেকেন্ডে কোটি কোটি রিকোয়েস্ট হ্যান্ডেল করা যায়। এটি মূলত সার্ভার-টু-সার্ভার (এক মেশিন অন্য মেশিনের সাথে কথা বলা) যোগাযোগের জন্য সেরা।
-
সহজ ব্যাখ্যা: REST বা GraphQL এ ডাটা পাঠানো হয় টেক্সট হিসেবে (যেমন JSON), কিন্তু gRPC ডাটা পাঠায় 'বাইনারি' বা ০ এবং ১ এর ফরমেটে। ফলে এটি অনেক বেশি হালকা এবং সুপার ফাস্ট।
-
কোডিং কনসেপ্ট (Protobuf):
Protocol Buffers
// এটি একটি সিম্পল প্রোটোবাফ মেসেজ যা gRPC ব্যবহার করে message UserRequest { int32 id = 1; // এখানে ডাটা টেক্সট হিসেবে নয়, বাইনারি হিসেবে যাবে }ব্যাখ্যা: এই কোডটি বলে দিচ্ছে যে আমরা একটি ইউজারের আইডি পাঠাবো। JSON এর মতো বড় বড় ফিল্ডের নাম না পাঠিয়ে এটি কেবল ডাটা পাঠায়, যা ব্যান্ডউইথ বাঁচায়।
-
কঠিন শব্দের ব্যাখ্যা:
-
Binary Format (বাইনারি ফরমেট): কম্পিউটার যে ভাষা বোঝে (০ এবং ১)। সাধারণ টেক্সট ফাইল থেকে এটি অনেক ছোট হয়।
-
Multiplexing (মাল্টিপ্লেক্সিং): একটি কানেকশন ব্যবহার করে একই সাথে অনেকগুলো তথ্য আদান-প্রদান করা।
-
৪. WebSockets: রিয়েল-টাইম কথাবার্তা
Reference: [07:29]
চ্যাট অ্যাপ বা লাইভ স্কোর দেখার জন্য REST খুব একটা ভালো নয়, কারণ REST-এ আপনি কিছু চাইলে তবেই উত্তর পাবেন। কিন্তু WebSockets-এ একবার কানেকশন তৈরি হলে দুই পক্ষই যেকোনো সময় কথা বলতে পারে।
- সহজ ব্যাখ্যা: এটি অনেকটা ফোন কলের মতো। কল চালু থাকলে আপনি যেমন সাথে সাথে কথা শুনতে পান, WebSockets-ও ঠিক তেমনি রিয়েল-টাইমে ডাটা পাঠাতে থাকে। যেমন: হোয়াটসঅ্যাপ বা ফেসবুক মেসেঞ্জার।
৫. এনালাইসিস এবং আমার চিন্তা (Analysis & Perception)
কন্টেন্ট ক্রিয়েটর এখানে একটি বাস্তবমুখী ধারণা দেওয়ার চেষ্টা করেছেন। আমরা অনেকেই অন্ধভাবে REST ব্যবহার করি, কিন্তু সব জায়গায় এটি সেরা সমাধান নয়।
বাস্তবতা ও সাজেশন: ১. ইউজার এক্সপেরিয়েন্স: আপনি যদি রাইড শেয়ারিং অ্যাপ (যেমন: Uber/Pathao) বানান, তবে REST ব্যবহার করলে ইন্টারফেস স্লো হয়ে যাবে [00:16]। সেখানে GraphQL বা WebSockets বেশি কার্যকর। ২. স্কেলেবিলিটি: যদি আপনার সিস্টেম গুগলের মতো বিশাল হয়, তবে চোখ বন্ধ করে gRPC বেছে নেওয়া উচিত। ৩. বিকল্প চিন্তা: পাবলিক এপিআই (যা সাধারণ মানুষ বা অন্য ডেভেলপাররা ব্যবহার করবে) বানানোর জন্য REST-ই সেরা, কারণ এটি সবাই সহজে বুঝতে পারে। কিন্তু ইন্টারনাল সিস্টেমের জন্য আধুনিক প্রোটোকলগুলো ব্যবহার করলে খরচ এবং সময় দুটোই বাঁচে।
উপসংহার: টেকনোলজি বেছে নেওয়ার আগে তার ফিলোসফি বা দর্শন বোঝা জরুরি। আপনি কেবল 'ট্রেন্ড' অনুসরণ না করে যদি যৌক্তিক কারণে প্রোটোকল বেছে নেন, তবেই আপনি একজন দক্ষ ডেভেলপার হিসেবে নিজেকে প্রমাণ করতে পারবেন।
Link- https://www.youtube.com/watch?v=C85QgXvzaC0
[
Highlight Reel of API Protocol Design Class 1
Java Brains · 3.7K views
](http://www.youtube.com/watch?v=C85QgXvzaC0)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d