মন্টু মিয়াঁর সিস্টেম ডিজাইন

সিস্টেম ডিজাইন আবার কী?

মন্টু মিয়াঁ বল্টু ভাইয়ের কথা শুনে কিছুটা ভ্যাবাচ্যাকা খেলেন। মনে মনে ভাবলেন, "সিস্টেম ডিজাইন আবার কী? আমি তো কোড লিখতে জানি, ডাটাবেস জানি, সার্ভারে কোড আপলোড করতে জানি। এর বাইরে আবার কী ডিজাইন?"

আসলে মন্টু মিয়াঁর দোষ নেই। আমাদের অনেকেরই ধারণা, ভালো কোড লিখতে পারাটাই সফটওয়্যার ইঞ্জিনিয়ারিংয়ের শেষ কথা। কিন্তু বাস্তবতা হলো, কোড লেখা যদি হয় 'ইট গাঁথা', তবে সিস্টেম ডিজাইন হলো পুরো বিল্ডিংয়ের 'আর্কিটেকচারাল ম্যাপ' বা নকশা তৈরি করা।

সহজ একটা উদাহরণ দেওয়া যাক।

ধরুন, আপনি পাড়ার মোড়ে একটা ছোট চায়ের দোকান (টং ঘর) দেবেন। এর জন্য আপনার খুব বেশি পরিকল্পনার দরকার নেই। কিছু বাঁশ, কাঠ, একটা কেটলি আর কিছু কাপ পিরিচ হলেই চলে। আপনি একাই চা বানাবেন, একাই টাকা রাখবেন। কাস্টমার আসবে ২-৩ জন, খুব বেশি হলে ১০ জন। কোনো সমস্যা নেই।

কিন্তু আপনি যদি এখন চিন্তা করেন, "আমি সারা দেশে 'স্টার কাবাব' বা 'কেএফসি'-র মতো ১০০টা ব্রাঞ্চ খুলব এবং প্রতিদিন লক্ষ লক্ষ মানুষকে খাবার সার্ভ করব”, তখন কি ওই বাঁশ আর কাঠ দিয়ে কাজ হবে? তখন কি আপনি একা সব সামলাতে পারবেন?

অবশ্যই না। তখন আপনাকে ভাবতে হবে: ১. বিল্ডিংয়ের স্ট্রাকচার কেমন হবে যাতে হাজার মানুষ ঢুকলে ধসে না পড়ে? ২. কিচেন কোথায় হবে যাতে দ্রুত খাবার সাপ্লাই দেওয়া যায়? ৩. কাঁচামাল কোন রাস্তা দিয়ে আসবে আর ময়লা কোন দিক দিয়ে বের হবে? ৪. আগুন লাগলে বের হওয়ার রাস্তা কী?

Montu's Tong vs Star Kabab

সফটওয়্যার জগতেও ব্যাপারটা ঠিক তাই।

সিস্টেম ডিজাইন হলো: একটি সিস্টেম বা সফটওয়্যার তৈরি করার আগে তার আর্কিটেকচার, মডিউল, ইন্টারফেস এবং ডাটা ফ্লো কেমন হবে, তার সামগ্রিক পরিকল্পনা বা ব্লু-প্রিন্ট তৈরি করার প্রক্রিয়া।

মন্টু মিয়াঁর 'বিড়ালটিউব' যখন ছোট ছিল (সেই চায়ের দোকানের মতো), তখন সাধারণ একটা সার্ভার আর ডাটাবেস দিয়েই দিব্যি চলছিল। কিন্তু যখনই লাখ লাখ ইউজার (বিশাল রেস্টুরেন্টের কাস্টমার) আসতে শুরু করল, তখনই দরকার পড়ল সঠিক পরিকল্পনার। কোন ডাটাবেস ব্যবহার করলে দ্রুত সার্চ করা যাবে, লোড বাড়লে কীভাবে সার্ভার অটোমেটিক বেড়ে যাবে, কিংবা আমেরিকার ইউজার আর বাংলাদেশের ইউজার দুজনই কীভাবে সমান স্পিডে ভিডিও দেখবে, এই জটিল প্রশ্নগুলোর উত্তর ও সমাধান বের করাই হলো সিস্টেম ডিজাইন।

এক কথায়, সিস্টেম ডিজাইন হলো সেই আর্ট, যা একটা সাধারণ কোডকে বিশাল স্কেলেবল (Scalable) এবং নির্ভরযোগ্য (Reliable) সিস্টেমে পরিণত করে।

মন্টু মিয়াঁ এবার নড়েচড়ে বসলেন। তিনি বুঝতে পারলেন, এতদিন তিনি শুধু ইটই গেঁথেছেন, কিন্তু ইমারতের নকশাটাই করা হয়নি। এবার তাকে আর্কিটেক্ট হতে হবে!