> For the complete documentation index, see [llms.txt](https://mominur.gitbook.io/mominur-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mominur.gitbook.io/mominur-notes/system-design/latency.md).

# Latency

ভাবুন, আপনি একটি ওয়েবসাইট থেকে আপনার প্রিয় খাবার অর্ডার করলেন। অর্ডার দেওয়ার পর যদি খাবার আসতে ২ ঘণ্টা লেগে যায়, তাহলে কেমন লাগবে? নিশ্চয়ই বিরক্ত লাগবে, তাই না? ঠিক একইভাবে, ইন্টারনেটে যখন আমরা কিছু Request করি—যেমন, গুগলে কিছু সার্চ দেওয়া বা ফেসবুকের নিউজ ফিড স্ক্রল করা—তখন ফলাফল আসতে দেরি হলে বিরক্ত লাগে।

এই দেরিটাই **Latency**! অর্থাৎ, একটি সিস্টেমে Request পাঠানোর পর Response পাওয়ার জন্য যে সময় নেয়, সেটাই Latency।

***

### **Latency কী এবং কেন গুরুত্বপূর্ণ?**

Latency বলতে বোঝায় **Delay বা বিলম্ব**, যা একটি সিস্টেমে ডাটা প্রসেসিং বা কমিউনিকেশনের কারণে হয়ে থাকে। কোনো সিস্টেমে Latency বেশি হলে, সেটি ধীর গতির মনে হয় এবং ব্যবহারকারীদের Experience খারাপ হয়।

উদাহরণস্বরূপ:

1. **ওয়েব ব্রাউজিং**: একটি ওয়েবসাইট লোড হতে ৫ সেকেন্ডের বেশি লাগলে ইউজার বিরক্ত হয়ে চলে যেতে পারে।
2. **অনলাইন গেমিং**: যদি Latency বেশি হয়, তাহলে প্লেয়ারদের কমান্ড সঠিক সময়ে কার্যকর হবে না, ফলে গেমিং Experience খারাপ হবে।
3. **ভিডিও স্ট্রিমিং**: যদি Latency বেশি হয়, তাহলে ভিডিও বারবার **buffering** করবে।

***

### **Latency কিসের ওপর নির্ভর করে?**

Latency বিভিন্ন কারণে হতে পারে। নিচে কিছু প্রধান কারণ তুলে ধরা হলো—

#### **1️⃣ Network Latency**

একটি ডাটা প্যাকেট যখন ইন্টারনেটের মাধ্যমে এক জায়গা থেকে অন্য জায়গায় যায়, তখন বিভিন্ন **router, switch, firewall** পেরিয়ে যেতে হয়। এই প্রতিটি ধাপে কিছু সময় লাগে, যা Network Latency তৈরি করে।

✅ **সমাধান:**

* **CDN (Content Delivery Network)** ব্যবহার করলে ডাটা লোকাল সার্ভার থেকে আসবে, ফলে Latency কমে যাবে।
* **Load Balancing** করলে রিকোয়েস্ট সঠিকভাবে বিভিন্ন সার্ভারে ভাগ হয়ে যাবে, ফলে লোড কমবে।

#### **2️⃣ Processing Latency**

একটি সার্ভার যখন কোনো রিকোয়েস্ট প্রসেস করে, তখন সেটি বিভিন্ন **database query, API call, business logic execution** ইত্যাদি কাজ করে। এই প্রসেসিং সময় যদি বেশি হয়, তাহলে সার্ভারের রেসপন্স দেরিতে আসবে।

✅ **সমাধান:**

* **Efficient algorithms** ব্যবহার করা
* **Database indexing** করা
* **Caching** ব্যবহার করা (যেমন: Redis, Memcached)

#### **3️⃣ Disk Latency**

কখনো কখনো কোনো ডাটা ডিস্ক (HDD/SSD) থেকে আনতে হয়। হার্ড ডিস্ক (HDD) ধীরগতির হওয়ায় Latency বেশি হয়।

✅ **সমাধান:**

* **SSD (Solid State Drive)** ব্যবহার করা
* **In-memory Database** ব্যবহার করা (যেমন: Redis, DynamoDB)

#### **4️⃣ API Latency**

কোনো সার্ভিস যদি অন্য API থেকে ডাটা নেয়, তাহলে ওই API-এর রেসপন্স টাইম Latency তৈরি করতে পারে।

✅ **সমাধান:**

* **Asynchronous API calls** ব্যবহার করা
* **API Gateway** ব্যবহার করা

***

### **Latency কমানোর জন্য সেরা টেকনিক**

Latency কমানোর জন্য নিচের কিছু গুরুত্বপূর্ণ টেকনিক ব্যবহার করা যায়—

✅ **Edge Computing** – ডাটা প্রসেসিং ক্লাউডের পরিবর্তে লোকাল সার্ভারে করলে দ্রুত রেসপন্স পাওয়া যায়।\
✅ **Efficient Load Balancing** – একাধিক সার্ভারের মধ্যে লোড ভাগ করে দিলে Latency কমে।\
✅ **Data Compression** – কম সাইজের ডাটা পাঠালে নেটওয়ার্ক Latency কম হয়।\
✅ **Parallel Processing** – একইসঙ্গে একাধিক কাজ করলে সময় বাঁচে।

***

Latency কমানো মানে দ্রুত সার্ভিস প্রদান করা, যা **user experience** উন্নত করে এবং **business growth** বাড়ায়। Latency বেশি হলে, ইউজাররা অন্য অপশন খুঁজে নেয়! তাই সিস্টেম ডিজাইনের সময় Latency কমানোর উপায় নিয়ে অবশ্যই ভাবতে হবে।
