APIها کار انجام میدهند، این همان چیزی است که آنها برای آن ساخته شدهاند. نحوه عملکرد APIها در این کار میتواند بسیار پیچیده باشد، با استفاده از سیستمهای پشتیبان و بارهای کاری بهطور پویا بسته به موقعیت و مورد استفاده هر جزء. در ادامه، نگاهی به APIها و بارهای کاری میاندازیم و میبینیم چگونه به یکدیگر مرتبط هستند. تا پایان این مطلب، باید درک قوی از هر فناوری و کاربردها و موارد استفاده آن داشته باشید.
API چیست؟
رابط برنامهنویسی نرمافزار (API) رابطی است که ارتباطات بین برنامههای نرمافزاری مختلف را مدیریت میکند. API زبان مشترکی فراهم میکند که خدمات بتوانند با منابع ارتباط برقرار کنند و سیستمها را بهصورت یکپارچه، توسعهپذیر و مقیاسپذیر کار کنند.
یک API با اجازه دادن به یک سیستم برای فعال کردن یک بار کاری خاص عمل میکند. این بارهای کاری یک دستور میگیرند — مثلاً «دریافت یا ارسال وضعیت» — و سپس پرسوجوهای پایگاه داده یا تغییرات را برای بازیابی دادهها یا پردازش درخواست فعال میکنند.
انواع APIها
انواع مختلفی از APIها وجود دارند، هر یک با هدف یا عملکرد مشخصی ساخته شدهاند. بیایید بهطور مختصر برخی از رایجترین انواع API در بازار را مرور کنیم، مانند REST، SOAP، GraphQL، RPC و فرمتهای ناهمزمان مانند وبهوکها.
REST
بر اساس کارهای پایهای روی فیلدینگ، APIهای REST بر مدل انتقال وضعیت نمایشی (Representational State Transfer) عمل میکنند. به عبارت دیگر، مشتری نیازی به حمل وضعیت ندارد و میتواند هر درخواست را بهصورت مستقل مدیریت کند، زیرا زمینه مورد نیاز برای مدیریت درخواست در خود درخواست بستهبندی شده است. توسعهدهندگان اغلب از APIهای REST در محیطهای میکروسرویس استفاده میکنند زیرا بسیار کارآمد هستند و توسط یک سیستم زمینهای هایپرمدیا هدایت میشوند و امکان عملیات اضافی با سربار کم را فراهم میکنند. APIهای REST نسبت به سایر انواع API انعطافپذیرتر هستند، که امکان ساختارها و فرمفاکتورهای مختلف را فراهم میکند، اما همچنین پیشبینی درخواست نهایی کمتر است.
SOAP
پروتکل دسترسی ساده به اشیاء (SOAP) شکل قدیمیتری از API است که از جریانهای متمرکز سنتی نشأت میگیرد. APIهای SOAP اغلب بهعنوان یک پاکت نامه توصیف میشوند، در حالی که APIهای REST بهعنوان یک کارت پستال شناخته میشوند. یک API REST معمولاً کوچکتر اما کنترل آن سختتر است، در حالی که SOAP کنترل مستقیم بر هر جنبه API را فراهم میکند. با بستهبندی دستورات و استانداردها در درخواست، APIهای SOAP کنترل مستقیم بیشتری ارائه میدهند، که برای برخی صنایع مانند فینتک یا محیطهای مقرراتی مفید است.
GraphQL
APIهای GraphQL یک نوع مدرنتر API هستند که در آن یک اسکیمای مشخص به مشتری اجازه میدهد دادهها را به فرم یا ساختار خاصی درخواست کند. این امکان کنترل بیشتر بر خروجی نهایی را به کاربر میدهد، اما اغلب با پیچیدگی و کاهش کنترل همراه است. APIهای GraphQL بهترین کاربرد را در جریانهای داده پیچیده و محیطهایی دارند که نیاز به تغییرات مکرر دارند و فرم و عملکرد داده توسط موجودیت درخواستکننده تعیین میشود.
APIهای RPC
APIهای RPC یا فراخوانی رویه از راه دور بر اساس سیستمهای مینفریم سنتی هستند. اساساً شما بهطور مستقیم درخواست رویههای خاص راه دور را میدهید، گویی به سرور تماس میگیرید و از آن میخواهید عملکردی را انجام دهد. این امکان آزادی بیشتر در زیرساخت و پردازش را فراهم میکند اما برای وظایف پیچیده کمی سختتر است. این مدل معمولاً کنترل را در سمت سرور متمرکز میکند، که میتواند مشتریها را کمتر مفید کند. یک تغییر این مدل، gRPC، رویکردی است که توسط گوگل برای مدرنسازی RPC ارائه شده است.
APIهای ناهمزمان
در نهایت، وبهوکها و APIهای PubSub سیستمهای مشترکی هستند که دادهها توسط سرور هدایت میشوند، نه مشتری. مشتری به یک نقطه پایانی مشترک میشود و وقتی تغییرات در وضعیت یک منبع رخ میدهد، سرور مشتری را مطلع میکند و داده بهروزشده را ارسال میکند. این برای منابعی که بهندرت تغییر میکنند یا خدماتی که نیاز به کنترل بیشتر سرور بر ساختار داده و جریانها دارند، عالی است.
Workload چیست؟
همانطور که گفته شد، APIها برای انجام کار خود بارهای کاری را فراخوانی میکنند. در زمینه APIهای وب، بار کاری اساساً تمام وظایف محاسباتی و عملیاتی است که باید توسط یک سرویس انجام شود تا یک درخواست API را برآورده کند. این بارهای کاری معمولاً از چند جزء تشکیل شدهاند، با پیچیدگی متغیر بسته به ساختار API و سرویس ارائه شده. در اینجا چند مثال از بارهای کاری آمده است:
-
پرسوجوی پایگاه داده: وقتی یک API دادهای درخواست میکند، پایگاه داده باید پرسوجو شود. این توسط بار کاری انجام میشود تا اطلاعات درخواستی ارائه شود.
-
اعتبارسنجی و تبدیل دادهها: وقتی دادهها نمایش داده میشوند، ممکن است نیاز باشد به فرمتی خاص تبدیل، اعتبارسنجی و بررسی شوند. در این موارد، بار کاری ممکن است برای تغییر داده قبل از ارسال به کاربر نهایی فعال شود.
-
یکپارچهسازی خارجی: برخی سیستمها ممکن است نتوانند بهطور مستقیم به یک پرسوجو پاسخ دهند. در این موارد، ممکن است یک سرویس خارجی برای انجام این کار فراخوانی شود.
اینها تنها چند نمونه هستند، اما بارهای کاری اشکال و عملکردهای متنوعی دارند. نکته کلیدی این است که یک API رابطی است که مستقیماً یک بار کاری را درخواست میکند.
انواع بارهای کاری (Workload)
بارهای کاری به چند نوع خاص تقسیم میشوند و متغیر بودن کاربرد آنها ویژگیهای خاصشان را تعریف میکند. برخی از انواع رایج بارهای کاری عبارتند از:
-
بارهای تراکنشی: اینها عملکردهای اصلی بار کاری هستند که بیشتر افراد با آنها تعامل دارند. این بارهای کاری به درخواستهای خاص پاسخ میدهند و خدماتی مانند احراز هویت کاربر یا مسیریابی ارائه میکنند.
-
بارهای مبتنی بر رویداد: این بارهای کاری با اقدامات خاص در API فعال میشوند، مانند بارگذاری فایل یا دریافت پیام. سپس این بارهای کاری زیرسیستمها را از تغییر وضعیت مطلع میکنند تا بهروزرسانی سریع کل سیستم امکانپذیر شود.
-
بارهای دستهای: این بارهای کاری معمولاً عملیاتی هستند که از چند منبع ترکیب شدهاند. برای مثال، APIهای ناهمزمان که نیاز به پردازش دادهها بعد از ارسال همه درخواستها در یک بازه زمانی دارند، ممکن است یک بار کاری برای ذخیره و اجرای همه این عملیاتها بهطور همزمان فعال کنند.
-
بارهای ترکیبی: اینها بارهای کاری پیچیدهای هستند که از چند نوع تشکیل شدهاند و امکان عملکرد پیچیده در سراسر سیستم را فراهم میکنند.
گزینههای میزبانی برای بارهای کاری
بارهای کاری مانند APIها میتوانند در مکانها و فرمفاکتورهای مختلف میزبانی شوند. انتخاب محل اجرای بارهای کاری عمدتاً بر اساس نیازهای API و سرویسهایی که بارهای کاری باید به آنها متصل شوند، تعیین میشود.
سرورها و سیستمهای محلی
بارهای کاری میتوانند بهصورت محلی در سیستمهایی مانند Apache یا سایر راهحلهای مدیریت سرور میزبانی شوند. این معمولاً برای APIهایی که در محل اجرا میشوند رایج است، زیرا تخصیص منابع و دسترسی محلی در چنین کاربردهایی بسیار مهم است.
-
ویژگیهای کلیدی: کنترل محلی و محدود به منابع موجود
-
موارد استفاده: APIهای محلی، خدمات بینسیستمی، سختافزار محلی در محل
ماشینهای مجازی (VMs)
ماشینهای مجازی سیستمهای عامل و سختافزار دیجیتال هستند که برای عملکردهای خاص ایجاد شدهاند. ماشینهای مجازی ممکن است برای بارهای کاری ایجاد شوند تا سرورها و خدمات موقت مانند پردازش سرور ایمیل، پردازش دستهای cronjobs و سایر وظایف را ارائه دهند.
-
ویژگیهای کلیدی: سیستمهای دیجیتال کوتاهمدت یا بلندمدت که نصبهای فیزیکی را شبیهسازی میکنند
-
موارد استفاده: بهترین کاربرد برای نیازهای متغیر که ممکن است بلندمدت باشند
کانتینرها
راهحلهای کانتینری تمام سیستمهای لازم برای عملکرد در مورد استفاده مشخص را بستهبندی میکنند. راهحلهایی مانند Docker به شما امکان میدهند کد، کتابخانهها و وابستگیها را در سیستمهای کوتاهمدت بستهبندی کنید که میتوانند سریع ایجاد و نابود شوند.
-
ویژگیهای کلیدی: کوتاهمدت و موقت
-
موارد استفاده: بهترین کاربرد برای سیستمهای موقت یا کوتاهمدت که باید سریع ایجاد یا نابود شوند. استفاده متغیر از دادهها نیز میتواند به عملکرد اقتصادی کمک کند و امکان مقیاسگذاری فقط در مواقع لازم را فراهم کند.
Kubernetes (K8s)
Kubernetes واقعاً یک راهحل بار کاری نیست به معنای کانتینرها، بلکه یک راهحل ارکستراسیون برای بارهای کاری است. این زمانبند کانتینر محبوب میتواند مدیریت چندین کانتینر را انجام دهد و تعاملات پیچیده برای پردازش متغیر و خدمات پاسخگو ارائه دهد.
-
ویژگیهای کلیدی: سیستم ارکستراسیون که مدیریت کانتینرها را امکانپذیر میکند
-
موارد استفاده: راهحلهای کانتینری کوتاهمدت با نیاز به ارکستراسیون
بدون سرور (Serverless)
سیستمهای بدون سرور منابع سرور و سیستمهای مجازی را بر اساس نیاز ایجاد میکنند و امکان مقیاسگذاری بارهای کاری را با افزایش یا کاهش تقاضا فراهم میکنند.
-
ویژگیهای کلیدی: موقت و بسیار پاسخگو به افزایش یا کاهش تقاضا
-
موارد استفاده: بهترین کاربرد برای سیستمهایی با تفاوت زیاد بین بار اوج و پایه
سیستمهای ترکیبی
سیستمهای ترکیبی سیستمهایی هستند که از هر یک از رویکردهای قبلی یا سایر روشهای ذکر نشده استفاده میکنند، در ترکیبی که برای نیاز عملکردی خاص طراحی شده است. اینها اغلب بسیار پیچیده و خاص محیط یا نیاز مورد نظر هستند.
-
ویژگیهای کلیدی: سفارشی شده برای نیاز بار کاری ارائهدهنده سیستم
-
موارد استفاده: بهترین کاربرد برای تغییرات در خدمات که پذیرش کامل یک استراتژی را کمتر موثر میکند
نتیجهگیری
در نهایت، APIها و بارهای کاری بخشهای ذاتی یک سیستم هستند. در حالی که APIها اتصالات بین سیستمها را فراهم میکنند، بارهای کاری موتور این اتصالات هستند و امکان عملکرد پیشرفته را فراهم میکنند.
انتخاب بار کاری مناسب به ساختار و نیازهای خاص شما بستگی دارد، اما بارهای کاری میتوانند بسیار متغیر باشند. بنابراین، سازمانها باید بیشتر بر ارائه APIها و زیرساخت مناسب تمرکز کنند و بارهای کاری را بر اساس نیازهایشان حل کنند.
