“প্রতি সেকেন্ডে বিল” এমন একটি কথা যা শুনতে সম্পূর্ণ, কিন্তু আসলে নয়। এর পেছনে বেশ কয়েকটি সিদ্ধান্ত আছে যা ঠিক করে আপনি কত দেবেন: কী মাপা হচ্ছে, ঘড়ি কখন চালু ও বন্ধ হয়, ন্যূনতম চার্জ আছে কি না, সেন্টের ভগ্নাংশ কীভাবে সামলানো হয়, আর টাকা আসলে কখন আপনার ব্যালান্স থেকে কাটে।
এই লেখায় আমরা কোড স্যান্ডবক্স-এর জন্য আমাদের উত্তরগুলো হিসাবসহ লিখে রাখছি। লক্ষ্য হলো, কিছু চালানোর আগেই আপনি বিল সেন্ট পর্যন্ত অনুমান করতে পারবেন, এবং চিনতে পারবেন কখন প্রতি-সেকেন্ড বিলিং আপনার ওয়ার্কলোডের জন্য ভুল মডেল।
একক: রিজার্ভ করা vCPU ও RAM
স্যান্ডবক্সের দাম হলো এর ট্যারিফ যে রিসোর্স রিজার্ভ করে তার দাম:
- প্রতি vCPU-ঘণ্টায় $0.040
- প্রতি GiB RAM প্রতি ঘণ্টায় $0.013
তাই small ট্যারিফের (0.5 vCPU, 1 GB) দাম 0.5 × 0.040 + 1 × 0.013 = ঘণ্টায় $0.033, অর্থাৎ সেকেন্ডে প্রায় $0.0000092। সবচেয়ে বড়টি, max (8 vCPU, 16 GB), ঘণ্টায় $0.528।
আমরা ব্যবহার নয়, রিজার্ভেশন মাপি। পরের কমান্ডের অপেক্ষায় থাকা স্যান্ডবক্সের প্রতি সেকেন্ডের খরচ একটি প্রজেক্ট কম্পাইল করা স্যান্ডবক্সের সমান। প্রকৃত CPU মাপলে কাগজে বেশি ন্যায্য দেখাত, কিন্তু তখন দাম আগে থেকে জানা অসম্ভব হতো, আর ক্ষমতাটা তো যেভাবেই হোক আপনার জন্য রাখা থাকে। আউটবাউন্ড ট্র্যাফিকের বিল হয় না।
ঘড়ি: তৈরি থেকে মুছে ফেলা পর্যন্ত
একটি অস্থায়ী স্যান্ডবক্সের বিল হয় তৈরির মুহূর্ত থেকে মুছে ফেলা পর্যন্ত। এর মধ্যে সেই সময়ও আছে যখন সেটি অলস বসে থাকে, যতক্ষণ না idle timeout সেটিকে সরিয়ে দেয় — ডিফল্টভাবে ৩০০ সেকেন্ড।
বেশির ভাগ অপ্রত্যাশিত বিল এখান থেকেই আসে। দুই মিনিটের একটি স্ক্রিপ্ট, এমন স্যান্ডবক্সে যা কেউ মোছে না, সাত মিনিটের বিল তৈরি করে: দুই মিনিট কাজ আর পাঁচ মিনিট timeout-এর অপেক্ষা। সমাধানটা একঘেয়ে: কাজ শেষ হলে স্যান্ডবক্স মুছে দিন (SDK-র with ব্লক আপনার হয়ে এটা করে দেয়) অথবা idle timeout কমিয়ে দিন।
ন্যূনতম: প্রতি স্যান্ডবক্সে ৬০ সেকেন্ড
প্রতিটি অস্থায়ী স্যান্ডবক্সের বিল হয় এর আয়ুর অন্তত ৬০ সেকেন্ডের। একটি microVM চালু করা, এর ডিস্ক আর নেটওয়ার্ক যুক্ত করা এবং আবার সব খুলে ফেলার খরচ একই থাকে, ভেতরের কোড এক সেকেন্ড চলুক বা পঞ্চাশ।
| আয়ু | ট্যারিফ | বিল হয়েছে | খরচ |
|---|---|---|---|
| ২০ সে. | small | ৬০ সে. | $0.00055 |
| ৬১ সে. | small | ৬১ সে. | $0.00056 |
| ১০ মি. | small | ৬০০ সে. | $0.0055 |
| ৩ ঘ. | standard | ১০,৮০০ সে. | $0.198 |
ন্যূনতম চার্জ একবারই প্রযোজ্য হয়, স্যান্ডবক্স শেষ হলে, এবং কেবল তখনই যখন এর মোট আয়ু ৬০ সেকেন্ডের কম ছিল। এর ওপর প্রতি ঘণ্টা বা প্রতি কমান্ডের কোনো বাড়তি ন্যূনতম চার্জ নেই।
জমা ও কাটা: মাইক্রো-ডলার আর পূর্ণ সেন্ট
এটাই সেই অংশ যা “প্রতি সেকেন্ড” সাধারণত বলে না। স্যান্ডবক্স হোস্ট ব্যবহার রেকর্ড করে ঘণ্টাভিত্তিক বাকেটে, প্রতি স্যান্ডবক্সে একটি। প্রতি মিনিটে একবার বিলিং জব বন্ধ হয়ে যাওয়া বাকেটগুলো সংগ্রহ করে, দাম হিসাব করে এবং ব্যালান্স থেকে কাটে।
দাম হিসাব হয় ডলারের দশ লক্ষ ভাগের এক ভাগে। কাটা হয় পূর্ণ সেন্টে। এক সেন্টের কম যা থাকে তা আপনার অ্যাকাউন্টে থেকে যায় এবং পরের কাটায় যোগ হয়; প্রতি স্যান্ডবক্স বা প্রতি ঘণ্টা হিসেবে কিছুই উপরে রাউন্ড হয় না।
ছোট পরিসরে এটা গুরুত্বপূর্ণ। ২০ সেকেন্ডের একশোটি স্যান্ডবক্সে জমা হয় 100 × $0.00055 = $0.055। আপনার কাছ থেকে কাটা হয় পাঁচ সেন্ট, আর আধা সেন্ট পরের ব্যাচের অপেক্ষায় থাকে। প্রতিটি স্যান্ডবক্স এক সেন্টে রাউন্ড হলে একই কাজে এক ডলার লাগত।
আরও দুটি বৈশিষ্ট্য জানা দরকার:
- প্রতিটি বাকেটের চার্জ ঠিক একবারই হয়। ব্যবহারের রেকর্ড আর কাটা একই ডেটাবেস ট্রানজ্যাকশনে লেখা হয়, স্যান্ডবক্স ও ঘণ্টাকে কী ধরে। আবার চালানো বা হারানো নিশ্চিতকরণ দুবার চার্জ করতে পারে না।
- বিভ্রাট চার্জকে দেরি করায়, হারায় বা দ্বিগুণ করে না। বিলিং অংশ স্যান্ডবক্স হোস্টে পৌঁছাতে না পারলে কিছুই নিশ্চিত হয় না, বাকেটগুলো অপেক্ষা করে, আর সংযোগ ফিরলে চার্জ হয়।
ফলে ড্যাশবোর্ড লাইভ সংখ্যার চেয়ে এক ঘণ্টা পর্যন্ত পিছিয়ে থাকতে পারে। লাইভ সংখ্যার জন্য GET /sandboxes/{id}/usage সেই স্যান্ডবক্সের এখন পর্যন্ত billed_usd এবং estimated_total_usd ফেরত দেয়।
Persistent স্যান্ডবক্স: শুরু হওয়া প্রতি ঘণ্টায়, একটি সর্বোচ্চ সীমাসহ
Persistent স্যান্ডবক্স সেশনের মাঝে তাদের ডিস্ক রেখে দেয়, ৩০ দিন পর্যন্ত। এদের বিল হয় শুরু হওয়া প্রতি ঘণ্টায়: ৬১ মিনিট মানে দুই ঘণ্টা। বিনিময়ে একটি ক্যালেন্ডার মাসের (UTC) খরচ কখনো ৭৩০ ঘণ্টা বিয়োগ ২৫%-এর বেশি হয় না।
standard ট্যারিফের জন্য এই সীমা $48.18-এর বদলে মাসে $36.14। Persistent স্যান্ডবক্স থামানো (pause) অবস্থায় থাকলে এর কোনো বিলই হয় না।
ব্যালান্স ফুরিয়ে গেলে
ব্যালান্স কখনো শূন্যের নিচে নামে না। নতুন স্যান্ডবক্স 402 insufficient_balance দিয়ে প্রত্যাখ্যাত হয়। আগে থেকে চলা অস্থায়ী স্যান্ডবক্স তাদের idle timeout বা TTL-এ শেষ হয়। Persistent স্যান্ডবক্স ২৪ ঘণ্টা টপ-আপ না হলে থেমে যায় এবং টাকা যোগ করলে নিজে থেকেই আবার চালু হয়। থেমে থাকা স্ন্যাপশট ১৪ দিন রাখা হয়। তারপর স্যান্ডবক্স মুছে যায় আর তার id 410 sandbox_deleted ফেরত দেয়।
যদি কোনো AI এজেন্ট আপনার হয়ে স্যান্ডবক্স তৈরি করে, তাহলে দৈনিক ও মাসিক সীমা ঠিক করুন। সীমায় পৌঁছালে রিসেটের সময়সহ 429 budget_exceeded ফেরত আসে, যার ভিত্তিতে একটি প্রোগ্রাম ব্যবস্থা নিতে পারে।
প্রতি-সেকেন্ড বিলিং কোথায় হারে
সেকেন্ড আর মিনিটে মাপা কাজের জন্য প্রতি-সেকেন্ড বিলিং চমৎকার। কাজ যত দীর্ঘ চলে, এটা তত খারাপ হয়।
| ওয়ার্কলোড | প্রতি-সেকেন্ড স্যান্ডবক্স | বিকল্প |
|---|---|---|
| ২ মিনিটের টেস্ট | $0.0011 (small) | ঘণ্টাভিত্তিক বিলের মেশিন পুরো ঘণ্টার চার্জ নেয় |
| ৩ ঘণ্টার ব্যাচ জব | $0.198 (standard) | প্রায় একই |
| ২৪/৭ চলা সার্ভিস | মাসে $36.14 (standard, persistent সীমা) | AI agent VPS: 4 vCPU, 4 GB, মাসে $10 |
ভারসাম্যের বিন্দুটা মোটামুটি সেখানে, যেখানে একটি ওয়ার্কলোড দিনে কয়েক ঘণ্টার বেশি চলে। এর পরে আপনি এমন নমনীয়তার জন্য টাকা দিচ্ছেন যা ব্যবহার করেন না, আর মাস হিসেবে ভাড়া নেওয়া সার্ভার ঘণ্টাপ্রতি অনেক সস্তা। প্রতি-সেকেন্ড বিলিংকে ছাড় হিসেবে নয়, বরং ক্ষমতার পরিকল্পনা না করার মূল্য হিসেবে দেখাই ন্যায্য।
দ্রুত অনুমানের উপায়
ট্যারিফের ঘণ্টাপ্রতি দাম × স্যান্ডবক্স যত সেকেন্ড থাকবে ÷ ৩৬০০, সর্বনিম্ন ৬০ সেকেন্ড। নিজে না মুছলে idle timeout যোগ করুন। Persistent স্যান্ডবক্সের ক্ষেত্রে প্রতিটি সেশনকে পূর্ণ ঘণ্টায় উপরে রাউন্ড করুন এবং মাসিক সীমায় থামুন।
সব নিয়ম, কোটা এবং বাজেট API আছে স্যান্ডবক্সের সীমা ও বিলিং-এ; ওপরে ব্যবহৃত কলগুলো SDK রেফারেন্স-এ। যদি ভাবেন প্রতি সেকেন্ডে আসলে কী ভাড়া নিচ্ছেন, সহজ ভাষায় Firecracker microVM সেটা ব্যাখ্যা করে, আর AI এজেন্টদের অবকাঠামো থেকে আসলে কী দরকার দেখায় যে মেশিন যখন মানুষ নয়, সফটওয়্যার তৈরি করে, তখন বিলিং মডেল কেন এত গুরুত্বপূর্ণ।
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।