Serverless কী? Serverless computing সহজ ভাষায় ব্যাখ্যা
Serverless হলো কোড চালানোর একটি উপায় যেখানে আপনাকে নিজে কোনো সার্ভার সেটআপ বা পরিচালনা করতে হয় না। আপনি আপনার কোড একটি ক্লাউড প্রদানকারীকে দেন, এবং কোনো কিছু ট্রিগার করলে — একটি ওয়েব অনুরোধ, একটি আপলোড করা ফাইল, একটি পেমেন্ট বিজ্ঞপ্তি — তখন সেটি চলে, তারপর থামে। সাধারণত কোড আসলে যতক্ষণ চলে ততক্ষণের জন্য দাম দেন, অলস বসে থাকা একটি মেশিনের জন্য নয়।
AI দিয়ে বানানোর সময় serverless কেন গুরুত্বপূর্ণ
AI দিয়ে একটি অ্যাপ বানিয়ে হোস্টিং বিকল্প বা কোড দেখলে আপনি "serverless functions", "edge functions" বা "cloud functions"-এর মুখোমুখি হবেন। অনেক হোস্টিং প্ল্যাটফর্ম এগুলো দেয়, এবং কিছু AI builder backend এভাবে ডেপ্লয় করে। এই মডেল বুঝলে তিনটি ব্যবহারিক প্রশ্নের উত্তর দিতে সাহায্য হয়:
- খরচ। কেউ ব্যবহার না করলেও কি আপনার অ্যাপের দাম দিতে হবে?
- গতি। শান্ত সময়ের পরের প্রথম অনুরোধটি কেন ধীর?
- সীমা। একটি দীর্ঘ কাজ — বড় রিপোর্ট তৈরি, ভিডিও প্রসেসিং — কেন সময়সীমা পেরিয়ে গেল?
Serverless কী নয় তা জানাও কাজে লাগে: এটি backend না থাকা নয়। আপনার এখনও সার্ভার-পক্ষের কোড আছে; শুধু মেশিনগুলো অন্য কেউ চালায়। মৌলিক বিষয়ের জন্য দেখুন সার্ভার কী।
একটি দৈনন্দিন উপমা
ঐতিহ্যবাহী সার্ভার গাড়ি রাখার মতো। এটি সবসময় থাকে, সাথে সাথে চালু করা যায়, কিন্তু আপনি তা চালান বা না চালান, বীমা, পার্কিং, রক্ষণাবেক্ষণ — সব দিতে হয়।
Serverless হলো ট্যাক্সি ডাকার মতো। আপনি শুধু যে যাত্রাগুলো করেন তার দাম দেন, এবং একশো মানুষের একসাথে গাড়ি লাগলে একশোটি ট্যাক্সি আসে। কিন্তু গাড়ি পৌঁছাতে একটু অপেক্ষা করতে হতে পারে (একটি cold start), প্রতিটি যাত্রার সর্বোচ্চ দৈর্ঘ্য থাকে, এবং চালক আপনাকে আগের যাত্রা থেকে মনে রাখে না (function-গুলো stateless)।
Serverless function কীভাবে কাজ করে
সবচেয়ে সাধারণ রূপে, যাকে বলে functions as a service:
- আপনি একটি function লেখেন — একটি ছোট কোডের অংশ যা এক ধরনের ইভেন্ট সামলায়, যেমন "
/api/bookings-এ একটি POST সামলাও।" - আপনি ডেপ্লয় করেন। প্রদানকারী এটি সংরক্ষণ করে এবং একটি ট্রিগারের সাথে যুক্ত করে: একটি URL, একটি সময়সূচি, স্টোরেজে একটি নতুন ফাইল, বা একটি queue-র বার্তা।
- একটি ইভেন্ট আসে। প্রদানকারী আপনার function-এর একটি কপি শুরু করে (বা একটি গরম কপি পুনরায় ব্যবহার করে), চালায় এবং ফল ফেরত দেয়।
- এটি নিজে থেকে স্কেল করে। একসাথে হাজার অনুরোধ এলে প্রদানকারী অনেক কপি সমান্তরালে চালায়, আপনার অ্যাকাউন্টের সীমা পর্যন্ত।
- এটি নিষ্ক্রিয় হয়। ট্রাফিক থামলে কপিগুলো বন্ধ হয়। কিছু না চললে কম্পিউট-এর জন্য কিছু দিতে হয় না।
JavaScript-এ একটি ছোট serverless function এমন দেখতে হতে পারে:
export default async function handler(request) {
const { name } = await request.json();
return Response.json({ message: `Hello, ${name}` });
}
কোনো সার্ভার চালু করার, পোর্ট খোলার বা একটি প্রসেস চালু রাখার কোড নেই। সব প্ল্যাটফর্ম সামলায়।
"Serverless" কথাটি ঢিলেঢালাভাবে অন্য ম্যানেজড সেবার জন্যও ব্যবহৃত হয় যা স্বয়ংক্রিয়ভাবে স্কেল করে এবং ব্যবহার অনুযায়ী বিল করে — যেমন serverless ডেটাবেস, যা অলস থাকলে বিরতি নেয়।
মূল শব্দাবলি
| শব্দ | অর্থ |
|---|---|
| Function (FaaS) | প্রদানকারীর চাহিদা অনুযায়ী চালানো একটি ছোট কোড-একক। |
| Trigger / event | যা function শুরু করে — একটি HTTP অনুরোধ, ফাইল আপলোড, টাইমার, queue-র বার্তা। |
| Cold start | একটি অনুরোধ সামলানোর আগে একটি নতুন কপি শুরু হওয়ার বিলম্ব। |
| Warm | একটি কপি যা আগে থেকেই চলছে এবং সাথে সাথে সাড়া দিতে পারে। |
| Stateless | function দুটি চালনার মধ্যে কোনো স্মৃতি রাখে না। যা টিকে থাকতে হবে তা ডেটাবেস বা স্টোরেজে যায়। |
| Timeout | একটি চালনার সর্বোচ্চ অনুমোদিত সময়। যেমন AWS Lambda-র সর্বোচ্চ ১৫ মিনিট; অনেক প্ল্যাটফর্মের ডিফল্ট এর চেয়ে অনেক কম। |
| Edge function | ব্যবহারকারীর কাছাকাছি অনেক অবস্থানে চলা function, প্রায়ই কড়া সীমাসহ। |
| Scale to zero | কোনো ট্রাফিক না থাকলে কিছু না চালানো এবং কম্পিউট-এর জন্য কিছু না দেওয়া। |
একটি কাজের উদাহরণ: একটি ছোট বুকিং সাইট
একটি যোগব্যায়াম স্টুডিওর বুকিং সাইটে প্রতি রবিবার সন্ধ্যায় নতুন সময়সূচি প্রকাশের সময় ভিজিটের ঢল নামে, আর বাকি সপ্তাহে খুব কম।
- সবসময় চালু সার্ভারে, স্টুডিও ২৪/৭ একটি মেশিনের দাম দেয়, যা রবিবার সন্ধ্যার চূড়ার জন্য মাপা, বাকি সময় প্রায় অলস।
- Serverless function-এ,
GET /api/classesওPOST /api/bookingsfunction। রবিবারের ভিড় স্বয়ংক্রিয়ভাবে অনেক কপি চালু করে; শান্ত মঙ্গলবার সকালে প্রায় কিছুই চলে না এবং বিল প্রায় শূন্য।
বিনিময়ও দেখা যায়। মঙ্গলবার সকালে সাইটে প্রথম যিনি ঢোকেন তাকে হয়তো cold start-এর জন্য একটু বেশি অপেক্ষা করতে হয়। ডেটাবেসকে অনেক function কপির থেকে অনেক স্বল্পস্থায়ী সংযোগ সামলাতে হয়, যার জন্য হয়তো একটি connection pooler দরকার। আর স্টুডিও যদি পরে "সবার বার্ষিক উপস্থিতির PDF তৈরি করো" কাজ চায়, তা function-এর সময়সীমা ছাড়িয়ে যেতে পারে এবং অন্য কোথাও চালাতে হতে পারে।
Serverless কখন উপযুক্ত — আর কখন নয়
| ভালো উপযুক্ত | কম উপযুক্ত |
|---|---|
| কম, হঠাৎ বা অনির্দেশ্য ট্রাফিক | ধারাবাহিক ভারী ট্রাফিক, যেখানে সবসময় চালু থাকা সস্তা হতে পারে |
| ছোট অনুরোধ/উত্তরের কাজ: API, ফর্ম হ্যান্ডলার, webhook | দীর্ঘ-চলা কাজ: বড় ভিডিও প্রসেসিং, বড় ডেটা ইমপোর্ট |
| ছোট দল যারা সার্ভার পরিচালনা করতে চান না | খোলা সংযোগ ধরে রাখা অ্যাপ (কিছু চ্যাট বা মাল্টিপ্লেয়ার ফিচার), প্ল্যাটফর্ম সমর্থন না করলে |
| ইভেন্ট সামলানো: "ফাইল আপলোড হলে থাম্বনেইল বানাও" | অনুরোধগুলোর মধ্যে বড় মেমরি ধরে রাখতে হয় এমন অ্যাপ |
সাধারণ ভুল ধারণা
- "Serverless মানে কোনো backend নেই।" মানে পরিচালনা করার মতো কোনো সার্ভার নেই। আপনাকে এখনও backend কোড লিখতে ও সুরক্ষিত করতে হয়।
- "Serverless সবসময় সস্তা।" কম পরিমাণে সস্তা, কিন্তু বেশি ও ধারাবাহিক পরিমাণে অনুরোধ-ভিত্তিক দাম যোগ হয়ে বাড়তে পারে।
- "Serverless অসীমভাবে স্কেল করে।" প্ল্যাটফর্মের concurrency সীমা আছে, এবং function-এর আগে আপনার ডেটাবেস সীমাবদ্ধতা হয়ে উঠতে পারে।
- "Function-এ সংরক্ষিত ফাইল পরের বারও থাকবে।" লোকাল স্টোরেজ অস্থায়ী। ডেটাবেস বা ফাইল স্টোরেজ ব্যবহার করুন।
- "Scale-to-zero মানেই serverless।" সম্পর্কিত, কিন্তু অভিন্ন নয়। কিছু প্ল্যাটফর্ম আপনার অ্যাপকে একটি সাধারণ সার্ভার হিসেবে চালায় যা নিষ্ক্রিয় থাকলে ঘুমায় এবং পরের অনুরোধে জাগে — একই রকম সাশ্রয় ও প্রথম অনুরোধে একই রকম বিলম্ব, কিন্তু অনুরোধ-প্রতি function-স্টাইলের সময়সীমা ছাড়া।
আপনার AI builder-কে কী জিজ্ঞেস করবেন
- "এই backend কি serverless function হিসেবে চলবে, নাকি একটি সবসময় চালু বা ঘুমন্ত সার্ভার হিসেবে? খরচের জন্য এর মানে কী?"
- "কোনো কাজ কি প্ল্যাটফর্মের সময়সীমার চেয়ে বেশি সময় নিতে পারে? যদি হয়, সেগুলো আমরা কীভাবে সামলাব?"
- "যা টিকে থাকতে হবে তা ডেটাবেস বা ফাইল স্টোরেজে রাখো, মেমরি বা লোকাল ফাইলে নয়।"
- "অনেক function একসাথে চললে ডেটাবেস সংযোগগুলো কীভাবে পরিচালিত হবে?"
- "অ্যাপ অলস থাকার পর প্রথম অনুরোধে কত বিলম্ব হয়?"
Mythex কীভাবে অ্যাপ হোস্ট করে
Mythex তার হোস্টিংকে serverless function হিসেবে বর্ণনা করে না। প্রকাশ করলে আপনার অ্যাপ একটি সাধারণ ওয়েব অ্যাপ বা কন্টেইনার হিসেবে চলে, যা Mythex আপনার জন্য পরিচালনা করে — হোস্টিং সেটআপ করার কিছু নেই। এটি scale-to-zero: প্রকাশিত অ্যাপ ও তাদের ডেটাবেস অলস থাকলে ঘুমায় এবং পরের ভিজিটে জাগে, ঘুমন্ত অ্যাপে কম্পিউট-এর জন্য কিছু খরচ হয় না, এবং ভারী ট্রাফিকের সময়ই অতিরিক্ত মেশিন চালু হয় (Pro-তে প্রতি সেবায় সর্বোচ্চ ৩টি)। সংযুক্ত Postgres ডেটাবেসও ৫ মিনিট অলস থাকলে ঘুমায় এবং জেগে থাকা সময়ের জন্য বিল হয়। ফলে "যা ব্যবহার করবেন তার জন্যই দাম দিন" সুবিধার অনেকটা পাবেন, একই রকম শান্ত সময়ের পরের প্রথম অনুরোধের বিলম্বসহ। ডকসে হোস্টিং সীমা দেখুন, এবং আমাদের গাইড ওয়েব হোস্টিং ও হোস্টিং খরচ কমানো পড়ুন।
প্রশ্নোত্তর
সহজ ভাষায় serverless মানে কী?
Serverless মানে আপনি একটি ক্লাউড প্রদানকারীকে আপনার কোড দেন এবং শুধু প্রয়োজনের সময় তা চলে — যেমন কোনো অনুরোধ এলে — আপনাকে কোনো সার্ভার সেটআপ বা দেখাশোনা না করেই। সাধারণত আপনি কোড যতক্ষণ চলে ততক্ষণের জন্য দাম দেন, সবসময় চালু থাকা মেশিনের জন্য নয়।
Serverless-এ কি সত্যিই কোনো সার্ভার নেই?
সার্ভার আছে; আপনি শুধু সেগুলো পরিচালনা করেন না। প্রদানকারী তাদের নিজেদের মেশিনে আপনার কোড চালায়, অনুরোধ এলে শুরু করে, চাপ বাড়লে বাড়ায় এবং নিষ্ক্রিয় হলে বন্ধ করে।
Cold start কী?
Cold start হলো যখন একটি serverless function কিছুক্ষণ নিষ্ক্রিয় থাকার পর চলে, তখন অতিরিক্ত বিলম্ব হয়, কারণ প্রদানকারীকে আগে একটি নতুন কপি শুরু করতে হয়। প্ল্যাটফর্ম, ভাষা ও কোডের আকার অনুযায়ী এটি প্রায় অলক্ষিত থেকে এক সেকেন্ড বা তারও বেশি হতে পারে।
Serverless কি সাধারণ সার্ভারের চেয়ে সস্তা?
কম ও অসম ট্রাফিকের অ্যাপের জন্য প্রায়ই হ্যাঁ, কারণ নিষ্ক্রিয় অবস্থায় আপনি প্রায় কিছুই দেন না। ভারী, ধারাবাহিক ট্রাফিকের অ্যাপের জন্য সবসময় চালু সার্ভার সস্তা হতে পারে। এটি আপনার ব্যবহারের ধরন ও প্রদানকারীর মূল্যের উপর নির্ভর করে।
Serverless প্ল্যাটফর্মের উদাহরণ কী কী?
পরিচিত উদাহরণ হলো AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers, এবং Vercel ও Netlify-এর মতো হোস্টিং প্ল্যাটফর্মের function ফিচার।