সিস্টেম ডিজাইন ইন্টারভিউ হল শীর্ষ প্রযুক্তি কোম্পানিতে সিনিয়র ইঞ্জিনিয়ারিং ভূমিকার জন্য গেটকিপার। তারা অস্পষ্ট প্রয়োজনীয়তার অধীনে স্কেলযোগ্য, নির্ভরযোগ্য সিস্টেম ডিজাইন করার আপনার ক্ষমতা পরীক্ষা করে। এই নির্দেশিকাটি 2026-এ সেগুলির জন্য আপনার প্রয়োজনীয় কাঠামো, নিদর্শন এবং বাস্তব উদাহরণগুলি কভার করে৷
📋 Table of Contents
ইন্টারভিউ ফ্রেমওয়ার্ক
প্রতিটি সিস্টেম ডিজাইন ইন্টারভিউ একই কাঠামো অনুসরণ করে। এই 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)
- ইউআরএল সংক্ষিপ্তকারী
- টুইটার/সামাজিক ফিড
- হোয়াটসঅ্যাপ/মেসেঞ্জার
- ইনস্টাগ্রাম/ফটো শেয়ারিং
- ইউটিউব/ভিডিও স্ট্রিমিং
- উবার/রাইড শেয়ারিং
- এয়ারবিএনবি/বুকিং সিস্টেম
- Google অনুসন্ধান
- রেট লিমিটার
- বিতরণকৃত ক্যাশে (Redis)
- বিজ্ঞপ্তি সিস্টেম
- ওয়েব ক্রলার
- মেট্রিক্স/মনিটরিং (প্রমিথিউস)
- বিতরণ করা বার্তা সারি (কাফকা)
সিস্টেম ডিজাইন ইন্টারভিউ পরিষ্কার যোগাযোগ, কাঠামোগত চিন্তা, এবং নিখুঁত উত্তরগুলির উপর ট্রেড-অফের সচেতনতাকে পুরস্কৃত করে। প্রতি সপ্তাহে স্ক্র্যাচ থেকে 2-3টি সিস্টেম ডিজাইন করার অনুশীলন করুন এবং একটি বাক্স আঁকার আগে সর্বদা স্পষ্ট প্রশ্ন জিজ্ঞাসা করুন।
🔗 Share this article
✍️ Leave a Comment