با گسترش APIها برای خودکارسازی فرآیندها و دسترسی به دادههای شخص ثالث، مدیریت جریانهای کاری بهصورت لحظهای (real-time) روزبهروز عملیتر شده است. این امر بهویژه با ظهور وبهوکها ممکن شده که به سرورها اجازه میدهند هرگاه رویداد خاصی رخ دهد، بلافاصله اعلان لحظهای ارسال کنند.
بیایید بررسی کنیم وبهوک چیست و چه زمانی باید از آن استفاده کرد؛ پس از آنکه تفاوت آن را با روش سنتی تعامل با API یعنی پولینگ روشن کردیم.
APIها: وبهوک در مقابل پولینگ
عملکرد APIها بر پایه مدل درخواست-پاسخ است: وقتی دو برنامه از طریق API با هم تعامل میکنند، یکی درخواست (API call) میفرستد و منتظر پاسخ سرور میماند.
وبهوک و پولینگ دو روش متفاوت برای فراخوانی API هستند. بهطور خلاصه، میتوانید انتخاب کنید که یا بهمحض در دسترس شدن داده جدید، اعلان لحظهای دریافت کنید یا در فواصل زمانی منظم خودتان داده را درخواست کنید.
در پولینگ، کلاینت در فواصل زمانی مشخص (مثلاً هر ساعت یا هر ۵ دقیقه) داده را درخواست میکند و هر اطلاعات جدیدی را دریافت میکند. دادهها بهطور منظم بهروز میشوند، اما لحظهای نیستند و اگر داده جدیدی وجود نداشته باشد، درخواستها خالی برمیگردند.
در مقابل، وبهوک به برنامه اجازه میدهد وقتی رویداد خاصی رخ میدهد، بلافاصله و بهصورت لحظهای اعلان دریافت کند؛ بنابراین کلاینت فقط منتظر بهروزرسانی میماند و نیازی به درخواست مداوم ندارد.
تصور کنید مسافران در یک سفر طولانی با ماشین: میتوانند هر ۳۰ دقیقه بپرسند «چقدر مانده؟» (مثل پولینگ) یا راحت بنشینند و منتظر باشند تا وقتی رسیدند به آنها خبر دهند (مثل وبهوک).
وبهوک چیست و چگونه کار میکند؟
وبهوک یک HTTP callback است که نیازی به درخواست از سمت کلاینت ندارد. «هوک» وقتی فعال میشود که یک رویداد خاص (trigger) رخ دهد و callback بهصورت خودکار و بدون نیاز به درخواست از برنامه گیرنده آغاز میشود.
به همین دلیل به وبهوکها API معکوس (reverse API) هم میگویند: به جای «کشیدن» داده (pull)، داده بهصورت «فشاری (push)» از طریق اعلان به برنامه گیرنده ارسال میشود. هرگاه رویداد محرک رخ۶۷۴ دهد، منبع یک درخواست به URL تنظیمشده ارسال میکند. برنامه گیرنده فقط در زمان لازم و بهصورت لحظهای بهروزرسانی را دریافت میکند. این تفاوت اصلی وبهوک با فراخوانی سنتی API است.
وبهوکها برای همگامسازی دادهها، مدیریت نرمافزارهای تجاری یا سیستمهای تجارت الکترونیک استفاده میشوند. مثلاً میتوانند خرید آنلاین را لحظهای اطلاع دهند و موجودی انبار، فاکتور و سیستم ارسال را بهصورت خودکار بهروز کنند.
چه زمانی از وبهوک استفاده کنیم؟
وبهوکها معمولاً برای همگامسازی دادهها و نظارت بر سرورها استفاده میشوند، اما در شبکههای اجتماعی، سایتهای تجارت الکترونیک و دستگاههای اینترنت اشیا (IoT) که میتوانند خرابی یا ناهنجاری را لحظهای گزارش دهند نیز بسیار رایجاند. تنها چیزی که نیاز دارید یک endpoint HTTP است که بتواند درخواست POST دریافت کند.
مثلاً میتوانید انتشار پست وبلاگ جدید را بهصورت خودکار در شبکههای اجتماعی منتشر کنید یا اعلانهای شخصیسازیشده مرتبط با رویدادهایی مثل خرید آنلاین یا تراکنش بانکی بفرستید.
قابلیت ارسال پیام لحظهای بین برنامههای مختلف، جریانهای کاری را ساده میکند و امکان یکپارچهسازی آنالیتیکس، چت و سایر برنامههای تجارت الکترونیک با سیستم CRM را فراهم میآورد.
مزایا و معایب وبهوک
مزایای اصلی وبهوک را میتوان در داده لحظهای و بهینهسازی منابع خلاصه کرد. برخلاف پولینگ، وبهوک فقط پیامهای ضروری را ارسال میکند؛ یعنی فقط وقتی رویداد خاصی رخ دهد.
وبهوک برای کسانی که به بهروزرسانی لحظهای داده نیاز دارند ایدهآل است و از صدها یا هزاران فراخوانی غیرضروری API در زمانی که بهروزرسانی وجود ندارد جلوگیری میکند.
پولینگ بیشازحد میتواند منابع شبکه را تحت فشار بگذارد، خطر برخورد با محدودیت نرخ (rate limit) را افزایش دهد و هزینههای قابلتوجهی به دلیل تعداد زیاد فراخوانیهای بیفایده ایجاد کند.
برخلاف پولینگ، وبهوکها مشکل مقیاسپذیری ندارند: به جای افزایش تعداد فراخوانی API، فقط تعداد callbackهای بیشتری را مدیریت میکنند.
با این حال، یکی از مهمترین معایب وبهوکها در دسترس نبودن آنها در همه برنامههاست: هنوز بسیاری از برنامههای شخص ثالث از وبهوک پشتیبانی نمیکنند و این میتواند یکپارچهسازی سیستم و بهینهسازی منابع را مختل کند.
پلتفرم Openapi امکان تنظیم وبهوک برای هر فراخوانی API را فراهم میکند و کنترل دقیق روی تنظیمات پولینگ را نیز ارائه میدهد؛ بنابراین میتوانید هر دو روش را در سیستمهای خود یکپارچه کنید و برای هر کار بهترین گزینه را انتخاب کنید.

