🌐 Detecting your location…
📢 Advertisement — Configure AdSense in Appearance → Customize → AdSense Settings

সিস্টেম ডিজাইন ইন্টারভিউ গাইড 2026: ফ্রেমওয়ার্ক, প্যাটার্নস এবং কেস স্টাডিজ

⏱️3 min read  ·  517 words

সিস্টেম ডিজাইন ইন্টারভিউ হল শীর্ষ প্রযুক্তি কোম্পানিতে সিনিয়র ইঞ্জিনিয়ারিং ভূমিকার জন্য গেটকিপার। তারা অস্পষ্ট প্রয়োজনীয়তার অধীনে স্কেলযোগ্য, নির্ভরযোগ্য সিস্টেম ডিজাইন করার আপনার ক্ষমতা পরীক্ষা করে। এই নির্দেশিকাটি 2026-এ সেগুলির জন্য আপনার প্রয়োজনীয় কাঠামো, নিদর্শন এবং বাস্তব উদাহরণগুলি কভার করে৷

ইন্টারভিউ ফ্রেমওয়ার্ক

প্রতিটি সিস্টেম ডিজাইন ইন্টারভিউ একই কাঠামো অনুসরণ করে। এই 45-মিনিট ফ্রেমওয়ার্ক ব্যবহার করুন:

  • 1-5 মিনিট– প্রয়োজনীয়তা স্পষ্ট করুন, সুযোগ সংজ্ঞায়িত করুন
  • 5-10 মিনিট– অনুমান স্কেল (ব্যবহারকারী, QPS, স্টোরেজ)
  • 10-20 মিনিট– উচ্চ-স্তরের নকশা, মূল উপাদান
  • 20-35 মিনিট– সমালোচনামূলক উপাদানগুলিতে গভীর ডুব দিন
  • 35-45 মিনিট— স্কেল, বাধা, ট্রেড-অফ

ধাপ 1: প্রয়োজনীয়তা স্পষ্ট করুন

এই প্রশ্নগুলি জিজ্ঞাসা করার আগে কখনই ডিজাইন করা শুরু করবেন না:

  • ব্যবহারকারী কারা? তাদের কি করতে হবে?
  • মূল বৈশিষ্ট্যগুলি কী বনাম সুন্দর-থাকতে?
  • কতজন ব্যবহারকারী? পড়া-ভারী না লিখতে-ভারী?
  • প্রয়োজনীয় লেটেন্সি কি? ধারাবাহিকতা প্রয়োজন কি?
  • প্রত্যাশিত ডেটা ভলিউম কত? কতক্ষণ ডেটা রাখা হয়?

ধাপ 2: ক্ষমতা অনুমান

মোটামুটি গণিত যা ইঞ্জিনিয়ারিং পরিপক্কতার সংকেত দেয়:

Example: Design Twitter-like feed

Users: 500M total, 100M daily active (DAU)
Tweets: 100M DAU × 5 tweets/day = 500M tweets/day
Reads: 100M DAU × 100 timeline views/day = 10B reads/day

QPS (writes): 500M / 86400 ≈ 5,800 tweets/sec (peak 3x = 17,000)
QPS (reads): 10B / 86400 ≈ 115,000 reads/sec (peak 3x = 345,000)

Storage (tweets):
- 500M tweets/day × 280 bytes = 140 GB/day
- 5 years = 140 × 365 × 5 ≈ 255 TB of tweet data

Media storage: 10% of tweets have images (100MB avg)
50M tweets/day × 100KB thumbnail = 5 TB/day thumbnail storage

মূল নকশা নিদর্শন

1. ডাটাবেস নির্বাচন

কাজের জন্য সঠিক ডাটাবেস নির্বাচন করুন:

  • রিলেশনাল (PostgreSQL, MySQL)— ACID লেনদেন, জটিল প্রশ্ন, আর্থিক তথ্য
  • নথি (মঙ্গোডিবি)— নমনীয় স্কিমা, নেস্টেড ডেটা, বিষয়বস্তু পরিচালনা
  • কী-মান (Redis, DynamoDB)— ক্যাশিং, সেশন স্টোরেজ, O(1) লুকআপ
  • প্রশস্ত-কলাম (ক্যাসান্ড্রা, এইচবেস)— সময়-সিরিজ, বিশাল আকারে লিখুন-ভারী
  • গ্রাফ (Neo4j)— সামাজিক গ্রাফ, সুপারিশ ইঞ্জিন
  • অনুসন্ধান (ইলাস্টিক সার্চ)— পূর্ণ-পাঠ্য অনুসন্ধান, লগ বিশ্লেষণ

