শুরু করি 📖 ৮ মিনিট পড়া 📝 ২০টি কুইজ

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

এই কোর্সের সবচেয়ে গুরুত্বপূর্ণ প্রশ্ন দিয়ে শুরু করি।

📝 কুইজে যান

একটি কথা ভাবুন — যখন আপনি Facebook-এ একটা ছবি পোস্ট করেন, সেটা কীভাবে কয়েক সেকেন্ডের মধ্যে দুনিয়ার যেকোনো প্রান্ত থেকে দেখা যায়? যখন আপনি Pathao-তে রাইড বুক করেন, কীভাবে অ্যাপ আপনার আশেপাশের সব ড্রাইভার দেখাতে পারে? যখন WhatsApp-এ কোটি কোটি মেসেজ একসাথে যায়, কীভাবে কোনোটাই হারায় না?

এই প্রশ্নগুলোর উত্তরই হলো — সিস্টেম ডিজাইন

সংজ্ঞা: সিস্টেম ডিজাইন আসলে কী

সিস্টেম ডিজাইন হলো সেই প্রক্রিয়া, যেখানে আমরা একটি সিস্টেমের আর্কিটেকচার, ইন্টারফেস, এবং ডেটা এমনভাবে সাজাই — যা নির্দিষ্ট প্রয়োজন মেটাতে সক্ষম। সহজ কথায়, সিস্টেম ডিজাইন হলো সফটওয়্যারের "নকশা আঁকা"

একজন সিভিল ইঞ্জিনিয়ার যেমন একটি বিল্ডিংয়ের নকশা বানান — কোথায় বীম থাকবে, কোথায় লিফট, প্লাম্বিং কীভাবে যাবে — ঠিক তেমনি একজন সফটওয়্যার ইঞ্জিনিয়ারকে সিদ্ধান্ত নিতে হয়:

  • ডেটা কোথায় ও কীভাবে স্টোর হবে?
  • সার্ভার কতগুলো লাগবে, কোথায় বসবে?
  • একটি অনুরোধ (request) কোন পথে যাবে?
  • লক্ষ লক্ষ মানুষ একসাথে ব্যবহার করলে কীভাবে সামলাবে?
  • একটা সার্ভার বন্ধ হলে সিস্টেম থামবে নাকি চলবে?
💡 মনে রাখবেন: সিস্টেম ডিজাইন কোনো একটি লাইব্রেরি বা ফ্রেমওয়ার্ক শেখা নয়। এটি একটি চিন্তার দক্ষতা — কীভাবে বড় সমস্যাকে ছোট ছোট অংশে ভাগ করে সমাধান করতে হয়।

কেন সিস্টেম ডিজাইন এত গুরুত্বপূর্ণ?

সিস্টেম ডিজাইনের গুরুত্ব বুঝতে একটা গল্প শোনাই।

২০১০ সালে Twitter এর একটি বিখ্যাত সমস্যা ছিল — প্রায়ই সাইট ডাউন হয়ে যেত। ব্যবহারকারীরা একটি লোগো দেখতে পেতেন: "Fail Whale"। কেন? কারণ ছোট ব্যবহারকারীর জন্য বানানো প্রাথমিক ডিজাইন হঠাৎ কোটি কোটি ব্যবহারকারীকে সামলাতে পারছিল না। পরে তারা সিস্টেমকে নতুন করে ডিজাইন করে — সেটাই Twitter-কে আজকের অবস্থানে এনেছে।

সিস্টেম ডিজাইন আমাদের সাহায্য করে:

  • ব্যবসায়িক লক্ষ্য পূরণ করতে — সঠিক সিদ্ধান্ত নিলে ব্যবহারকারী সন্তুষ্ট থাকেন।
  • আগে থেকে সমস্যা চিহ্নিত করতে — কোড লেখার আগেই বোঝা যায় কোথায় বটলনেক আসতে পারে।
  • খরচ কমাতে — অপ্রয়োজনীয় সার্ভার, ডেটাবেস, বা সার্ভিস এড়াতে।
  • পরিবর্তন সহজ করতে — ভালো ডিজাইন থাকলে নতুন ফিচার যোগ করা সহজ হয়।
  • স্কেল করতে — ১০ জন থেকে ১ কোটি ব্যবহারকারী পর্যন্ত যাওয়ার পথ পরিষ্কার থাকে।
⚠️ সাবধান: সিস্টেম ডিজাইনের ভুল সিদ্ধান্ত পরে শুধরানো অনেক কঠিন ও ব্যয়বহুল। কোড রিফ্যাক্টর করা সহজ, কিন্তু পুরো ডেটাবেস স্কিমা বদলানো প্রায় অসম্ভব। তাই শুরুতেই ভাবা গুরুত্বপূর্ণ।

কাদের সিস্টেম ডিজাইন শেখা দরকার?

