Latency

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

এই দেরিটাই হলো Latency। অর্থাৎ, একটি সিস্টেমে কোনো Request পাঠানোর পর তার Response পেতে যে সময় লাগে, তাকেই Latency বলা হয়। সাধারণত একে মিলিসেকেন্ড (ms) এককে পরিমাপ করা হয়।

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

Latency বলতে মূলত বিলম্ব বা Delay-কে বোঝায়, যা কোনো সিস্টেমে ডেটা প্রসেসিং বা নেটওয়ার্ক কমিউনিকেশনের কারণে হয়ে থাকে। সিস্টেমে Latency বেশি হলে তা ধীর গতির মনে হয় এবং ইউজার এক্সপেরিয়েন্স চরমভাবে ক্ষতিগ্রস্ত হয়।

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

  • ওয়েব ব্রাউজিং: একটি ওয়েবসাইট লোড হতে খুব বেশি সময় (যেমন ৫ সেকেন্ডের বেশি) লাগলে ইউজার বিরক্ত হয়ে সাইট থেকে বের হয়ে যেতে পারে।

  • অনলাইন গেমিং: Latency বেশি হলে গেমারদের কমান্ড সঠিক সময়ে কার্যকর হয় না (যাকে Lag বলা হয়), ফলে গেমিং এক্সপেরিয়েন্স নষ্ট হয়।

  • ভিডিও স্ট্রিমিং: বেশি Latency-এর কারণে ডেটা আসতে দেরি হয়, ফলে ভিডিও বারবার বাফারিং করতে থাকে।

Latency কিসের ওপর নির্ভর করে এবং এর সমাধান

Latency প্রধানত পাঁচটি কারণে তৈরি হতে পারে। নিচে কারণগুলো এবং তার সমাধান তুলে ধরা হলো:

১. Network Latency একটি ডেটা প্যাকেট যখন ইন্টারনেটের মাধ্যমে এক জায়গা থেকে অন্য জায়গায় যায়, তখন তাকে বিভিন্ন রাউটার, সুইচ এবং ফায়ারওয়াল পেরিয়ে যেতে হয়। এই যাতায়াতের পথে প্রতিটি ধাপে যে সময় ব্যয় হয়, সেটিই Network Latency। ফিজিক্যাল দূরত্বও এখানে একটি বড় ফ্যাক্টর।

  • সমাধান: CDN (Content Delivery Network) ব্যবহার করা, যাতে ডেটা ইউজারের ভৌগোলিক অবস্থানের নিকটবর্তী সার্ভার থেকে আসতে পারে।

২. Processing Latency সার্ভার যখন কোনো রিকোয়েস্ট প্রসেস করে, তখন সেটি ডেটাবেস কোয়েরি, এপিআই কল বা বিভিন্ন বিজনেস লজিক এক্সিকিউট করে। এই প্রসেসিংয়ে সার্ভারের বেশি সময় লাগলে রেসপন্স দেরিতে আসে।

  • সমাধান: সঠিক ও দ্রুতগতির অ্যালগরিদম ব্যবহার করা, ডেটাবেস ইনডেক্সিং করা এবং ক্যাশিং (যেমন: Redis বা Memcached) ব্যবহার করা।

৩. Disk Latency ফিজিক্যাল স্টোরেজ বা ডিস্ক থেকে ডেটা রিড বা রাইট করতে যে সময় লাগে। পুরনো প্রযুক্তির হার্ড ডিস্ক (HDD) ধীরগতির হওয়ায় সেখানে Latency অনেক বেশি হয়।

  • সমাধান: দ্রুতগতির SSD (Solid State Drive) ব্যবহার করা এবং সম্ভব হলে In-memory Database ব্যবহার করা।

৪. API Latency কোনো সার্ভিস যদি থার্ড-পার্টি API-এর ওপর নির্ভরশীল হয়, তবে ওই এক্সটার্নাল API-এর রেসপন্স দিতে যে সময় লাগে, তা মূল সিস্টেমের Latency বাড়িয়ে দেয়।

  • সমাধান: Asynchronous API calls ব্যবহার করা এবং API Gateway-এর মাধ্যমে রিকোয়েস্টগুলো ম্যানেজ করা।

৫. Queuing Latency (অতিরিক্ত যুক্ত করা হলো) যখন সিস্টেমে একসাথে প্রচুর রিকোয়েস্ট আসে এবং সার্ভার ব্যস্ত থাকে, তখন নতুন রিকোয়েস্টগুলোকে কিউ বা লাইনে অপেক্ষা করতে হয়। এই অপেক্ষার সময়টাই হলো Queuing Latency।

  • সমাধান: Load Balancer ব্যবহার করে রিকোয়েস্টগুলো একাধিক সার্ভারে ভাগ করে দেওয়া এবং লোড বাড়লে Auto-scaling-এর মাধ্যমে নতুন সার্ভার যুক্ত করা।

Latency কমানোর কার্যকর উপায়সমূহ

সিস্টেম ডিজাইনে Latency কমানোর জন্য বেশ কিছু আধুনিক কৌশল ব্যবহার করা হয়:

  • Edge Computing: ডেটা মূল ক্লাউড সার্ভারের পরিবর্তে ইউজারের কাছাকাছি থাকা লোকাল নোডে (Edge) প্রসেস করা, এতে যাতায়াতের সময় বেঁচে যায়।

  • Data Compression: ডেটার সাইজ ছোট করে (যেমন Gzip বা Brotli অ্যালগরিদম ব্যবহার করে) নেটওয়ার্কে পাঠানো, যাতে বড় ডেটা দ্রুত ট্রান্সফার হয়।

  • Parallel Processing: একাধিক কাজকে একটির পর একটি সিরিয়ালি না করে একইসঙ্গে প্রসেস করা, এতে সামগ্রিক সময় কম লাগে।

  • Connection Pooling: ডেটাবেসের সাথে বারবার নতুন কানেকশন তৈরি না করে, আগে থেকে তৈরি করা কানেকশন পুনরায় ব্যবহার করা, যা কানেকশন সেটআপের সময় বাঁচায়।

সংক্ষেপে, Latency কমানো মানেই হলো ইউজারকে দ্রুততম সময়ে সার্ভিস প্রদান করা। একটি ফাস্ট সিস্টেম ইউজার এক্সপেরিয়েন্স উন্নত করে এবং বিজনেসের গ্রোথ বাড়াতে দারুণভাবে সাহায্য করে। ইউজাররা স্লো সিস্টেম পছন্দ করে না, তারা দ্রুত অন্য অপশন খুঁজে নেয়। তাই সিস্টেম ডিজাইনের সময় Throughput বাড়ানোর পাশাপাশি Latency কীভাবে সর্বনিম্ন রাখা যায়, তা নিয়ে গভীরভাবে কাজ করা অপরিহার্য।