2. ক্যাশিং কৌশল

Cache-Aside (Lazy Loading):
  App → cache miss → DB → write to cache → return

Write-Through:
  App → write to cache AND DB simultaneously

Write-Back (Write-Behind):
  App → write to cache → async write to DB (faster, risk data loss)

Read-Through:
  Cache handles DB fetching automatically (used by Redis+Memcached)

Cache Eviction Policies:
  LRU  — Least Recently Used (most common)
  LFU  — Least Frequently Used
  TTL  — Time-To-Live expiry

3. লোড ব্যালেন্সিং

সার্ভার জুড়ে ট্রাফিক বিতরণ করুন:

  • রাউন্ড রবিন— সমান বন্টন, সরল
  • সর্বনিম্ন সংযোগ– সবচেয়ে কম সক্রিয় সংযোগ সহ সার্ভারের রুট
  • আইপি হ্যাশ— ক্লায়েন্ট আইপি ভিত্তিক স্টিকি সেশন
  • ওজনযুক্ত– সার্ভার ক্ষমতার উপর ভিত্তি করে বিতরণ

টুলস: AWS ALB, Nginx, HAProxy, Envoy, Cloudflare

4. ডাটাবেস স্কেলিং

Vertical Scaling: Bigger machine (CPU, RAM, SSD)
  Pros: Simple, no code changes
  Cons: Limits, single point of failure, expensive

Read Replicas: Primary handles writes, replicas handle reads
  Pros: Read scalability, disaster recovery
  Cons: Replication lag (eventual consistency)

Sharding (Horizontal Partitioning):
  Split data across multiple DBs by key

  Hash-based: shard = hash(user_id) % num_shards
    Pros: Even distribution
    Cons: Hard to add shards (resharding)

  Range-based: shard by date range or ID range
    Pros: Range queries efficient, easy to add new shards
    Cons: Hot spots (most recent shard gets all writes)

  Directory-based: lookup table maps keys to shards
    Pros: Flexible
    Cons: Lookup overhead, single point of failure

কেস স্টাডি: ডিজাইন ইউআরএল শর্টনার (bit.ly)

প্রয়োজনীয়তা

কার্যকরী: URL সংক্ষিপ্ত করুন, পরিদর্শনে পুনঃনির্দেশ, কাস্টম উপনাম, মেয়াদ শেষ
অ-কার্যকর: 100ms রিড লেটেন্সি, 100M URL/দিন লেখা, 10B রিডস/দিন

স্কেল অনুমান

লিখেছেন: 100M/দিন = 1,200 QPS (শিখর 3,600)
রিডস: 10B/দিন = 115,000 QPS (শিখর 345,000) —রিড-হেভি 100:1
সঞ্চয়স্থান: 100M × 500 বাইট = 50 GB/day × 5 বছর = ~90 TB

উচ্চ-স্তরের ডিজাইন

Client → Load Balancer → Web Servers → Cache (Redis)
                                          ↓ cache miss
                                       Database (PostgreSQL + replicas)

URL Shortening API:
  POST /api/shorten
  { "url": "https://very-long-url.com/path", "alias": "mylink", "expires_at": "2027-01-01" }
  → { "short_url": "https://bit.ly/abc123" }

Redirect API:
  GET /{short_code}
  → 301/302 redirect to original URL

Key Generation:
  Option 1: Base62 hash of MD5(url) — take first 7 chars
  Option 2: Counter + Base62 encode (guaranteed unique)
  Option 3: Pre-generate keys in KGS (Key Generation Service)

ডাটাবেস স্কিমা

CREATE TABLE urls (
  id           BIGSERIAL PRIMARY KEY,
  short_code   VARCHAR(10) UNIQUE NOT NULL,
  original_url TEXT NOT NULL,
  user_id      BIGINT,
  created_at   TIMESTAMP DEFAULT NOW(),
  expires_at   TIMESTAMP,
  click_count  BIGINT DEFAULT 0
);