অনেকে ভাবেন সিস্টেম ডিজাইন শুধু সিনিয়র ইঞ্জিনিয়ারদের জন্য। আসলে তা নয়। এটি জরুরি:

🎓 যারা চাকরি খুঁজছেন

  • FAANG, প্রোডাক্ট কোম্পানি — সিস্টেম ডিজাইন ইন্টারভিউ মাস্ট
  • সিনিয়র পজিশনের জন্য বাধ্যতামূলক
  • স্যালারি বাড়ানোর সবচেয়ে শক্তিশালী হাতিয়ার

👨‍💻 যারা ইতিমধ্যে কাজ করছেন

  • প্রোডাক্ট স্কেলিং সিদ্ধান্ত নিতে
  • আর্কিটেকচার রিভিউ-তে অংশ নিতে
  • টিম-লিড বা আর্কিটেক্ট হতে

সিস্টেম ডিজাইনের চিন্তাভাবনা: একটি উদাহরণ

ধরা যাক, আপনাকে বলা হলো একটি ই-কমার্স সাইট বানাতে। শুরুতে আপনি ভাববেন:

  1. প্রয়োজন বোঝা: কতজন ব্যবহারকারী? কোন কোন ফিচার? পেমেন্ট সিস্টেম কী হবে?
  2. উচ্চ-স্তরের ডিজাইন: ফ্রন্টএন্ড, ব্যাকএন্ড, ডেটাবেস — এগুলো কীভাবে কথা বলবে?
  3. ডেটা মডেল: ইউজার, প্রোডাক্ট, অর্ডার, কার্ট — কীভাবে স্টোর হবে?
  4. স্কেল চিন্তা: ১০ জন থেকে ১ লাখ ব্যবহারকারীতে গেলে কী বদলাতে হবে?
  5. সমস্যা চিহ্নিত: পেমেন্টে ফেইলিওর হলে? সার্ভার ডাউন হলে? ডেটাবেস ধীর হলে?

এই কোর্সে আমরা প্রতিটি ধাপ একে একে শিখব।

এই কোর্সে যা শিখবেন

এই কোর্স ৫টি অংশে সাজানো:

Part 1 · নেটওয়ার্কিং বেসিকস
IP, DNS, TCP/UDP, OSI Model, লোড ব্যালেন্সিং, ক্যাশিং, CDN, প্রক্সি — যেগুলো ছাড়া কোনো সিস্টেম দাঁড়াবে না।
Part 2 · ডেটাবেস
SQL vs NoSQL, রেপ্লিকেশন, শার্ডিং, ACID, BASE, CAP থিওরেম, কনসিস্টেন্ট হ্যাশিং।
Part 3 · সিস্টেম আর্কিটেকচার
মাইক্রোসার্ভিস, মেসেজ কিউ, Pub-Sub, Event-Driven, CQRS, REST/GraphQL/gRPC।
Part 4 · রিলায়েবিলিটি ও সিকিউরিটি
সার্কিট ব্রেকার, রেট লিমিটিং, OAuth, SSO, SSL/TLS, ডিজাস্টার রিকভারি।
Part 5 · কেস স্টাডি ও ইন্টারভিউ
URL Shortener, WhatsApp, Twitter, Netflix, Uber-এর সিস্টেম ডিজাইন। সাথে ৫০টি ইন্টারভিউ প্রশ্ন।

শুরুতেই যেসব ভুল এড়াবেন

  1. সব শেখার চেষ্টা একসাথে: ধাপে ধাপে এগোন। প্রতি চ্যাপ্টার শেষে কুইজ দিন।
  2. মুখস্থ করার চেষ্টা: সিস্টেম ডিজাইন মুখস্থের বিষয় নয় — বুঝে চিন্তা করার বিষয়।
  3. বাস্তব উদাহরণ এড়িয়ে যাওয়া: প্রতিটা কনসেপ্ট শেখার সময় ভাবুন: "এটা কোথায় ব্যবহার হবে?"
  4. প্র্যাকটিস না করা: পড়ে বুঝা এক, আর কাগজে নকশা আঁকা আরেক।

📌 চ্যাপ্টার সারমর্ম

  • সিস্টেম ডিজাইন হলো সফটওয়্যারের আর্কিটেকচার পরিকল্পনা।
  • এটি স্কেল, পারফরম্যান্স, রিলায়েবিলিটি, ও খরচ — সব কিছুর সিদ্ধান্ত প্রভাবিত করে।
  • ভুল সিদ্ধান্ত পরে শুধরানো কঠিন; তাই শুরুতেই গুরুত্বপূর্ণ।
  • চাকরির ইন্টারভিউ ও ক্যারিয়ার অগ্রগতির জন্য অপরিহার্য।
  • মুখস্থ নয় — চিন্তা ও বাস্তব প্রয়োগ গুরুত্বপূর্ণ।