احکام مقدس معماری سیستم مستقل (که توسط یک پروژه نشان داده شده است)

معماری نرم افزار اغلب با اتصال تنگ ، مسائل وابستگی و طرح های انعطاف پذیر مبارزه می کند و مقیاس و سازگاری را دشوار می کند. معماری سیستم مستقل (ISA) اصول با ارتقاء مدولار ، تاب آوری و استقلال بین اجزای سیستم ، راه حل ارائه می دهد.
برای نشان دادن این اصول در یک سناریوی عملی و واقعی در دنیای واقعی ، ما آنها را به عنوان ده فرمان ISA ارائه می دهیم ، هر کدام از طریق سیستم پارکینگ هوشمند نشان داده شده اند-یک راه حل مدرن که به رانندگان کمک می کند تا فضاهای پارکینگ را به طور کارآمد پیدا کنند ، رزرو کنند و هزینه کنند.
فرمان اول: سیستم را به ماژول های مستقل تقسیم می کنید
𓀃 اصل: یک سیستم باید از ماژول های مستقل تشکیل شود که فقط از طریق رابط های تعریف شده در تعامل هستند. هیچ ماژول نباید به جزئیات اجرای داخلی دیگری اعتماد کند.
🅿 مثال پارکینگ هوشمند:
- ماژول در دسترس بودن پارکینگ (سنسورها و دوربین ها) به طور مستقیم به پایگاه داده ماژول پرداخت دسترسی ندارد. درعوض ، از طریق API ارتباط برقرار می کند و استقلال را تضمین می کند.
- این اجازه می دهد تا منطق در دسترس بودن پارکینگ بدون شکستن سیستم پرداخت تکامل یابد.
دستور 2: معماری کلان و میکرو جداگانه
𓀃 اصل: تصمیمات معماری باید به دو سطح تقسیم شود:
- معماری کلان: قوانینی که برای همه ماژول ها اعمال می شود (به عنوان مثال ، با استفاده از ارتباطات همزمان یا ناهمزمان ، مستندات استاندارد ، احراز هویت ، آزمایش ادغام و غیره).
- معماری میکرو: تصمیماتی که در هر ماژول گرفته شده است (به عنوان مثال ، زبان برنامه نویسی ، انتخاب پایگاه داده).
فرمان 3: ماژول ها را به عنوان فرآیندهای جداگانه یا ظروف مستقر می کنید
𓀃 اصل: برای اطمینان از انزوا و استقلال ، هر ماژول باید به عنوان یک فرآیند جداگانه ، ظرف یا ماشین مجازی مستقر شود.
🅿 مثال پارکینگ هوشمند:
- سرویس در دسترس بودن پارکینگ ، مدیریت کاربر و پردازش پرداخت در ظروف Docker جداگانه اجرا می شود ، و اطمینان می دهد که خرابی در یک سرویس کل سیستم را خراب نمی کند و چرا در خوشه Kubernetes خرابی صفر نیست.
فرمان چهارم: ادغام و ارتباطات را استاندارد می کنید
𓀃 اصل: این سیستم باید از مجموعه ای از پروتکل های ارتباطی محدود و استاندارد ، یا همزمان (استراحت ، GRPC) یا ناهمزمان (Kafka ، RabbitMQ) استفاده کند.
🅿 مثال پارکینگ هوشمند:
- این سیستم API های استراحت را با بارهای JSON برای تعامل همزمان اجرا می کند.
- از ارتباطات محور رویداد ناهمزمان برای به روزرسانی سنسور استفاده می شود (به عنوان مثال ، یک رویداد کافکا هنگام اشغال یک پارکینگ اطلاع می دهد).
فرمان 5: شما ابرداده را استاندارد می کنید
𓀃 اصل: ابرداده مانند تأیید اعتبار ، قابلیت ردیابی و شناسه های ورود به سیستم باید در تمام ماژول ها استاندارد شود.
🅿 مثال پارکینگ هوشمند:
- کلیه درخواست های API شامل یک نشانه JWT برای تأیید اعتبار است ، و اطمینان حاصل می کند که کاربران نیازی به ورود جداگانه برای خدمات مختلف ندارند.
- هر درخواست دارای یک شناسه ردیابی است و به سیستم امکان ردیابی معاملات را از طریق میکروسرویس ها امکان می دهد.
فرمان ششم: هر خط لوله تحویل مداوم خود را به هر ماژول می دهید
𓀃 اصل: هر ماژول باید یک خط لوله CI/CD مستقل داشته باشد و به طور جداگانه آزمایش شود تا از پیشرفت ماژولار اطمینان حاصل شود.
🅿 مثال پارکینگ هوشمند:
- سرویس پرداخت و سرویس سنسور پارکینگ دارای خطوط لوله CI/CD جداگانه است که به آنها امکان می دهد به طور مستقل به روز یا ثابت شوند.
- تست های خودکار و تست های ادغام اطمینان حاصل می کنند که به روزرسانی های جدید عملکرد موجود را خراب نمی کنند.
فرمان هفتم: عملیات استاندارد را استاندارد می کنید
𓀃 اصل: پیکربندی ، استقرار ، تجزیه و تحلیل ورود به سیستم ، ردیابی ، نظارت و هشدار باید برای ساده سازی مدیریت استاندارد شود.
🅿 مثال پارکینگ هوشمند:
- کلیه خدمات از Kubernetes برای استقرار ، پرومتئوس برای نظارت و پشته ELK برای تجزیه و تحلیل ورود به سیستم استفاده می کنند.
- در صورت عدم موفقیت سرویس ، هشدارهای خودکار به تیم های DevOps برای تحقیق اطلاع می دهند.
فرمان هشتم: شما استانداردها را در سطح رابط اجرا می کنید
𓀃 اصل: استانداردهای گسترده سیستم باید در سطح رابط اجرا شود و امکان انعطاف پذیری در هر ماژول را فراهم می کند.
🅿 مثال پارکینگ هوشمند:
- هر ماژول باید با استفاده از JSON برای تبادل داده ، یک API آرامش بخش را در معرض دید خود قرار دهد. تیم پس زمینه تا زمانی که با قرارداد API مطابقت داشته باشد ، می تواند از زبانهای مختلف برنامه نویسی (پایتون ، جاوا ، Node.js) در داخل ماژول های خود استفاده کند.
فرمان نهم: ماژول ها را انعطاف پذیر می کنید
𓀃 اصل: ماژول ها باید با خرابی ها به طرز حیرت انگیزی ، جبران مشکلات خرابی و شبکه را انجام دهند.
🅿 مثال پارکینگ هوشمند:
- اگر سرویس پرداخت کاهش یابد ، کاربران هنوز هم می توانند یک پارکینگ را رزرو کنند و مجدداً پرداخت برای پردازش بعدی صف بندی می شود.
- یک الگوی قطع کننده مدار مانع از خرابی مکرر سیستم می شود.
فرمان دهم: اجازه می دهید ماژول ها جابجا و مقیاس شوند
𓀃 اصل: ماژول ها باید طراحی شوند تا بدون شکستن در محیط های مختلف مهاجرت کنند.
🅿 مثال پارکینگ هوشمند:
- سیستم پارکینگ هوشمند را می توان در AWS ، Google Cloud یا پیش فرض با حداقل تغییرات مستقر کرد.
- مقیاس خودکار تضمین می کند که با افزایش ترافیک ، نمونه های جدید API پارکینگ به طور خودکار می چرخند.
چگونه پروژه نرم افزاری بعدی شما می تواند از اصول ISA بهره مند شود؟ بیایید در نظرات بحث کنیم! ☺