Skip to Content
Nextra 4.0 is released 🎉
DocumentationScale From 0 to millionLogging, Metrics এবং Automation — সহজ বাংলা ব্যাখ্যা

Logging, Metrics এবং Automation — সহজ বাংলা ব্যাখ্যা

যখন একটি ছোট ওয়েবসাইট মাত্র কয়েকটি সার্ভারে চলে, তখন Logging, Metrics এবং Automation থাকা ভালো practice হলেও বাধ্যতামূলক নয়।

কিন্তু যখন সিস্টেম বড় হয়ে অনেক ব্যবহারকারী এবং ব্যবসা (business) সার্ভ করতে শুরু করে, তখন এগুলো অত্যন্ত গুরুত্বপূর্ণ হয়ে যায়।


Logging (লগিং)

Logging হলো সিস্টেমের error এবং activity record করে রাখা।

কেন দরকার?

  • সিস্টেমে কী সমস্যা হচ্ছে তা বোঝা যায়
  • error কোথায় হচ্ছে তা সহজে খুঁজে পাওয়া যায়
  • debugging সহজ হয়

Logging কীভাবে করা হয়?

দুইভাবে করা যায়:

১. Per-server logging

  • প্রতিটি সার্ভার আলাদাভাবে log রাখে

২. Centralized logging

  • সব সার্ভারের log এক জায়গায় সংগ্রহ করা হয়
  • সহজে search এবং analysis করা যায়

👉 বড় সিস্টেমে centralized logging বেশি ব্যবহার করা হয়।


Metrics (মেট্রিক্স)

Metrics হলো সিস্টেম এবং ব্যবসার health ও performance measure করার ডেটা।


গুরুত্বপূর্ণ Metrics:

১. Host-level metrics

সার্ভারের অবস্থা বোঝায়:

  • CPU usage
  • Memory usage
  • Disk I/O

২. Aggregated metrics

পুরো system tier-এর performance বোঝায়:

  • Database tier performance
  • Cache tier performance
  • Web server performance

৩. Business metrics

ব্যবসার performance বোঝায়:

  • Daily Active Users (DAU)
  • User retention
  • Revenue

Automation (অটোমেশন)

যখন সিস্টেম বড় এবং জটিল হয়ে যায়, তখন automation খুব গুরুত্বপূর্ণ।


Continuous Integration (CI)

CI হলো এমন একটি প্রক্রিয়া যেখানে:

  • প্রতিটি code change automatically test করা হয়
  • সমস্যা আগেই ধরা পড়ে

Automation এর সুবিধা:

  • build process অটোমেটেড
  • testing দ্রুত হয়
  • deployment সহজ হয়
  • developer productivity বাড়ে

Figure 19 (Updated System Design)

Figure 19-এ দেখা যায়:

  • DNS → Load Balancer → Web Servers
  • Web servers → Cache + Database
  • Web servers → Message Queue
  • Workers → NoSQL database
  • CDN সামনে থেকে static content serve করে

নতুন গুরুত্বপূর্ণ অংশ:

Message Queue

  • Web server job পাঠায় queue-তে
  • Worker সেই job process করে

Tools Layer

System-এর নিচে থাকে:

  • Logging tools
  • Monitoring tools
  • Metrics system
  • Automation tools

👉 এগুলো system কে reliable এবং manageable করে।


Database Scaling (ডাটাবেস স্কেলিং)

ডেটা বাড়ার সাথে সাথে database বেশি load হয়ে যায়, তাই scaling দরকার।


১. Vertical Scaling (Scale Up)

Vertical scaling মানে একটি সার্ভারকে আরও শক্তিশালী করা:

  • CPU বাড়ানো
  • RAM বাড়ানো
  • Disk বাড়ানো

উদাহরণ:

Amazon RDS অনুযায়ী 24TB RAM পর্যন্ত powerful database server পাওয়া যায়।


সুবিধা:

  • সহজে implement করা যায়
  • ছোট থেকে মাঝারি system-এর জন্য ভালো

সমস্যা:

  • hardware limit আছে
  • single point of failure হতে পারে
  • cost অনেক বেশি

২. Horizontal Scaling (Sharding / Scale Out)

Horizontal scaling মানে:

👉 একাধিক database server ব্যবহার করা


Sharding কী?

Sharding হলো বড় database কে ছোট ছোট অংশে ভাগ করা।

  • প্রতিটি অংশকে বলা হয় shard
  • প্রতিটি shard আলাদা data রাখে
  • কিন্তু schema একই থাকে

Figure 20 (Vertical vs Horizontal Scaling)

Vertical Scaling:

  • একটাই server ধীরে ধীরে powerful হয়

Horizontal Scaling:

  • একাধিক server যোগ করা হয়

👉 Horizontal scaling বেশি scalable এবং reliable।


Figure 21 (Sharding Example)

User data ভাগ করা হয় একটি hash function দিয়ে:

user_id % 4

ফলাফল:

  • 0 → Shard 0
  • 1 → Shard 1
  • 2 → Shard 2
  • 3 → Shard 3

👉 এইভাবে data evenly distributed হয়।


Figure 22 (Sharded User Table)

প্রতিটি shard-এ আলাদা user set থাকে:

  • Shard 0 → user 0, 4, …
  • Shard 1 → user 1, 5, …
  • Shard 2 → user 2, 6, …
  • Shard 3 → user 3, 7, …

👉 প্রতিটি shard স্বাধীনভাবে কাজ করে।


Sharding Key (গুরুত্বপূর্ণ ধারণা)

Sharding key হলো এমন একটি field যা decide করে data কোন shard-এ যাবে।

উদাহরণ:

  • user_id (সবচেয়ে সাধারণ)

ভালো Sharding Key এর বৈশিষ্ট্য:

  • data সমানভাবে ভাগ করে
  • efficient query routing নিশ্চিত করে

Sharding এর সমস্যা

১. Resharding সমস্যা

  • data অনেক বেড়ে গেলে shard resize করতে হয়
  • data move করতে হয়
  • consistent hashing ব্যবহার করা হয়

২. Celebrity / Hotspot Problem

কিছু data খুব বেশি hit পেলে:

  • একটি shard overload হয়ে যায়

উদাহরণ:

  • Justin Bieber / Katy Perry এর data এক shard-এ গেলে overload হবে

৩. Join সমস্যা

  • multiple shard-এর মধ্যে join করা কঠিন
  • তাই অনেক সময় denormalization ব্যবহার করা হয়

Final Summary

Observability Layer

  • Logging → সমস্যা খুঁজে বের করা
  • Metrics → system health + business insight
  • Automation → fast deployment + CI/CD

Scaling Layer

  • Vertical scaling → এক server শক্তিশালী করা
  • Horizontal scaling → multiple servers (sharding)

Sharding

  • data ভাগ করা হয় hash function দিয়ে
  • scalability বাড়ে
  • কিন্তু complexity বেড়ে যায়

👉 Overall, এই অংশটি দেখায় কীভাবে একটি system:

  • monitor করা যায়
  • automate করা যায়
  • এবং huge scale-এ database handle করা যায়