انتخاب معماری نرم‌افزار با هوش مصنوعی: از «بستگی دارد» تا تصمیمِ مکتوب

مونولیت یا میکروسرویس، کدام زبان و چارچوب، کدام پایگاه‌داده؛ این راهنما نشان می‌دهد چطور سؤالِ معماری را طوری به چند مدل بدهی که به جایِ جوابِ کلیشه‌ای، معامله‌هایِ واقعی را ببینی.

انتخاب معماری نرم‌افزار با هوش مصنوعی وقتی جواب می‌دهد که از مدل‌ها «بهترین معماری» را نپرسی، بلکه قیدهایِ واقعیِ پروژه‌ات را بدهی و بخواهی گزینه‌ها را زیرِ همان قیدها بسنجند. یک مدل به‌تنهایی معمولاً یا جوابِ کلیِ «بستگی دارد» می‌دهد یا سراغِ گزینه‌ی پرطرفدارِ روز می‌رود. چند مدل که هر کدام از یک گزینه دفاع کنند و ضعفِ بقیه را پیدا کنند، معامله‌ها را روشن‌تر نشان می‌دهند؛ تصمیمِ آخر همچنان با توست، اما این بار با دلیلِ مکتوب.

چرا «بستگی دارد» جوابِ غلطی نیست، ولی کافی هم نیست

معماری تقریباً همیشه معامله است: هر انتخاب چیزی می‌خرد و بهایش را جایِ دیگری می‌پردازد. میکروسرویس، یعنی شکستنِ سیستم به چند سرویسِ کوچکِ مستقل، استقرار و مقیاس‌پذیریِ جداگانه‌ی هر بخش را می‌خرد و بهایش را با فراخوانی‌هایِ شبکه‌ای، سخت شدنِ یکپارچگیِ داده بینِ سرویس‌ها، ردیابیِ خطا در چند جا و بارِ عملیاتیِ بیشتر می‌پردازد. مونولیت، یعنی یک برنامه‌ی واحد با یک استقرار، سادگی، تراکنشِ یکجا و بازآراییِ آسان را می‌خرد و وقتی تیم بزرگ می‌شود و استقرارها به هم گره می‌خورند، بهایش را می‌پردازد.

پس «بستگی دارد» درست است؛ مشکل این است که نمی‌گوید به چه. وقتی سؤالِ کلی از یک مدل می‌پرسی، دو سوگیری جوابش را می‌کشد. اول، متن‌هایی که مدل از آن‌ها یاد گرفته پر از نوشته‌هایی است که گزینه‌هایِ پرسروصدا را ستایش می‌کنند، پس جواب به سمتِ مدِ روز می‌رود. دوم، اگر در سؤالت تمایلت پیداست («می‌خواهم میکروسرویس کار کنم، خوب است؟»)، مدل احتمالاً با تو همراه می‌شود. راهِ فرار از هر دو، دادنِ قیدهایِ مشخص و نشاندنِ صدایِ مخالف سرِ میز است.

قدمِ اولِ انتخاب معماری نرم‌افزار با هوش مصنوعی: قیدها را بنویس

یک سؤالِ معماریِ خوب بیشتر شبیهِ یک صفحه شرحِ وضعیت است تا یک جمله. این‌ها را صادقانه بنویس:

در چندهوش پیش از شروع می‌توانی «تأییدِ فرض‌ها» را بزنی تا فرض‌هایِ پنهانِ سؤالت فهرست شوند و تو هر کدام را بپذیری یا رد کنی. در سؤال‌هایِ معماری این مرحله خیلی به کار می‌آید، چون فرض‌هایی مثلِ «به‌زودی کاربرانِ خیلی زیادی خواهید داشت» یا «تیم با کانتینر و ابزارهایِ مدیریتِ آن راحت است» بی‌صدا جواب را عوض می‌کنند. «بررسیِ برداشتِ ما» هم کمک می‌کند مطمئن شوی سؤال همان‌طور که منظورت بوده فهمیده شده. سندِ نیازمندی‌ها را به‌صورتِ PDF پیوست کن، اگر نمونه‌ی اولیه داری مخزنِ گیت‌هابش را وصل کن، و برآوردِ بار را در یک فایلِ Excel یا CSV بگذار.

سه تصمیمی که بیشتر رویِ میز می‌آیند

مونولیت، مونولیتِ ماژولار یا میکروسرویس

