Skip to Content
Nextra 4.0 is released 🎉
DocumentationScale From 0 to millionFigure 3 (চিত্র ৩ কী বোঝাচ্ছে?)

ব্যবহারকারীর সংখ্যা বাড়ার সাথে সাথে সিস্টেম স্কেল করা

যখন ব্যবহারকারীর সংখ্যা বাড়তে থাকে, তখন একটি মাত্র সার্ভার আর যথেষ্ট থাকে না। তখন আমাদের একাধিক সার্ভার ব্যবহার করতে হয়:

  • একটি সার্ভার Web/Mobile ট্রাফিক হ্যান্ডেল করার জন্য
  • আরেকটি সার্ভার Database (ডেটাবেস) এর জন্য

এভাবে Web/Mobile traffic (web tier) এবং Database (data tier) আলাদা করলে তাদেরকে স্বাধীনভাবে (independently) স্কেল করা যায়।


Figure 3 (চিত্র ৩ কী বোঝাচ্ছে?)

এই আর্কিটেকচারে একজন ব্যবহারকারী Web Browser বা Mobile App ব্যবহার করে www.mysite.com এ রিকোয়েস্ট পাঠায়।

এই ডোমেইন নাম প্রথমে DNS (Domain Name System) সার্ভারের মাধ্যমে IP Address-এ রূপান্তরিত হয়।

তারপর রিকোয়েস্টটি Web Server-এ যায়। একই Web Server আবার api.mysite.com থেকেও আসা রিকোয়েস্ট হ্যান্ডেল করে।

Web Server এখানে একটি মধ্যস্থ (intermediary) হিসেবে কাজ করে:

  • Database-এ read / write / update রিকোয়েস্ট পাঠায়
  • এবং সেখান থেকে data ফিরে (return data) গ্রহণ করে

Web Server এবং Database আলাদা কম্পোনেন্ট হিসেবে কাজ করে, যা স্কেলিং এবং মেইনটেনেন্স সহজ করে।


কোন Database ব্যবহার করা উচিত?

আপনি সাধারণত দুই ধরনের ডেটাবেস থেকে বেছে নিতে পারেন:


১. Relational Database (RDBMS / SQL Database)

এগুলোকে Relational Database Management System (RDBMS) বা SQL database বলা হয়।

জনপ্রিয় উদাহরণ:

  • MySQL
  • Oracle Database
  • PostgreSQL

বৈশিষ্ট্য:

  • ডেটা table এবং row আকারে সংরক্ষণ করা হয়
  • SQL ব্যবহার করে বিভিন্ন টেবিলের মধ্যে join অপারেশন করা যায়
  • ডেটার মধ্যে সম্পর্ক (relationship) সহজে ম্যানেজ করা যায়

২. Non-Relational Database (NoSQL Database)

এগুলোকে NoSQL database বলা হয়।

জনপ্রিয় উদাহরণ:

  • CouchDB
  • Neo4j
  • Cassandra
  • HBase
  • Amazon DynamoDB

এই ডেটাবেসগুলো সাধারণত চারটি ক্যাটাগরিতে ভাগ করা হয়:

  • Key-value store
  • Graph store
  • Column store
  • Document store

গুরুত্বপূর্ণ বিষয়:

  • সাধারণত join অপারেশন সাপোর্ট করে না
  • অনেক বেশি flexible data structure ব্যবহার করে

কখন কোন ডেটাবেস ব্যবহার করবেন?

বেশিরভাগ ডেভেলপারের জন্য relational database সবচেয়ে ভালো অপশন, কারণ:

  • এটি ৪০ বছরেরও বেশি সময় ধরে ব্যবহৃত হচ্ছে
  • বাস্তব জীবনের অনেক ক্ষেত্রে সফলভাবে কাজ করে

তবে কিছু ক্ষেত্রে NoSQL বেশি উপযুক্ত হতে পারে, যেমন:

  • যখন অ্যাপ্লিকেশন খুব কম latency (super-low latency) চায়
  • যখন ডেটা unstructured বা সম্পর্কহীন (non-relational)
  • যখন শুধু data serialize/deserialize করতে হয় (JSON, XML, YAML ইত্যাদি)
  • যখন বিশাল পরিমাণ ডেটা সংরক্ষণ করতে হয়

Vertical Scaling vs Horizontal Scaling


Vertical Scaling (Scale Up)

Vertical scaling মানে হলো একটি সার্ভারের শক্তি বাড়ানো:

  • CPU বাড়ানো
  • RAM বাড়ানো
  • Disk শক্তিশালী করা

সুবিধা:

  • সহজভাবে করা যায়
  • ছোট সিস্টেমের জন্য ভালো

সীমাবদ্ধতা:

  • একটি hard limit আছে — অসীমভাবে CPU/RAM বাড়ানো যায় না
  • একটি সার্ভার down হলে পুরো সিস্টেম বন্ধ হয়ে যায় (no redundancy)

Horizontal Scaling (Scale Out)

Horizontal scaling মানে হলো নতুন নতুন সার্ভার যোগ করা:

  • একাধিক সার্ভার নিয়ে একটি pool তৈরি করা
  • লোড ভাগ করে নেওয়া

সুবিধা:

  • বড় সিস্টেমের জন্য উপযুক্ত
  • বেশি scalable
  • failover এবং redundancy support করে

বাস্তব সমস্যা কী হয়?

আগের ডিজাইনে ব্যবহারকারীরা সরাসরি Web Server-এর সাথে connected ছিল।

সমস্যা:

  • Web Server offline হলে পুরো website বন্ধ হয়ে যায়
  • অনেক ব্যবহারকারী একসাথে আসলে server overload হয়
  • Response slow হয়ে যায় বা request fail করে

সমাধান: Load Balancer

এই সমস্যাগুলোর সমাধানের জন্য সবচেয়ে ভালো প্রযুক্তি হলো Load Balancer।

Load Balancer:

  • আসা সব request বিভিন্ন server-এ ভাগ করে দেয়
  • একক server-এর উপর চাপ কমায়
  • সিস্টেমকে আরও reliable এবং scalable করে তোলে