SDK কী? Software Development Kit সহজ ভাষায়
SDK (software development kit) হলো একটি রেডিমেড টুলকিট, যা কোনো কোম্পানি ডেভেলপারদের দেয় যাতে তারা তার সার্ভিস বা প্ল্যাটফর্ম সবকিছু শূন্য থেকে না বানিয়েও ব্যবহার করতে পারেন। এতে সাধারণত একটি নির্দিষ্ট প্রোগ্রামিং ভাষার জন্য কোড লাইব্রেরি, ডকুমেন্টেশন ও উদাহরণ থাকে, এবং কখনও টেস্টিংয়ের মতো অতিরিক্ত টুলও। আপনার অ্যাপ যখন “Stripe SDK ব্যবহার করে”, তার মানে আপনার কোড Stripe-এর API-তে প্রতিটি অনুরোধ হাতে না লিখে Stripe-এর আগে থেকে তৈরি ফাংশনগুলো কল করে।
AI দিয়ে অ্যাপ বানালে SDK কেন গুরুত্বপূর্ণ
আপনি যখন একটি AI বিল্ডারকে পেমেন্ট, AI চ্যাট, মানচিত্র বা ইমেইল যোগ করতে বলেন, সে সাধারণত সেই প্রোভাইডারের SDK ইনস্টল করে এবং সেটিকে কল করার জন্য কয়েক লাইন কোড লেখে। SDK কী জানা থাকলে আপনি:
- বুঝতে পারেন আপনার প্রজেক্টে কী যোগ হচ্ছে। SDK একটি ডিপেন্ডেন্সি — বাইরের কোড, যার ওপর আপনার অ্যাপ এখন নির্ভরশীল।
- প্রয়োজনীয় সেটআপ চিনতে পারেন। প্রায় প্রতিটি SDK-র একটি API কী দরকার, এবং অনেকেরই আলাদা “সার্ভার” ও “ব্রাউজার” সংস্করণ থাকে, যেগুলোতে কোন কী নিরাপদ তার নিয়ম ভিন্ন।
- সঠিক জিনিসটি চাইতে পারেন। “সার্ভারে অফিশিয়াল Stripe SDK ব্যবহার করো” বলা “Stripe যোগ করো” বলার চেয়ে স্পষ্ট নির্দেশ।
- এরর পড়তে পারেন। AI-তৈরি অ্যাপের অনেক এরর আসে SDK ভুল কনফিগার, পুরোনো বা ভুল জায়গায় ব্যবহারের কারণে।
একটি দৈনন্দিন উপমা
ধরুন আপনি একটি তাক বসাতে চান।
- API হলো বাড়ির নিয়মাবলি: কোন দেয়ালে পেরেক লাগে, কতটা ভার নেয়, কোথায় পাইপ আছে। আপনি চাইলে এই নিয়মগুলো দেখেই সবকিছু নিজে মেপে ও ছিদ্র করে বানাতে পারেন।
- SDK হলো সেই একই কোম্পানির তৈরি একটি ফ্ল্যাট-প্যাক শেলফ কিট: আগে থেকে কাটা অংশ, ঠিক মাপের স্ক্রু, তাদের দেয়ালের সাথে মেলা একটি ব্র্যাকেট এবং একটি নির্দেশিকা বই।
তাকটি কোথায় যাবে ও তাতে কী থাকবে, সে সিদ্ধান্ত আপনারই। কিট শুধু কাঠ কাটা ও স্ক্রুর মাপ আন্দাজ করার ঝামেলা বাঁচায় — এবং পানির পাইপে ছিদ্র হওয়ার সম্ভাবনাও কমায়।
SDK বনাম API বনাম লাইব্রেরি বনাম ফ্রেমওয়ার্ক
এই শব্দগুলো একে অপরের সাথে মেশে, যা অনেককে বিভ্রান্ত করে:
| শব্দ | এটি কী | উদাহরণ |
|---|---|---|
| API | কোনো সার্ভিসের সাথে কথা বলার নিয়ম: কোন অনুরোধ গ্রহণ করা হয় ও কী ফেরত দেয় | Stripe-এর REST API api.stripe.com-এ |
| SDK | একটি নির্দিষ্ট ভাষায় সেই API বা প্ল্যাটফর্ম ব্যবহারের জন্য প্রদানকারীর টুলকিট, ডকস ও টুলসহ | Stripe-এর অফিশিয়াল Node.js লাইব্রেরি |
| Library | প্রজেক্টে যোগ করা যেকোনো পুনঃব্যবহারযোগ্য কোড | একটি তারিখ-ফরম্যাট করার প্যাকেজ |
| Framework | যে বৃহত্তর কাঠামোর ভেতরে আপনার পুরো অ্যাপ তৈরি হয় | React, Next.js, Django |
একটি SDK সাধারণত একটি লাইব্রেরি ধারণ করে, আর সেই লাইব্রেরি সাধারণত একটি API কল করে। ওয়েব সার্ভিসের ক্ষেত্রে “SDK” ও “client library” প্রায়ই একই অর্থে ব্যবহৃত হয়।
কিছু SDK আদৌ ওয়েব সার্ভিস নিয়ে নয়। Apple ও Google iOS ও Android অ্যাপ বানানোর জন্য SDK প্রকাশ করে, যাতে কম্পাইলার, সিমুলেটর ও প্ল্যাটফর্ম কোড থাকে। ধারণাটি একই: একটি প্ল্যাটফর্মের জন্য যা যা দরকার, সব এক কিটে।
SDK আপনার জন্য কী করে
একই কাজ — একটি পেমেন্ট প্রোভাইডারে একজন গ্রাহক তৈরি — দুভাবে করা যাক।
SDK ছাড়া, আপনার কোডকে নিজেই HTTP অনুরোধ বানাতে হয়: URL সেট করা, সঠিক হেডারে সিক্রেট কী যোগ করা, ডেটা API যেভাবে চায় সেভাবে ফরম্যাট করা, পাঠানো, স্ট্যাটাস কোড যাচাই, রেসপন্স পার্স এবং নেটওয়ার্ক ব্যর্থ হলে রিট্রাই।
SDK দিয়ে, এটি প্রায় এক লাইনে দাঁড়ায়:
const customer = await stripe.customers.create({ email: "lena@example.com" });
এই লাইনের পেছনে SDK যা সামলায়:
- প্রমাণীকরণ — প্রতিটি অনুরোধে আপনার কী সঠিকভাবে যুক্ত করা
- ডেটা ফরম্যাটিং — আপনার ডেটাকে API-র চাহিদামতো রূপ দেওয়া, এবং রেসপন্স আবার অবজেক্টে ফিরিয়ে আনা
- এরর — স্ট্যাটাস কোডকে স্পষ্ট এরর টাইপে রূপান্তর, যাতে আপনার কোড ধরতে পারে
- রিট্রাই — অস্থায়ী কারণে অনুরোধ ব্যর্থ হলে নিরাপদভাবে আবার চেষ্টা (অনেক অফিশিয়াল SDK এটি করে)
- টাইপ — TypeScript-এ আপনার এডিটরকে জানানো কোন ফিল্ড আছে, যাতে কোড চালানোর আগেই ভুল ধরা পড়ে
একটি বাস্তব উদাহরণ: একটি সাপোর্ট অ্যাপে AI উত্তর
আপনি একটি AI বিল্ডারকে বললেন: “যখন কোনো গ্রাহক একটি সাপোর্ট টিকিট জমা দেয়, একটি AI মডেল দিয়ে একটি প্রস্তাবিত উত্তর তৈরি করো।”
- AI মডেল প্রদানকারীর অফিশিয়াল SDK আপনার প্রজেক্টে একটি প্যাকেজ হিসেবে ইনস্টল করে (JavaScript প্রজেক্টে npm রেজিস্ট্রি থেকে)।
- আপনি প্রদানকারীর API কী একটি প্রজেক্ট সিক্রেট হিসেবে যোগ করেন। SDK সার্ভারে একটি এনভায়রনমেন্ট ভেরিয়েবল থেকে এটি পড়ে।
- AI একটি সার্ভার রুট লেখে, যা SDK কল করে টিকিটের টেক্সট ও একটি ছোট নির্দেশ দিয়ে, এবং প্রস্তাবিত উত্তরটি ডেটাবেসে সংরক্ষণ করে।
- ব্রাউজার কখনও কী দেখে না; সে শুধু আপনার নিজের সার্ভার রুটটি কল করে।
প্রদানকারী যদি পরে তাদের API বদলায়, সাধারণত একটি নতুন SDK ভার্সন প্রকাশ করে। প্যাকেজটি হালনাগাদ করা — এবং রিলিজ নোটে ব্রেকিং চেঞ্জ দেখা — প্রায়ই এটুকুই লাগে।
মূল শব্দ
| শব্দ | অর্থ |
|---|---|
| Dependency | বাইরের কোড যার ওপর আপনার প্রজেক্ট নির্ভর করে। SDK একটি ডিপেন্ডেন্সি। |
| Package / package manager | কোডের ডাউনলোডযোগ্য বান্ডিল এবং তা ইনস্টল করার টুল (JavaScript-এর জন্য npm, Python-এর জন্য pip)। |
| Client library | একটি নির্দিষ্ট API কল করা সহজ করে এমন কোড। ওয়েব সার্ভিসের ক্ষেত্রে প্রায়ই SDK বলতে এটিই বোঝায়। |
| Server-side SDK | আপনার ব্যাকএন্ডে চলে এবং সিক্রেট কী নিরাপদে ব্যবহার করতে পারে। |
| Client-side / browser SDK | ব্যবহারকারীর ব্রাউজারে চলে। শুধু পাবলিক বা “publishable” কী দেওয়া হয়। |
| Version | প্রতিটি SDK রিলিজের একটি নম্বর থাকে (যেমন 4.2.0)। বড় লাফ মানে প্রায়ই ব্রেকিং চেঞ্জ। |
| Breaking change | এমন একটি আপডেট, যার জন্য আপনাকে কোড বদলাতে হয়। |
| Changelog / release notes | প্রতি ভার্সনে কী বদলেছে তার প্রদানকারীর তালিকা। |
সাধারণ ভুল ধারণা
- “SDK ও API একই জিনিস।” API হলো সার্ভিসের ইন্টারফেস; SDK হলো তার ওপরের সুবিধার স্তর। বেশিরভাগ ওয়েব API SDK ছাড়াও কল করা যায় — শুধু বেশি কাজ লাগে।
- “SDK ইনস্টল হলেই ইন্টিগ্রেশন শেষ।” প্রদানকারীর সাথে একটি অ্যাকাউন্ট, সঠিক কী এবং ব্যর্থতা সামলানোর কোড এখনও দরকার।
- “সঠিক নামের যেকোনো প্যাকেজই অফিশিয়াল।” আক্রমণকারীরা মাঝে মাঝে একই রকম দেখতে প্যাকেজ প্রকাশ করে। প্রদানকারীর ডকসে সঠিক প্যাকেজের নাম দেখে নিন।
- “ব্রাউজার SDK আমার সিক্রেট কী ব্যবহার করতে পারে।” কখনও নয়। ব্রাউজার কোডে যা থাকে তা ভিজিটররা দেখতে পায়। সিক্রেট কী শুধু সার্ভার কোডে রাখতে হবে — দেখুন API কী কীভাবে নিরাপদ রাখবেন।
- “SDK কখনও হালনাগাদ করতে হয় না।” পুরোনো ভার্সন আর ফিক্স পায় না, এবং প্রদানকারী পুরোনো API ভার্সন বন্ধ করলে একসময় কাজ করা বন্ধ করে দেয়।
আপনার AI বিল্ডারকে কী জিজ্ঞেস করবেন
- “তৃতীয় পক্ষের র্যাপার নয়, প্রদানকারীর অফিশিয়াল SDK ব্যবহার করো। আমাদের জন্য কোন সঠিক প্যাকেজের নাম ও ভার্সন ইনস্টল করেছ তা বলো।”
- “SDK শুধু সার্ভারে ব্যবহার করো এবং কী একটি এনভায়রনমেন্ট ভেরিয়েবল থেকে পড়ো।”
- “এই SDK-র কোন অংশ ব্রাউজারে চলে, এবং সেগুলো কোন কী ব্যবহার করে?”
- “SDK কল ব্যর্থ বা টাইমআউট হলে কী হয়? ব্যবহারকারীকে একটি স্পষ্ট বার্তা দেখাও এবং এররটি লগ করো।”
- “এই অ্যাপ যেসব SDK ও প্যাকেজের ওপর নির্ভর করে তার তালিকা দাও এবং প্রতিটি কীসের জন্য তা বলো।”
- “আমাদের কোনো SDK পুরোনো বা নিরাপত্তা সমস্যা আছে কি না যাচাই করো।”
Mythex-এ SDK
Mythex এজেন্ট আপনার প্রজেক্ট স্যান্ডবক্সে আপনার স্ট্যাকের স্বাভাবিক প্যাকেজ ম্যানেজার ব্যবহার করে প্যাকেজ ইনস্টল করতে পারে, প্রদানকারীদের SDK সহ — প্যাকেজের নাম ও যে ফিচারের জন্য লাগবে তা বলুন। দেখুন npm প্যাকেজ ব্যবহার। Mythex আপনার অ্যাপের জন্য আগে থেকে তৈরি ইন্টিগ্রেশনের কোনো ক্যাটালগ দেয় না: আপনি প্রদানকারীর কী একটি প্রজেক্ট সিক্রেট হিসেবে রাখেন এবং এজেন্টকে সার্ভার সাইড থেকে সেবাটি কল করতে বলেন, যেমন বর্ণিত আছে যেকোনো API ইন্টিগ্রেট করুন-এ।
SDK-এর নিচের স্তরটি বুঝতে পড়ুন API কী। SDK-ভিত্তিক দুটি সাধারণ ফিচারের জন্য দেখুন অ্যাপে পেমেন্ট যোগ করার উপায় ও LLM API ব্যবহার।
প্রশ্নোত্তর
সহজ ভাষায় SDK কী?
SDK (software development kit) হলো রেডিমেড কোড, ডকুমেন্টেশন ও টুলের একটি সমষ্টি, যা কোনো কোম্পানি দেয় যাতে ডেভেলপাররা তার সার্ভিস বা প্ল্যাটফর্ম সহজে ব্যবহার করতে পারেন। প্রতিটি অনুরোধ হাতে লেখার বদলে আপনি SDK-তে থাকা সহজ ফাংশন কল করেন।
SDK ও API-এর মধ্যে পার্থক্য কী?
API হলো কোনো সার্ভিসের সাথে কথা বলার নিয়মাবলি — কোন অনুরোধ গ্রহণ করা হয় এবং কী উত্তর ফেরত আসে। SDK হলো সেই API-এর ওপর তৈরি একটি টুলকিট, যা সাধারণত একটি প্রোগ্রামিং ভাষার জন্য হয় এবং অনুরোধগুলো আপনার হয়ে পাঠায়, সঙ্গে প্রমাণীকরণ, রিট্রাই ও ডেটার ফরম্যাটের মতো বিষয়গুলোও সামলায়।
SDK কি বিনামূল্যে?
ওয়েব সার্ভিসের বেশিরভাগ SDK ডাউনলোড করা বিনামূল্যে ও ওপেন সোর্স, কিন্তু যে সার্ভিসের সাথে সংযোগ হয় সেটি ব্যবহারের জন্য মূল্য নিতে পারে। Stripe বা OpenAI SDK ব্যবহার নিজে থেকে কোনো খরচ নয়; তার মাধ্যমে করা পেমেন্ট বা AI অনুরোধের বিল প্রদানকারী কোম্পানি করে।
SDK ব্যবহার কি নিরাপদ?
সেবা প্রদানকারীর অফিশিয়াল SDK সাধারণত তাদের সার্ভিস কল করার সবচেয়ে নিরাপদ উপায়, কারণ সেগুলো রক্ষণাবেক্ষণ করা হয় এবং নিরাপত্তা-সম্পর্কিত বিষয় সামলায়। অফিশিয়াল প্যাকেজ রেজিস্ট্রি থেকে ইনস্টল করুন, নিয়মিত হালনাগাদ রাখুন, এবং একই রকম নামের অনানুষ্ঠানিক প্যাকেজে সতর্ক থাকুন।