بینِ این دو سرِ طیف، گزینه‌ی سومی هست که اغلب نادیده می‌ماند: مونولیتِ ماژولار. یک برنامه با یک استقرار، اما با ماژول‌هایی که مرزِ روشن دارند؛ هر ماژول جدول‌هایِ خودش را دارد و فقط از راهِ رابطِ مشخص با بقیه حرف می‌زند، نه با سرک کشیدن به داده‌هایِ آن‌ها. این انتخاب سادگیِ مونولیت را نگه می‌دارد و درِ جدا کردنِ یک ماژول در آینده را باز می‌گذارد.

برایِ تیم‌هایِ کوچک و محصولِ تازه، توصیه‌ی رایجِ مهندسی شروع از همین نقطه است، مگر دلیلِ محکمی برایِ جدا کردن وجود داشته باشد: بخشی که بارش با بقیه خیلی فرق دارد، یا تیم‌هایِ جدا با زمان‌بندیِ انتشارِ جدا. یک اصلِ شناخته‌شده هم می‌گوید ساختارِ سیستم‌ها معمولاً شبیهِ ساختارِ ارتباطیِ تیمی می‌شود که آن را می‌سازد؛ یعنی سه سرویسِ جدا برایِ یک تیمِ دونفره اغلب فقط مرزهایی می‌سازد که کسی نیازی به آن‌ها نداشت. سؤالِ خوب برایِ میز این است: «کدام بخش واقعاً باید مستقل مستقر شود، و چه نشانه‌ای ثابت می‌کند که وقتش رسیده؟»

انتخابِ زبان و چارچوب

در انتخابِ استک (مجموعه‌ی زبان، چارچوب و ابزارها)، دانشِ فعلیِ تیم معمولاً از هر مقایسه‌ی فنی مهم‌تر است. بعد از آن، کتابخانه‌هایِ آماده برایِ دامنه‌ی خاصِ تو، امکانِ پیدا کردنِ نیرو و بلوغِ ابزارها برایِ نگه‌داریِ بلندمدت می‌آیند. به جایِ «فلان چارچوب بهتر است یا بهمان؟» از میز بپرس: «با این نیازمندی‌ها، در هر گزینه کدام کار سخت‌تر از حدِ انتظار خواهد بود؟» این سؤال مدل‌ها را از فهرستِ کلیِ مزیت‌ها بیرون می‌کشد.

پایگاه‌داده

برایِ داده‌ای که تراکنش و رابطه دارد، پایگاه‌داده‌ی رابطه‌ای انتخابِ پیش‌فرضِ امنی است. ذخیره‌سازِ سندمحور وقتی معنا دارد که شکلِ داده واقعاً متغیر است، نه فقط چون طراحیِ جدول حوصله می‌خواهد. پایگاه‌داده را برایِ مقیاسی که هنوز نداری انتخاب نکن؛ لایه‌ی کش و جدا کردنِ خواندن از نوشتن را می‌شود بعداً اضافه کرد، اما عوض کردنِ خودِ پایگاه‌داده یکی از پرهزینه‌ترین جابه‌جایی‌هاست.

کدام نوعِ نشست برایِ کدام سؤالِ معماری

در انتخاب معماری نرم‌افزار با هوش مصنوعی، شکلِ سؤال تعیین می‌کند کدام قالبِ نشست بیشترین کمک را می‌کند:

شکلِ سؤالنوعِ نشستچرا
دو گزینه‌ی مشخص، مثلاً مونولیت یا میکروسرویسمناظرهصندلی‌ها به موافق و مخالف تقسیم می‌شوند و داورِ مستقل می‌گوید کدام طرف قوی‌تر بود.
سه یا چند گزینه‌ی رقیب، مثلاً سه استکِ متفاوتآرناهر صندلی مدافعِ یک پیشنهاد است و بعد از هر دورِ نقد، با رأیِ روشن یکی حذف می‌شود تا برنده بماند.
طرحی آماده که می‌خواهی حفره‌هایش را پیدا کنیراستی‌آزماییصندلی‌ها مستقل طرح را وارسی می‌کنند و حکم درست، نادرست یا تا حدی درست است.
هنوز گزینه‌ای نداریتولیدِ ایده‌ی عمیقهدف گزینه‌هایِ متنوعی است که رویِ هم ساخته می‌شوند، نه یک تصمیم.
فقط می‌خواهی ببینی هر مدل خودش چه می‌گویدمقایسه‌ی خالصبدونِ بحث و داور، جوابِ کاملِ هر صندلی کنارِ هم نشان داده می‌شود.
مطمئن نیستیهوشمندِ هدایتگرچندهوش خودش قالبِ مناسب را برایِ موضوع انتخاب می‌کند.

اگر با قالبِ مناظره آشنا نیستی، مناظره هوش مصنوعی توضیح می‌دهد طرف‌ها چطور چیده می‌شوند و داور به چه چیزی نگاه می‌کند.

