Part 1 · নেটওয়ার্কিং 📖 ১৩ মিনিট পড়া 📝 ২০টি কুইজ

Scalability

১০০ user থেকে ১০০ মিলিয়ন user — কীভাবে সিস্টেম বাড়ে?

📝 কুইজে যান

আপনি একটি ছোট চা-দোকান খুললেন — দিনে ৫০ কাপ বিক্রি। কয়েক মাস পর ৫০০ কাপ — আপনি নিজে আর কুলিয়ে উঠছেন না। কী করবেন? নিজে আরও দ্রুত কাজ করবেন (vertical), নাকি ২ জন লোক রাখবেন (horizontal)? Software-এও একই গল্প।

Scalability কী?

Scalability = একটি সিস্টেমের ক্ষমতা যেটা বর্ধিত load (user, data, transaction) handle করতে পারে — performance ভেঙে না পড়ে।

💡 সহজ মাপকাঠি: ১০× user বাড়লে — কি ১০× hardware লাগে, না কম? কম লাগলে scalable। বেশি লাগলে diseconomies of scale।

Vertical vs Horizontal Scaling

Vertical Scaling (Scale Up)

  • একই server-এ বেশি CPU, RAM, storage
  • সরল — code পরিবর্তন লাগে না
  • সীমা: hardware-এর সর্বোচ্চ
  • Single point of failure
  • খরচ exponentially বাড়ে
  • উদাহরণ: 4-core → 32-core CPU

Horizontal Scaling (Scale Out)

  • একাধিক server যোগ
  • প্রায় unlimited scale
  • HA সহজ
  • Code stateless হতে হবে
  • Complexity বাড়ে — distributed system
  • উদাহরণ: ১ server → ১০০ server
📝 আজকের বাস্তবতা: Cloud-এ horizontal scaling সবসময় preferred — auto-scaling, redundancy, cost-effective। Vertical scale only when refactor cost > hardware cost।

Scale Cube — তিন dimension-এ scaling

The Art of Scalability বইয়ে Martin Abbott-এর model:

X-axis: Horizontal duplication

একই সার্ভারের multiple copy। Load balancer দিয়ে traffic distribute। সবচেয়ে সহজ।

Y-axis: Functional decomposition

Application-কে service-এ ভাঙা। Microservices। User service, Order service, Payment service আলাদা।

Z-axis: Data partitioning

Data shard করা। User ID দিয়ে DB-কে ১০ shard। প্রতিটি shard আলাদা server।

কোথায় bottleneck?

  • CPU: Compute-heavy operation (image processing, ML)। Solution: optimize, parallelize, scale out।
  • Memory: Cache full, GC pressure। Solution: bigger server, distributed cache।
  • Disk I/O: Database read/write slow। Solution: SSD, indexing, caching।
  • Network: Bandwidth saturate। Solution: CDN, compression।
  • Database: সাধারণত প্রথম bottleneck। Solution: replication, sharding, caching।

Scalability Patterns

Stateless Architecture

Server-এ session রাখবেন না। Redis/JWT-এ রাখুন। Server interchangeable।

Caching

Read-heavy load DB-তে না গিয়ে cache থেকে — DB protect।

Asynchronous Processing

Heavy task background queue-এ। User-কে সাথে সাথে response।

Database Replication

Read replica দিয়ে read load distribute। Write master-এ।

Database Sharding

Data partition — প্রতিটি shard আলাদা DB-তে।

CDN

Static asset offload — origin-এ load কমে।

Microservices

Independent scaling — শুধু hot service scale করুন।

Capacity Planning

সঠিকভাবে scale করতে আগে measure প্রয়োজন:

  • QPS (Queries per Second): ১০০M user × ১০ action/day = ~১২K QPS।
  • Storage: User × data per user × growth।
  • Bandwidth: Daily transfer × peak factor।
  • Peak vs average: Peak সাধারণত average-এর ২-৩×।
  • Headroom: ৩০% buffer রাখুন।

Auto-scaling

Cloud (AWS, GCP, Azure)-এ auto-scaling group:

  • CPU > ৭০% → server যোগ
  • CPU < ৩০% → server সরান
  • Predictable load: scheduled scaling (অফিস ঘণ্টায় বেশি)
  • Spike: rapid scaling rule

বাস্তব উদাহরণ

  • Twitter: Horizontal scale + functional decomposition (timeline, tweet, search service আলাদা)।
  • Instagram: 1 engineer-এ ১৪M user — heavy use of Postgres + Redis caching।
  • WhatsApp: Erlang VM-এ vertical scale করে কয়েক million concurrent connection per server।

সাধারণ ভুল ধারণা

  1. "আগেই scale করো": Premature optimization — ১০ user-এ Kubernetes দরকার নেই।
  2. "More server = more performance": Distributed system overhead থাকে। Network I/O, coordination।
  3. "Vertical scaling backward": না, ছোট সিস্টেমে এটাই সরল।

Best Practices

  • Stateless app design (scale-out-friendly)।
  • Database আগে bottleneck হবে — caching, indexing শুরু থেকেই।
  • Monitoring (Prometheus, Datadog) — bottleneck আগে চিহ্নিত।
  • Load testing (k6, JMeter) — production-এ গিয়ে surprise নয়।
  • Async processing — heavy job background-এ।
  • Premature scaling এড়ান — measure আগে।

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

  • Scalability = বর্ধিত load handle করার ক্ষমতা।
  • Vertical = বড় server; Horizontal = বেশি server।
  • Scale Cube: X (duplicate), Y (functional), Z (data shard)।
  • Database প্রথম bottleneck হয় সাধারণত।
  • Stateless + caching + async = scalable foundation।