সরাসরি প্রধান সামগ্রীতে চলে যান

এপিআই প্রোটোকল ডিজাইনের সহজ গাইডলাইন: REST, GraphQL, gRPC এবং WebSockets

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)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...