داستان ما با یک ارگانیسم تکسلولی زرد رنگ به نام کپک مخاطی آغاز میشود. دانشمندان با قرار دادن منابع غذایی در اطراف شهر توکیو متوجه شدند که این ارگانیسم میتواند بدون نیاز به یک تصمیمگیرنده مرکزی، با تصمیمگیریهای محلی شبکهای پیچیده و بسیار کارآمد شبیه به سیستم متروی توکیو بسازد. این رفتار مستقل، الهامبخش تیم مهندسی نرمافزاری شد که در سال ۲۰۲۰ با یک سیستم یکپارچه و قدیمی دستوپنجه نرم میکردند. آنها با سیستمی پر از خطاهای استقرار دستی و چرخههای انتشار بسیار کند که بین ۳ تا ۶ ماه زمان میبرد، مواجه بودند. هدف آنها گذر از این وضعیت و بازطراحی سیستم به یک پلتفرم ابری با استفاده از روشهای مدرن مهندسی بود و برای این کار تصمیم گرفتند از الگوی غیرمتمرکز کپک مخاطی پیروی کنند.
تقسیم سیستم و قدرتبخشی به تیمها
تیم توسعه برای رهایی از این ساختار درهمتنیده، با استفاده از اصول DDD، سیستم را به بخشهای مستقل و با ارتباطات سست تقسیم کرد و یک نمای کلی به نام Context Map به وجود آورد. مالکیت و مسئولیت توسعه ویژگیهای جدید، بازطراحی و رفع باگ هر بخش از این نقشه به یک تیم مشخص واگذار شد. با مستقل شدن تیمها، نیاز به یک ساختار حمایتی برای هدایت تصمیمگیریها حس میشد. به همین دلیل، آنها ۱۶ اصل معماری همسو با استراتژیهای تجاری شرکت تدوین کردند تا چارچوبی روشن برای تصمیمات تیمها شکل بگیرد. قانون اصلی که تحت عنوان فرآیند مشاوره معرفی شد بسیار ساده بود: هر تیمی میتواند هر تصمیمی بگیرد، به این شرط که از تمامی افراد متخصص و گروههای متاثر از آن تصمیم، مشاوره دریافت کند و دلایل موافقت و مخالفت را به صورت عمومی ثبت نماید.
ثبت و اشتراکگذاری تصمیمات
برای جلوگیری از هرجومرج ناشی از استقلال تیمها، ابزاری به نام سوابق تصمیمات معماری یا ADRs معرفی شد. این اسناد کوتاه، نشاندهنده چرایی و چگونگی یک تصمیم، گزینههای جایگزین بررسیشده، پیامدهای مثبت و منفی، و مشاورههای دریافتشده هستند. این اسناد در سیستم مدیریت پروژه نظیر Azure DevOps به عنوان آیتمهای کاری ذخیره میشوند تا به راحتی توسط همه اعضا قابل جستجو باشند و به عنوان یک مستند زنده و پویا عمل کنند. علاوه بر ثبت، اشتراکگذاری این تصمیمات در جلسات هفتگی عمومی به نام انجمن مشاوره معماری انجام میشود. در این جلسات که تمامی اعضا میتوانند در آن شرکت کنند، پیشطرحها و ADRهای جدید ارائه میشوند تا پیش از نهایی شدن و اتخاذ تصمیم، مورد بحث و بررسی قرار گیرند. همچنین در این انجمن، تاثیر تصمیمات از طریق بررسی هزینههای مصرفی فضای ابری و معیارهای عملکردی یا DORA metrics ارزیابی میشود.
آینده معماران در سیستم غیرمتمرکز
یکی از نگرانیهای رایج این است که با واگذاری تصمیمات به تیمها، معماران نرمافزار شغل خود را از دست بدهند، اما اینگونه نیست و جایگاه شغلی آنها کاملا امن است. در واقع نقش آنها تغییر میکند؛ معماران از تصمیمگیرندگان مطلق به تسهیلگرانی ارزشمند تبدیل میشوند که در کارگاههای تخصصی نظیر مدلسازی تهدید و طوفان رویداد به تیمها کمک کرده و به عنوان پل ارتباطی بین آنها عمل میکنند. با خارج شدن از گلوگاه تصمیمگیری و آزاد شدن وقتشان، آنها میتوانند روی حل مشکلات پیچیده تمرکز کنند. در نهایت، پیام اصلی این رویکرد روشن است: بیشتر شبیه کپک مخاطی باشید :) به تیمهای خود قدرت دهید و تصمیمگیریها را غیرمتمرکز کنید تا به اهداف مشترک خود دست یابید.
اين مطلب، بخشي از تمرينهاي درس معماري نرمافزار در دانشگاه شهيدبهشتي است.
عنوان ارائه: How to Decentralize Architecture Decisions (Without Chaos)
ارائهدهندگان: Peter Hunter & Elena Stojmilova (ارائه شده در رویداد QCon)
لینک مشاهده ویدیو: https://www.youtube.com/watch?v=8xuptSUYV20