یک نمونه‌ی فرضی: آرنا برایِ سامانه‌ی رزروِ باشگاه‌ها

این بخش نمونه‌ی فرضی است و فقط شکلِ کار را نشان می‌دهد؛ نشست، تیم و نتیجه‌ی واقعی نیست.

فرض کن تیمی سه‌نفره، با یک برنامه‌نویسِ بک‌اند، می‌خواهد سامانه‌ی رزروِ آنلاین برایِ چند باشگاهِ ورزشی بسازد: رزروِ سانس، پرداخت، پیامکِ یادآوری و پنلِ مدیریت. نسخه‌ی اول باید ظرفِ سه ماه آماده شود و بار در روزهایِ اولِ هر ماه، که ثبت‌نام‌ها باز می‌شود، جهش دارد.

حکمِ نوشته‌شده در این نمونه می‌تواند چنین باشد:

برنده شدنِ یک پیشنهاد در آرنا یعنی زیرِ همین قیدها دفاع‌پذیرتر بود، نه این‌که بقیه همیشه غلط‌اند. اگر قیدها عوض شوند، مثلاً تیم بزرگ شود، همان نشست با قیدهایِ تازه ممکن است حکمِ دیگری بدهد.

از حکم تا سندِ تصمیم

بسیاری از تیم‌ها تصمیم‌هایِ معماری را در قالبی به نامِ ADR (سندِ کوتاهِ تصمیمِ معماری) ثبت می‌کنند: زمینه، تصمیم، گزینه‌هایی که کنار رفتند و پیامدها. حکمِ چندهوش تقریباً همین اجزا را دارد، پس تبدیلش ساده است:

  1. حکم را به Word ببر تا ویرایش‌پذیر باشد.
  2. موردهایِ توافق را به بخشِ «دلایلِ تصمیم» منتقل کن.
  3. گزینه‌هایِ حذف‌شده را با دلیلِ حذفشان در بخشِ «گزینه‌هایِ کنارگذاشته» بنویس.
  4. قوی‌ترین مخالفتِ باقی‌مانده را به‌عنوانِ «ریسکِ شناخته‌شده» ثبت کن؛ این همان چیزی است که شش ماه بعد باید دوباره نگاهش کنی.
  5. از «نقشه‌ی تصمیم» برایِ توضیحِ چراییِ حکم به هم‌تیمی‌ها استفاده کن و سند را در خودِ مخزن نگه دار.

یک نکته‌ی مهم دیگر برگشت‌پذیری است. تصمیم‌هایی که برگرداندنشان ارزان است، مثلِ انتخابِ یک کتابخانه داخلِ یک ماژول، ارزشِ نشستِ عمیق ندارند؛ با عمقِ «سریع» یا حتی بدونِ میزگرد جلو برو. عمق و هزینه را برایِ تصمیم‌هایی نگه دار که برگرداندنشان گران است: مدلِ داده، شکستنِ پایگاه‌داده، یا انتخابِ زبانِ اصلی.

کجا حرفِ مدل‌ها را با احتیاط بخوان

سبکِ استدلالِ مدل‌ها هم با هم فرق دارد و با هر نسخه عوض می‌شود. در مقایسه ChatGPT و Claude و Gemini روشی آمده که رویِ سؤالِ خودت امتحانشان کنی، و فهرستِ خانواده‌هایِ در دسترس را در صفحه‌ی مدل‌ها می‌بینی.

جمع‌بندی

انتخاب معماری نرم‌افزار با هوش مصنوعی یعنی سؤالِ کلی را به قیدهایِ مشخص تبدیل کنی، گزینه‌ها را در قالبی مثلِ مناظره یا آرنا در برابرِ هم بگذاری و حکم را به سندی تبدیل کنی که دلیل، ریسک و زمانِ بازنگری دارد. مدل‌ها جایِ قضاوتِ تو و شناختت از تیم را نمی‌گیرند، اما کمک می‌کنند معامله‌هایی را ببینی که در یک گفت‌وگویِ تک‌مدلی پنهان می‌ماند. برایِ کاربردهایِ دیگر کاربردهایِ چندهوش در تصمیم‌گیری را ببین.

وقتی معماری انتخاب شد و کد نوشته شد، بررسی کد با هوش مصنوعی قدمِ بعدی است. و اگر هنوز مطمئن نیستی خودِ محصول ارزشِ ساختن دارد، پیش از هر تصمیمِ فنی سراغِ بررسیِ ایده‌ی کسب‌وکار برو.

اولین میزگردت را بچینصفحهٔ اصلی چندهوش