Back-of-the-envelope estimation: ডিজাইনের আগে হিসাব

ডিজাইনের আগে অনুমান করুন। মনে রাখার মতো সংখ্যাগুলো এবং request, storage ও bandwidth-এর একটি পূর্ণ উদাহরণ দেখুন।

হিসাব লেখা একটি নোটপ্যাড

Database বাছা বা server গোনার আগে সমস্যার আকার অনুমান করুন। মোটামুটি সংখ্যাই যথেষ্ট। এ থেকে বোঝা যায় একটি মেশিনেই চলবে, নাকি distributed ডিজাইন লাগবে।

মনে রাখার মতো সংখ্যা

  • ১ দিন = ৮৬,৪০০ সেকেন্ড, ধরে নিন প্রায় ১,০০,০০০ (10^5) সেকেন্ড।
  • দিনে ১০ লাখ request মানে প্রতি সেকেন্ডে প্রায় ১২।
  • 1 KB, 1 MB, 1 GB, 1 TB: প্রতিটি আগেরটির প্রায় ১,০০০ গুণ।
  • মোটামুটি latency: memory read ~১০০ ns, SSD read ~১০০ microsecond, data centre-এর ভেতরে round trip ~০.৫ ms, মহাদেশ পার ~১৫০ ms।
  • একটি ভালো server প্রতি সেকেন্ডে হাজারো সহজ request সামলায়।

উদাহরণ: ছবি শেয়ারের অ্যাপ

ধরুন: দৈনিক ১ কোটি active user, প্রত্যেকে ৫০টি ছবি দেখে এবং দিনে ০.২টি আপলোড করে। গড় ছবি ২ MB।

প্রতি সেকেন্ডে read: ১ কোটি x ৫০ = দিনে ৫০ কোটি। ১,০০,০০০ দিয়ে ভাগ করলে প্রায় ৫,০০০ read/s। Peak সাধারণত গড়ের ২ থেকে ৩ গুণ, তাই প্রায় ১৫,০০০/s ধরুন।

প্রতি সেকেন্ডে write: ১ কোটি x ০.২ = দিনে ২০ লাখ আপলোড, প্রায় ২০ আপলোড/s।

দিনে storage: ২০ লাখ x ২ MB = দিনে ৪ TB, বছরে প্রায় ১.৫ PB। এ থেকেই বোঝা যায় ছবির জন্য database নয়, object storage ও CDN লাগবে।

বের হওয়া bandwidth: ৫,০০০ view/s x ২ MB = ১০ GB/s। এটি CDN-এর কাজ, একটি origin-এর নয়।

অভ্যাস

  1. ধারণাগুলো জোরে বলুন। উত্তরের চেয়ে এগুলো বেশি গুরুত্বপূর্ণ।
  2. কড়াভাবে round করুন। ৮৬,৪০০ হয়ে যায় ১,০০,০০০।
  3. Read আর write আলাদা করুন। অনুপাত ডিজাইন ঠিক করে।
  4. গড় নয়, peak-এর জন্য পরিকল্পনা করুন।
  5. একক মেলান (bit বনাম byte, দিন বনাম সেকেন্ড)।

ফল দিয়ে কী করবেন

এক মেশিন কী পারে তার সাথে তুলনা করুন। ২০ write/s নগণ্য। ছোট data-র ১৫,০০০ read/s একটি cache-এ ধরে। বছরে ১.৫ PB এক server-এ ধরে না।

মূল কথা: দুই মিনিটের হিসাব পুরো ডিজাইন গড়ে দেয়, তাই আগে করুন আর ধারণাগুলো লিখে রাখুন।


System Design সিরিজের 15 নম্বর পর্ব (মোট ১৫)। আগের পর্ব: Idempotency: retry নিরাপদ করার উপায়.

আরও পড়ুন

Recursion ও backtracking সহজ উদাহরণে

Recursion সমস্যার ছোট কপি সমাধান করে সমাধান করে। অনেক interview সমস্যায় ব্যবহৃত চিন্তার ধাপ ও backtracking টেমপ্লেট শিখুন।

Interview ও DSA•৩ মিনিটে পড়া