سم نیومن: میکروسرویس، آخرین راهحله
خلاصهٔ کاملتر
تو این قسمت از پادکست The Pragmatic Engineer، گرگلی اوروس با Sam Newman حرف زده. نیومن کتاب پرفروش Building Microservices رو نوشته، ولی خودش میکروسرویس رو یه معماری «آخرین راهحل» میدونه. اون حتی تو همون جلسهی حدوداً دهنفرهای بوده که اوایل دههی ۲۰۱۰ اسم microservices پیشنهاد شد. کتاب جدیدش هم Building Resilient Distributed Systems هست.
نیومن دو تعریف از میکروسرویس میده. تعریف دقیق: سرویسی که مستقل deploy میشه، یعنی با تغییرش لازم نیست سرویس دیگهای هم deploy بشه. تعریف نرمتر: سرویسهایی که بر اساس کارکرد کسبوکار جدا شدن، نه بر اساس لایهی فنی. اون هشت مغالطهی معروف محاسبات توزیعشده رو هم به سه قانون خلاصه کرده: انتقال اطلاعات زمان میبره، چیزی که میخوای باهاش حرف بزنی گاهی در دسترس نیست، و منابع بینهایت نیستن. به تجربهی نیومن، بیشتر قطعیها از قانون سوم میان، یعنی تموم شدن CPU، حافظه یا پهنای باند.
دربارهی idempotency (یعنی اینکه انجام چندبارهی یه عملیات همون اثر یهبار انجامش رو داشته باشه، مثل پرداختی که با رفرش دوبار کسر نشه) دو روش رو مقایسه میکنه. Idempotency key یعنی کلاینت یه شناسهی یکتا مثل UUID میفرسته و سرور مطمئن میشه هر کلید فقط یهبار اجرا بشه. ساختنش تمیزه ولی اضافه کردنش به سیستم قدیمی سخته، چون کلاینت و سرور هر دو باید عوض بشن. Fingerprint یعنی سرور از فیلدهای مهم درخواست hash میسازه. اضافه کردنش راحتتره، ولی ممکنه درخواست درست رو تکراری حساب کنه. نیومن یه سیستم پرداخت دانمارکی رو مثال میزنه که خریدهای هممبلغ تو بازهی ۵ دقیقه رو رد میکرد.
اون برای تابآوری به چهار مفهوم David Woods ارجاع میده: Robustness (سیستم مثل قبل کار کنه، مثلاً Kubernetes یه pod خراب رو جایگزین کنه، که البته پیچیدگی اضافه میکنه)، Rebound (چقدر سریع برمیگرده)، Extensibility (کنار اومدن با اتفاقهای غیرمنتظره) و Adaptability (تغییر سیستم برای پشتیبانی از کارکردهای جدید). همینطور میگه موقع تصمیمگیری دربارهی fail open یا fail closed، یعنی ادامه دادن یا متوقف شدن موقع خطا، باید زمینهی کسبوکار رو در نظر گرفت.
بخش مهمی از گفتگو دربارهی هوش مصنوعیه. نیومن معتقده دنیای تکنولوژی دربارهی LLMها سادهلوحه، چون LLMها مدل جهان نیستن و درک علت و معلول ندارن. به همین خاطر به نظرش guardrailها راهحل بلندمدت نیستن. اون از «تسلیم شناختی» هم هشدار میده، یعنی اینکه هوش مصنوعی به جای آزاد کردن وقت برای فکر کردن، باعث context switch بیشتر و ساعتهای کاری طولانیتر شده. پیشنهادش اینه که سیستم رو multi-vendor و multi-model طراحی کنی تا راحت بتونی ارائهدهنده رو عوض کنی، و اول مرز ماژولها رو خودت دقیق طراحی کنی، بعد بذاری هوش مصنوعی فقط داخل همون ماژولها آزادانه کار کنه.
نکات کلیدی:
- نیومن میکروسرویس رو «آخرین راهحل» میدونه و معیار اصلیش رو deploy مستقل میدونه.
- سه قانون سیستم توزیعشده: تأخیر شبکه، در دسترس نبودن منابع، و محدود بودن منابع.
- به تجربهی نیومن، بیشتر قطعیها از تموم شدن منابع مثل CPU و حافظه میان.
- Idempotency key تمیزتره ولی هم کلاینت و هم سرور باید تغییر کنن؛ fingerprint فقط سمت سرور عوض میشه ولی خطای تشخیص داره.
- چهار مفهوم تابآوری از David Woods: Robustness، Rebound، Extensibility و Adaptability.
- برای استفاده از LLM، سیستم رو چندارائهدهندهای بساز و هوش مصنوعی رو داخل مرز ماژولهای خودت نگه دار.




