مشکلاتی که در مونولیت وجود نداشتند
وقتی یک برنامه از یک فرایند واحد به چندین سرویس مستقل روی شبکه تبدیل میشود، دستهای کاملاً جدید از چالشها ظاهر میشود که به آنها مغالطات محاسبات توزیعشده (Fallacies of Distributed Computing) گفته میشود. اولین و مهمترین آن این باور اشتباه است که «شبکه قابلاعتماد است»؛ در واقعیت، هر فراخوانی بین دو سرویس ممکن است به دلیل تأخیر، قطعی موقت یا خطای شبکه شکست بخورد، در حالی که یک فراخوانی تابع داخل یک مونولیت تقریباً همیشه موفق است.
چالش دوم، تراکنشهای توزیعشده است. در مونولیت، یک تراکنش پایگاهداده میتواند چند عملیات را اتمیک (all-or-nothing) انجام دهد. اما وقتی داده در چند سرویس و چند پایگاهدادهی جدا پخش شده، تضمین اتمیک بودن عملیات چندسرویسی بسیار پیچیدهتر است و به الگوهایی مانند Saga نیاز دارد.
سه چالش مهم دیگر
سوم، مشاهدهپذیری: وقتی یک درخواست کاربر از میان پنج سرویس عبور میکند، فهمیدن اینکه کدام سرویس کند شده یا خطا داده، بدون ابزار مناسب تقریباً غیرممکن است. چهارم، سازگاری نسخهها: سرویسها باید بتوانند مستقل از هم بروزرسانی شوند بدون شکستن سرویسهای دیگری که به آنها وابستهاند. پنجم، تست کردن: تست end-to-end یک جریان کاری که چند سرویس را درگیر میکند، پیچیدهتر از تست یک برنامهی یکپارچه است. در فصلهای بعد، الگوها و ابزارهایی را میبینیم که هرکدام از این چالشها را مدیریت میکنند.