Ably একটি ক্লাউড রিয়েল-টাইম মেসেজিং প্ল্যাটফর্ম যা pub/sub যোগাযোগ, উপস্থিতি এবং অবস্থা সিঙ্ক্রোনাইজেশনের জন্য পরিকাঠামো সরবরাহ করে। এটি নির্ভরযোগ্যতা এবং বৈশ্বিক প্রাপ্যতার উচ্চ চাহিদাসম্পন্ন এন্টারপ্রাইজ প্রকল্পগুলির জন্য ডিজাইন করা হয়েছে। অফিসিয়াল Ably ডকুমেন্টেশন (2025) অনুযায়ী, প্ল্যাটফর্মটি 99.999% আপটাইম এবং 95তম পার্সেন্টাইলে 65 ms-এর কম ডেলিভারি লেটেন্সি গ্যারান্টি দেয়।
মূল বিষয়
Ably একটি ক্লাউড রিয়েল-টাইম প্ল্যাটফর্ম যা 2014 সালে প্রতিষ্ঠিত এবং রিয়েল-টাইম মেসেজিংয়ের জন্য পরিকাঠামো সরবরাহ করে। সাধারণ pub-সেবার বিপরীতে, Ably এন্টারপ্রাইজ-গ্রেড ডেলিভারি গ্যারান্টি, পয়েন্টস অফ প্রেজেন্স (POP)-এর বৈশ্বিক নেটওয়ার্ক এবং লক্ষ লক্ষ সমবর্তী ক্লায়েন্টের জন্য বিল্ট-ইন অবস্থা সিঙ্ক্রোনাইজেশন অফার করে।
প্ল্যাটফর্মটি এমন প্রকল্পগুলিতে ব্যবহৃত হয় যেখানে ডেলিভারি নির্ভরযোগ্যতা গুরুত্বপূর্ণ: ফাইন্যান্সিয়াল টিকার, লজিস্টিকস ট্র্যাকার, মেডিকেল মনিটরিং সিস্টেম এবং মাল্টিপ্লেয়ার গেম। Ably তার নিজস্ব ডিস্ট্রিবিউটেড মেসেজ ব্রোকার প্রযুক্তির উপর ভিত্তি করে তৈরি, যা 15+ ডেটা সেন্টারের বৈশ্বিক নেটওয়ার্ক জুড়ে ডেটা প্রতিলিপি তৈরি করে।
অফিসিয়াল Ably ওয়েবসাইট (2025) অনুযায়ী, প্ল্যাটফর্মটি 50,000+ সক্রিয় অ্যাপ্লিকেশনের জন্য প্রতি মাসে 200 বিলিয়নেরও বেশি বার্তা প্রক্রিয়া করে। গ্রাহকদের মধ্যে Fortune 500 কোম্পানি অন্তর্ভুক্ত: Toyota (অটোমোটিভ টেলিমেটিক্স), HubSpot (CRM সিঙ্ক্রোনাইজেশন), Designity (সহযোগিতামূলক সম্পাদনা)।
Ably আর্কিটেকচার উচ্চ-গতির চ্যানেলের মাধ্যমে সংযুক্ত ডিস্ট্রিবিউটেড মেসেজ ব্রোকার (রাউটার) নেটওয়ার্কের উপর নির্মিত। প্রতিটি ব্রোকার চ্যানেলের একটি উপসেট পরিবেশন করে এবং Ably প্রোটোকল — ন্যূনতম ওভারহেডের জন্য অপ্টিমাইজ করা WebSocket-এর উপর একটি বাইনারি প্রোটোকল — ব্যবহার করে অবস্থা প্রতিলিপি তৈরি করে। ক্লায়েন্টরা DNS লোড ব্যালেন্সিংয়ের মাধ্যমে নিকটতম ব্রোকারের সাথে সংযোগ করে।
প্রতিযোগীদের থেকে Ably-এর মূল পার্থক্য হল বিল্ট-ইন গ্লোবাল লগ, যা প্রতিটি চ্যানেলের জন্য বার্তা ইতিহাস সংরক্ষণ করে। এটি নতুন সাবস্ক্রাইবারদের শুধু নতুন নয়, আগের বার্তাও গ্রহণ করতে দেয় (রিপ্লে), যা অডিট এবং পুনঃসংযোগের পরে অবস্থা পুনরুদ্ধারের জন্য গুরুত্বপূর্ণ।
Ably ইন্টারঅ্যাকশন মডেল অতিরিক্ত ক্ষমতা সহ প্রকাশক-সাবস্ক্রাইবার প্যাটার্ন অনুসরণ করে। প্রকাশক Ably REST API বা SDK-এর মাধ্যমে একটি চ্যানেলে বার্তা পাঠায়। বার্তাটি চ্যানেলের গ্লোবাল ডিস্ট্রিবিউটেড লগে প্রবেশ করে এবং সমস্ত সাবস্ক্রাইবারের কাছে তাদের সক্রিয় সংযোগের মাধ্যমে বিতরণ করা হয়।
ট্রান্সপোর্ট লেয়ার — Ably একাধিক প্রোটোকল সমর্থন করে: WebSocket (প্রাথমিক, বাইনারি Ably প্রোটোকল সহ), Server-Sent Events (একমুখী প্রাপ্তির জন্য), HTTP streaming (সীমিত পরিবেশের জন্য), এবং MQTT (IoT ডিভাইসের জন্য)। ক্লায়েন্ট স্বয়ংক্রিয়ভাবে সর্বনিম্ন লেটেন্সি সহ উপলব্ধ ট্রান্সপোর্ট নির্বাচন করে।
প্রতিটি বার্তা Ably-এর পক্ষ থেকে ভ্যালিডেশন এর মধ্য দিয়ে যায় — API কী স্বাক্ষর যাচাই, চ্যানেল কোটা পরীক্ষা, অ্যাক্সেস অধিকার। ভ্যালিডেশন এজ রাউটারে 1–5 ms-এ ঘটে, তারপরে বার্তাটি গ্লোবাল লগে প্রতিলিপি তৈরি করা হয়। Ably টেকনিক্যাল ব্লগ (2024) অনুযায়ী, আন্তঃমহাদেশীয় ট্রান্সমিশনের সময় 95% বার্তার জন্য এন্ড-টু-এন্ড লেটেন্সি 65 ms-এর কম।
Ably চ্যানেল বার্তা বিনিময়ের জন্য নামকরণকৃত বিষয়। প্রতিটি চ্যানেলে অগণিত সাবস্ক্রাইবার থাকতে পারে, তবে স্থিতিশীল পারফরম্যান্সের জন্য একটি জোনের মধ্যে প্রতি চ্যানেলে 10,000-এর বেশি না রাখার পরামর্শ দেওয়া হয়। চ্যানেল একমুখী (শুধুমাত্র সার্ভার থেকে প্রকাশনা) বা পূর্ণ-দ্বৈধ (ক্লায়েন্ট বার্তা প্রকাশ করে) হতে পারে।
Ably-তে Pub/Sub মডেল অতিরিক্ত ক্ষমতা সহ ক্লাসিক প্যাটার্নকে প্রসারিত করে: সাবস্ক্রাইবার উপস্থিতি, বার্তা ইতিহাস, চ্যানেল অবস্থা এবং নেমস্পেস। প্রতিটি চ্যানেল একটি নেমস্পেসের অন্তর্গত যা কোটা এবং অ্যাক্সেস অধিকার নির্ধারণ করে।
উপস্থিতি (Presence) — চ্যানেল অংশগ্রহণকারীদের স্বয়ংক্রিয় ট্র্যাকিং। একটি চ্যানেলে সাবস্ক্রাইব করা প্রতিটি ক্লায়েন্ট clientId, অবস্থা (অনলাইন, দূরে, অফলাইন) এবং ইচ্ছামত ডেটা সহ উপস্থিতি ম্যাপে নিবন্ধিত হয়। যখন একটি ক্লায়েন্ট সংযোগ বিচ্ছিন্ন হয় (টাইমআউট বা স্পষ্টভাবে), উপস্থিতি স্বয়ংক্রিয়ভাবে আপডেট হয়।
বার্তা ইতিহাস — প্রতিটি চ্যানেল ডিফল্টরূপে বার্তা ইতিহাস সংরক্ষণ করে (ফ্রি প্ল্যানে 2 মিনিট বা 100 বার্তা পর্যন্ত)। পেইড প্ল্যানে, ইতিহাস নির্বিচারে পূর্ববর্তী অ্যাক্সেস সহ 72 ঘন্টা পর্যন্ত বাড়ানো যেতে পারে। ইতিহাস অপরিবর্তনীয়তা গ্যারান্টি (শুধু-সংযোজন) সহ একটি ডিস্ট্রিবিউটেড লগে সংরক্ষণ করা হয়।
| বৈশিষ্ট্য | ফ্রি প্ল্যান | এন্টারপ্রাইজ প্ল্যান |
|---|---|---|
| সমবর্তী সংযোগ | 100 | 10,000+ |
| ইতিহাস সংরক্ষণ | 2 মিনিট / 100 বার্তা | 72 ঘন্টা |
| ডেলিভারি গ্যারান্টি | At-least-once | Exactly-once |
| অঞ্চল | 1 অঞ্চল | সব 15+ অঞ্চল |
| SLA | 99.9% | 99.999% |
ডেলিভারি গ্যারান্টি — বেশিরভাগ রিয়েল-টাইম পরিষেবা থেকে Ably-এর মূল পার্থক্য। প্ল্যাটফর্মটি একাধিক ডেলিভারি মোড সমর্থন করে, যা বার্তা প্রকাশ করার সময় নির্বাচনযোগ্য। মোড নির্ধারণ করে কতবার বার্তা ডেলিভারি হবে এবং কীভাবে সংযোগ ব্যর্থতা পরিচালনা করা হয়।
At-least-once — বার্তাটি কমপক্ষে একবার ডেলিভারি হয়, ডুপ্লিকেট সম্ভব। এই মোডটি বিজ্ঞপ্তি এবং অ-গুরুত্বপূর্ণ ডেটার জন্য ব্যবহৃত হয় যেখানে ডুপ্লিকেট ক্ষতি করে না। Exactly-once — ক্লায়েন্ট এবং সার্ভার সাইডে ডিডুপ্লিকেশনের মাধ্যমে বার্তাটি ঠিক একবার ডেলিভারি হয়। এই মোডটি আর্থিক লেনদেন এবং ডিভাইস ব্যবস্থাপনার জন্য বাধ্যতামূলক।
Last-value cache — একটি বিশেষ মোড যেখানে চ্যানেল প্রতিটি নামকৃত বার্তার শেষ মান সংরক্ষণ করে। একজন নতুন সাবস্ক্রাইবার পরবর্তী ইভেন্টের জন্য অপেক্ষা না করে তৎক্ষণাৎ বর্তমান অবস্থা পায়। এটি প্রতিটি রাউটারে গ্লোবাল key-value স্টোরের মাধ্যমে বাস্তবায়িত হয়। Ably ডকুমেন্টেশন (2025) অনুযায়ী, last-value cache পুনঃসংযোগের পরে অবস্থা পুনরুদ্ধারের সময় 2–5 সেকেন্ড থেকে 50–100 ms-এ কমিয়ে আনে।
Ably দিয়ে শুরু করতে নিবন্ধন, একটি অ্যাপ্লিকেশন তৈরি এবং একটি API কী প্রাপ্তি প্রয়োজন। লাইব্রেরিগুলি সমস্ত প্রধান প্ল্যাটফর্মের জন্য উপলব্ধ। আসুন JavaScript SDK ব্যবহার করে প্রকাশনা এবং সাবস্ক্রিপশনের একটি উদাহরণ দেখি। ক্লায়েন্ট একটি API কী দিয়ে সংযোগ করে, একটি চ্যানেলে সাবস্ক্রাইব করে এবং একটি ইভেন্ট হ্যান্ডলার সংযুক্ত করে।
Ably ডকুমেন্টেশন (2025) অনুযায়ী, ন্যূনতম অনুমতি (সর্বনিম্ন বিশেষাধিকার নীতি) সহ সার্ভার এবং ক্লায়েন্ট অংশের জন্য আলাদা API কী ব্যবহার করার পরামর্শ দেওয়া হয়। সার্ভার কী যেকোনো চ্যানেলে প্রকাশ করতে পারে, যখন ক্লায়েন্ট কী শুধুমাত্র নির্দিষ্ট নেমস্পেসে সাবস্ক্রাইব করতে পারে।
import * as Ably from 'ably';
const client = new Ably.Realtime({
key: 'YOUR_API_KEY',
clientId: 'user-123'
});
const channel = client.channels.get('test-channel');
channel.subscribe('update', (message) => {
console.log('Received:', message.data);
});
channel.publish('update', {
text: 'Hello from Ably',
priority: 1
});
const Ably = require('ably');
const rest = new Ably.Rest({ key: 'SERVER_API_KEY' });
const channel = rest.channels.get('test-channel');
channel.publish('server-event', {
type: 'notification',
payload: { userId: 100, text: 'Server message' }
}).then(() => {
console.log('Message published via REST');
});
Ably এবং Pusher-এর মধ্যে পছন্দ প্রকল্পের প্রয়োজনীয়তার উপর নির্ভর করে। উভয় প্ল্যাটফর্মই হোস্টেড রিয়েল-টাইম পরিকাঠামো প্রদান করে, তবে আর্কিটেকচার, গ্যারান্টি এবং মূল্য নির্ধারণে ভিন্ন। Ably উচ্চ নির্ভরযোগ্যতা চাহিদাসম্পন্ন এন্টারপ্রাইজ-এ কেন্দ্রীভূত, যখন Pusher দ্রুত শুরু এবং সরলতার দিকে কেন্দ্রীভূত।
Ably প্রতিটি চ্যানেলের জন্য গ্লোবাল ডিস্ট্রিবিউটেড লগ ব্যবহার করে, যা exactly-once ডেলিভারি এবং ইতিহাসে পূর্ববর্তী অ্যাক্সেস নিশ্চিত করে। Pusher at-least-once গ্যারান্টি সহ ব্রোকার আর্কিটেকচার ব্যবহার করে। বেশিরভাগ অ্যাপ্লিকেশনের জন্য, পার্থক্যটি অলক্ষিত, তবে আর্থিক এবং চিকিৎসা ব্যবস্থার জন্য, exactly-once গুরুত্বপূর্ণ।
Ably বনাম Pusher তুলনামূলক পরীক্ষা (2024) অনুযায়ী, Ably আরও বেশি ডেটা সেন্টারের কারণে আন্তঃমহাদেশীয় ট্রান্সমিশনের জন্য 20–30% কম লেটেন্সি প্রদর্শন করে। Pusher ইন্টিগ্রেশন গতিতে এগিয়ে — বেসিক সেটআপে 10–15 মিনিট লাগে যেখানে Ably-এর জন্য বেশি কনফিগারেশন অপশনের কারণে 20–30 মিনিট লাগে।
মোবাইল প্ল্যাটফর্মের জন্য Ably SDK iOS (Swift), Android (Kotlin/Java), Flutter এবং React Native সমর্থন করে। মোবাইল ক্লায়েন্টরা Ably সার্ভার সাইডের সাথে সম্পূর্ণ সামঞ্জস্যপূর্ণ এবং সমস্ত বৈশিষ্ট্য সমর্থন করে: pub/sub, উপস্থিতি, ইতিহাস, পুশ নোটিফিকেশন। Android-এর জন্য, অফলাইন পুশ নোটিফিকেশন ডেলিভারির জন্য Firebase Cloud Messaging-এর সাথে ইন্টিগ্রেশন উপলব্ধ।
মোবাইল নেটওয়ার্কের জন্য অপ্টিমাইজেশন — Ably SDK অ্যাডাপ্টিভ হার্টবিট ব্যবহার করে: Wi-Fi-তে ব্যবধান 15 সেকেন্ড, মোবাইল নেটওয়ার্কে ট্রাফিক বাঁচাতে 60 সেকেন্ড পর্যন্ত। সংযোগ হারালে, SDK ব্যবহারকারীর কাছে দৃশ্যমান বিলম্ব ছাড়াই ব্যাকআপ ট্রান্সপোর্টে (HTTP streaming) স্যুইচ করে। স্ট্যান্ডবাই মোডে গড় ট্রাফিক খরচ প্রতি মিনিটে 0.5–1 KB।
পুশ নোটিফিকেশন — Ably APNs (Apple) এবং FCM (Firebase) এর মাধ্যমে পুশ পাঠানো সমর্থন করে। পুশ একটি নির্দিষ্ট চ্যানেল বা clientId-এ নির্দেশিত হতে পারে। যদি ক্লায়েন্ট সক্রিয় থাকে (WebSocket সংযুক্ত), বার্তাটি চ্যানেলের মাধ্যমে ডেলিভারি হয়। যদি ক্লায়েন্ট সংযোগ বিচ্ছিন্ন থাকে, বার্তাটি পুশ নোটিফিকেশন হিসাবে ডেলিভারি হয়। এটি নিশ্চিত করে যে ব্যবহারকারী কখনও কোনো গুরুত্বপূর্ণ বার্তা মিস না করেন।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
Ably exactly-once ডেলিভারি, গ্লোবাল ডিস্ট্রিবিউটেড লগ এবং 99.999% SLA অফার করে। Pusher সেটআপে সহজ কিন্তু শুধুমাত্র at-least-once গ্যারান্টি প্রদান করে। Ably প্রায়শই উচ্চ নির্ভরযোগ্যতার চাহিদাসম্পন্ন এন্টারপ্রাইজ প্রকল্পগুলি বেছে নেয়।
ফ্রি প্ল্যানে 100 সমবর্তী সংযোগ এবং প্রতি মাসে 500,000 বার্তা অন্তর্ভুক্ত। পেইড প্ল্যান $19/মাস (1000 সংযোগ) থেকে শুরু। কাস্টম গ্যারান্টি সহ এন্টারপ্রাইজ মূল্য নির্ধারণ পৃথকভাবে আলোচনা করা হয়।
হ্যাঁ, exactly-once Ably-এর মূল বৈশিষ্ট্যগুলির একটি। ডিডুপ্লিকেশন অনন্য বার্তা শনাক্তকারী (message ID + connection ID) ব্যবহার করে প্ল্যাটফর্মের পক্ষ থেকে সম্পাদিত হয়।
বর্তমানে, Ably-এর সারা বিশ্বে 15+ উপস্থিতি পয়েন্ট রয়েছে, যার মধ্যে মার্কিন যুক্তরাষ্ট্র, ইউরোপ, এশিয়া, অস্ট্রেলিয়া এবং দক্ষিণ আমেরিকা অন্তর্ভুক্ত। এন্টারপ্রাইজ ক্লায়েন্টরা ডেটা স্টোরেজের জন্য নির্দিষ্ট অঞ্চল নির্বাচন করতে পারেন।
হ্যাঁ, Ably কম শক্তি খরচের IoT ডিভাইসের জন্য MQTT প্রোটোকল সমর্থন করে। ESP32, Arduino এবং Raspberry Pi-তে চলা ডিভাইসগুলির জন্য ন্যূনতম মেমরি ব্যবহার সহ লাইটওয়েট SDK উপলব্ধ।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন