معایب FaaS
معماری FaaS شمارو مجبور میکنه که تک تک اجزاء سرویس شما از همدیگه strongly decoupled باشن و این نکته درسته که سرعت توسعه سرویس رو برای شما زیاد میکنه، اما مرحله operation و maintenance روی پروداکشن رو پیچیده میکنه. تنها راه communication تابع های شما network هست و همچنین توابع local memory ندارن و مجبورن همه چیز رو در storage service ذخیره کنن. همچنین وقتی مشکلی در سرویس بوجود میاد تشخیص مشکل خیلی سخت تر میشه. چون توابع شما کاملا مستقل از هم هستن و دیباگ کد سخت خواهد بود.
راه چاره اینه که monitoring خیلی خوبی روی سرویس هاتون راه اندازی کنید که هنگام بوجود اومدن مشکل بتونید راحت source خطارو پیدا کنید. هر چند این قضیه پیچیدگی monitoring در مقابل سادگی FaaS قرار میگیره و این trade-offیه که شما حین طراحی باید توجه کنید بهش ببینید FaaS ارزشش رو داره یا خیر.
معمولا FaaS بخاطر ذات serverless بودنش در زمان اجرا time-bound هست و این مساله استفاده از FaaS رو برای انواع processing مخصوصا background processing مشکل میکنه.
همچنین بخاطر عدم داشتن local memory برای برخی استفاده ها که دیتای زیادی رو در ram لازم داره مناسب نیست. چون با هر بار اجرای تابع مجبور هستیم حجم زیادی از دیتا رو لود کنیم. لود کردن خود دیتا به اندازه کافی latency ایجاد میکنه که استفاده از FaaS رو نامناسب کنه. مثلا سرویس search یه نمونه از این درخواست هاست. شاید یه راه حل این باشه که خب با هر بار اجرای function که مجبوره دیتای زیادی رو لود کنه، جای پاسخگویی به یک درخواست، چندین درخواست پاسخ داده بشه که این latency مربوط به لود اولیه دیتا تاثیرش کم بشه. اما خب نکته ش اینه که اگه شما تابع رو برای پاسخگویی به تعداد زیادی درخواست بالا نگه دارید احتمالا به ازاء هر درخواست دارید به cloud provider هزینه بیشتری رو میپردازید که عملا overpay میشه.
#faas
#designing_distributed_systems_brendan_burns
@gocasts
Post #102
942
Go Casts | Systems & Agents 🚀 خب حالا بهتره در مورد این صحبت کنیم که FaaS چه زمانی یه انتخاب درسته مزایای FaaS اولین مزیتش برای developer هاست، که به شدت پروسه استقرار رو ساده میکنه و کافیه که فقط کدتون رو push کنید روی سرور که اجرا بشه همین!! نیازی نیست هیچ artifact دیگه ای رو بسازید…