বড় বড় কোম্পানি যেমন Facebook, YouTube, Uber কীভাবে কোটি কোটি মানুষকে একসাথে সেবা দেয়? এই প্রশ্নের উত্তর খুঁজতে গেলে উঠে আসে সিস্টেম ডিজাইন কনসেপ্টের। আমরা সিস্টেম ডিজাইনের প্রতিটি কনসেপ্ট সহজ বাংলায়, ধাপে ধাপে শিখব।
ধরুন আপনি একটা টি-স্টল খুলবেন। শুধু একজন গ্রাহকের জন্য না, প্রতিদিন হাজার হাজার মানুষের জন্য। তখন আপনাকে অনেক কিছু ভাবতে হবে - কর্মী কতজন? কোথায় বসার জায়গা হবে? অর্ডার কীভাবে নেওয়া হবে?
সিস্টেম ডিজাইন ঠিক এই কাজটাই করে, তবে সফটওয়্যারের জন্য। যখন আমরা একটা অ্যাপ বা ওয়েবসাইট বানাই যা লক্ষ লক্ষ মানুষ ব্যবহার করবে, তখন আমাদের সিদ্ধান্ত নিতে হয়ঃ
কোথায় ডেটা রাখব? কীভাবে কুইক রেসপন্স দেব? সার্ভার একটা থাকলে যথেষ্ট, নাকি অনেকগুলো? একটা সার্ভার বন্ধ হয়ে গেলে কী হবে? এই সব প্রশ্নের উত্তর খোঁজাই হলো সিস্টেম ডিজাইন।
যেকোনো সিস্টেম ডিজাইন করার সময় এই পাঁচটি বিষয় মাথায় রাখতে হয়।
User যখন 100 থেকে 10 million হয়ে যাবে, তখনো কি system টা কাজ করবে?
একটা request এর response দিতে system কতটুকু সময় নেয়?
কিছু ভচকায় গেলেও কি system টা up থাকে?
সবাই কি সবসময় একই data দেখে?
ভবিষ্যতে অন্য কেউ কি এই system টা বুঝে change করতে পারবে?
একটা কথা সমসময় মাথায় রাখবেনঃ