CREATE INDEX idx_short_code ON urls(short_code);
CREATE INDEX idx_user_id ON urls(user_id);

কেস স্টাডি: একটি চ্যাট সিস্টেম ডিজাইন করুন (হোয়াটসঅ্যাপ)

মূল চ্যালেঞ্জ

  • রিয়েল-টাইম ডেলিভারি— স্থায়ী সংযোগের জন্য ওয়েবসকেট
  • মেসেজ অর্ডারিং– প্রতি কথোপকথনের ক্রম সংখ্যা
  • অফলাইন ডেলিভারি– ব্যবহারকারী পুনরায় সংযোগ না করা পর্যন্ত বার্তা সংরক্ষণ করুন
  • রসিদ পড়ুন– বিতরণ/পড়া অবস্থা
  • গ্রুপ চ্যাট– একাধিক ব্যবহারকারীর কাছে ফ্যান-আউট

Architecture:

Client ←→ WebSocket Gateway (stateful) ←→ Message Service
                                              ↓
                                    Message Queue (Kafka)
                                              ↓
                                    Message Store (Cassandra)
                                    - Partitioned by conversation_id
                                    - Ordered by timestamp within partition

Message Flow:
1. User A sends message → WebSocket Gateway (Server A)
2. Gateway publishes to Kafka topic
3. Message Service writes to Cassandra
4. User B's WebSocket Gateway subscribes and delivers
5. If User B offline → push notification via FCM/APNs

Schema (Cassandra - wide column):
  messages_by_conversation
    conversation_id (partition key)
    message_id (clustering key, time-ordered)
    sender_id, content, message_type, created_at

জানতে কী ট্রেড-অফ

  • এসকিউএল বনাম NoSQL— ACID বনাম স্কেল, স্কিমা বনাম নমনীয়তা
  • ধারাবাহিকতা বনাম প্রাপ্যতা— CAP উপপাদ্য (সামাজিক জন্য AP পছন্দ করুন, ব্যাঙ্কিংয়ের জন্য CP)
  • টান বনাম ধাক্কা— পড়ার জন্য ফ্যান-আউট বনাম ফিডের জন্য লিখতে ফ্যান-আউট৷
  • মনোলিথ বনাম মাইক্রোসার্ভিসেস— সরলতা বনাম স্কেলেবিলিটি/দলের স্বায়ত্তশাসন
  • সিঙ্ক্রোনাস বনাম অ্যাসিঙ্ক— বিলম্ব বনাম থ্রুপুট/স্থিতিস্থাপকতা
  • শক্তিশালী বনাম ঘটনাগত ধারাবাহিকতা– সঠিকতা বনাম প্রাপ্যতা

সাধারণ সিস্টেম ডিজাইন বিষয় (2026)

  1. ইউআরএল সংক্ষিপ্তকারী
  2. টুইটার/সামাজিক ফিড
  3. হোয়াটসঅ্যাপ/মেসেঞ্জার
  4. ইনস্টাগ্রাম/ফটো শেয়ারিং
  5. ইউটিউব/ভিডিও স্ট্রিমিং
  6. উবার/রাইড শেয়ারিং
  7. এয়ারবিএনবি/বুকিং সিস্টেম
  8. Google অনুসন্ধান
  9. রেট লিমিটার
  10. বিতরণকৃত ক্যাশে (Redis)
  11. বিজ্ঞপ্তি সিস্টেম
  12. ওয়েব ক্রলার
  13. মেট্রিক্স/মনিটরিং (প্রমিথিউস)
  14. বিতরণ করা বার্তা সারি (কাফকা)

সিস্টেম ডিজাইন ইন্টারভিউ পরিষ্কার যোগাযোগ, কাঠামোগত চিন্তা, এবং নিখুঁত উত্তরগুলির উপর ট্রেড-অফের সচেতনতাকে পুরস্কৃত করে। প্রতি সপ্তাহে স্ক্র্যাচ থেকে 2-3টি সিস্টেম ডিজাইন করার অনুশীলন করুন এবং একটি বাক্স আঁকার আগে সর্বদা স্পষ্ট প্রশ্ন জিজ্ঞাসা করুন।

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇬🇧 English🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা