System Design roadmap: ডেভেলপারদের জন্য বিনামূল্যের সিরিজ

একদম গোড়া থেকে system design শেখার বিনামূল্যের সিরিজ। এখানে শুরু করুন, তারপর পর্বগুলো ক্রমে পড়ুন। প্রতি সপ্তাহে নতুন পর্ব যোগ হয়।

যুক্ত স্টপসহ একটি roadmap

System design হলো এমনভাবে software সিস্টেম পরিকল্পনা করার দক্ষতা, যাতে বেশি মানুষ ব্যবহার করলেও সেটি দ্রুত, নির্ভরযোগ্য ও সাশ্রয়ী থাকে। ইন্টারভিউতে এটি জিজ্ঞেস করা হয়, কিন্তু আসল প্রোডাক্ট তার প্রথম বড় দিন টিকবে কি না সেটাও এটিই ঠিক করে।

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

পর্ব ১: গোড়ার কথা

  1. Scalability: vertical বনাম horizontal scaling
  2. Latency বনাম throughput: সিস্টেম ডিজাইনের দুই সংখ্যা
  3. CAP theorem: সহজ ভাষায়, উদাহরণসহ
  4. Load balancer: কী কাজ করে ও algorithm বাছাই
  5. Caching strategy: cache-aside, write-through, write-back
  6. CDN কী এবং কীভাবে সাইট দ্রুত করে
  7. SQL বনাম NoSQL: কোন database বাছবেন
  8. Database sharding: data একাধিক server-এ ভাগ করা
  9. Database replication: leader-follower, lag ও failover
  10. Consistent hashing: server বাড়ালে সব নড়ে না কেন
  11. Rate limiting: token bucket, sliding window ও বানানোর উপায়
  12. Message queue: কেন লাগে এবং কীভাবে ফেল করে
  13. API gateway: microservice সিস্টেমের সদর দরজা
  14. Idempotency: retry নিরাপদ করার উপায়
  15. Back-of-the-envelope estimation: ডিজাইনের আগে হিসাব

পর্ব ২: building block

  1. Redis internals: কেন দ্রুত, কীভাবে নিরাপদে ব্যবহার করবেন
  2. Apache Kafka: topic, partition ও consumer group
  3. RabbitMQ: exchange, queue ও routing
  4. Elasticsearch ও full-text search: inverted index কীভাবে কাজ করে
  5. Object storage (S3-ধাঁচ): বড় পরিসরে ফাইল রাখা
  6. WebSocket বনাম Server-Sent Events বনাম long polling
  7. gRPC বনাম REST: কোন API স্টাইল বাছবেন
  8. Bloom filter: অল্প memory-তে সদস্যপদ যাচাই
  9. Leader election: distributed সিস্টেম কীভাবে একজন নেতা বাছে
  10. Distributed lock: কীভাবে বানাবেন ও কেন কঠিন
  11. Service discovery: service-রা কীভাবে একে অপরকে খোঁজে
  12. CQRS: read আর write আলাদা করা
  13. Event sourcing: শুধু বর্তমান অবস্থা নয়, event রাখুন
  14. Saga pattern: microservice জুড়ে transaction

পর্ব ৩: case study

  1. URL shortener ডিজাইন: requirement থেকে scale
  2. Pastebin ডিজাইন: টেক্সট রাখা ও শেয়ার করা
  3. WhatsApp-এর মতো chat অ্যাপ ডিজাইন
  4. Instagram বা Facebook-এর মতো news feed ডিজাইন
  5. YouTube-এর মতো video streaming সেবা ডিজাইন
  6. Uber-এর মতো ride-sharing সেবা ডিজাইন
  7. Mobile wallet-এর জন্য payment সিস্টেম ডিজাইন
  8. Notification সিস্টেম ডিজাইন: push, SMS ও email
  9. Search autocomplete (typeahead) ডিজাইন
  10. Google Drive-এর মতো file storage ও sync ডিজাইন
  11. Double booking ছাড়া ticket booking সিস্টেম ডিজাইন
  12. Web crawler ডিজাইন
  13. E-commerce checkout সিস্টেম ডিজাইন
  14. Flash sale সিস্টেম ডিজাইন: ভিড়ে টিকে থাকা
  15. Coding contest-এর online judge ডিজাইন
  16. Ad click aggregation সিস্টেম ডিজাইন

পর্ব ৪: infrastructure ডিজাইন

  1. Distributed unique ID generator ডিজাইন (Snowflake)
  2. Distributed cache ডিজাইন
  3. Distributed key-value store ডিজাইন (Dynamo-ধাঁচ)
  4. Metrics monitoring ও alerting সিস্টেম ডিজাইন

সিরিজ কীভাবে ব্যবহার করবেন

  • নতুন হলে: আগে ১ থেকে ৪ নম্বর পর্ব পড়ুন, তারপর বাকিগুলো ক্রমে।
  • ইন্টারভিউয়ের প্রস্তুতি হলে: estimation পর্ব শেষ করুন, তারপর এই building block দিয়ে কাগজে সিস্টেমের নকশা এঁকে অনুশীলন করুন।
  • প্রোডাক্ট বানালে: পরের feature ডিজাইনের সময় caching, replication ও rate limiting পর্ব হাতের কাছে রাখুন।

এরপর কী আসছে

আরও পর্ব পরিকল্পনায় আছে: আরও case study, পরিচিত সিস্টেম কীভাবে বিবর্তিত হয়েছে, এবং failure, security ও operations (postmortem, zero trust, DDoS প্রতিরক্ষা)। সিরিজ প্রতি সপ্তাহে বাড়ে।

কোনো বিষয় চান? যোগাযোগ পাতায় জানান।

আরও পড়ুন

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

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

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