قسمت سوم- طراحی نرم افزار Enterprise

تصمیم گرفتم از این به بعد نسخه فارسی مطالبی که در مدیومم می نویسم را هم منتشر و این سری اول فارسی نوشته شده است.مطالب قبلی در فرصتی مناسب ترجمه خواهم کرد و قرار خواهم داد


یکی از روش های مرسوم و بسیار پر طرفداری و کاربردی لایه بندی کردن نرم افزار بدین ترتیب مانع از بهریختگی و اشفتگی نرم افزار خواهیم شد.

در طراحی چند لایه باید به اینکه توجه کرد:

  • لایه ها برای ارتباط با یکدیگر از رابط های مخصوصی استفاده می کنند و این رابط ها همیشه ثابت هستند
  • یکی از دلایل طراحی چند لایه امکان عوض کردن یک لایه بدون نیاز به تغییر لایه قبل و بعد است
  • در طراحی چند لایه هر لایه با بعدی و قبلی ( بالایی و پایینی) خود ارتباط دارد
  • هیچ لایه نمی تواند یک لایه را دور زده (bypass) و مستقیم به لایه بعدی وصل شود

بعد از لایه بندی کردن سیستم شما باید تصمیم بگیرید که هر لایه را کجا اجرا کنیم برای مثال ما سه لایه داریم

  • لایه نمایش
  • دولایه پردازش منطق تجارتی
  • لایه سوم ذخیره سازی

این روز ها چیزی که وب سرور ها مرسوم است بدین صورت که معمولاً هر تمامی لایه ها بر روی یک ماشین فیزیکال قرار می گیرد اما در نرم افزار ها و سیستم های تجاری بزرگ نیازمند این هستیم که این لایه ها را در ماشین های مختلف اجرا کنیم و گاهی اوقات نیامند این هستیم برای مدیریت زمان قطع بودن کاربر لایه نمایش را به طور کامل در ماشین کاربر ذخیره یا اجرا کنیم.

ما برای این ماقع باید از نرم افزار مقیم استفاده کنیم ( Client side ) مثلا می توانیم از نرم افزار موبایلی یا دسکتاپی یا حتی نرم افزاری اجرایی مقیم مرورگر ( برخیone page application یا PWA ها ) استفاده کنیم. که با قطع ارتباط بین سرور و کاربر کاربر بتواند عملیات های خاصی را انجام دهد.

در این نوع نرم افزار ها 2 نکته بسیار مهم وجود دارد:

  • اپلیکیشین باید پردازش ها و عملیات های کاربر را در زمان قطع بودن اپلیکیشن از اینترنت یا اتصال به سرور ذخیره کرده و بعد از برقراری دوباره اتصال دیتابیس به موجود را با دیتابیس سرور هماهنگ شود( این موضوع روش ها و مطالب زیادی که در اینده به ان اشاره خواهیم کرد)
  • دیگر موضوع در اینجا نرم افزارها به روز رسانی نرم افزاراست. معمولاً به روزرسانی نرم افزارهایی که تماماً بر روی یک سرور قرار گرفتند بسیار آسان تر است ولی نرم افزار هایی که بخشی از آنها به صورت اپلیکیشن بر روی سیستم های کاربر اجرا میشوند معمولاً پیچیدگی هایی دارند به همین دلیل باید عملیات های انجام شده در اپلیکیشن کاربر باید کم ترین حالت های ممکن باشند و منطق تجاری یا بیزینس لاجیک باید تا حد بیشینه کوچک شده باشد علاوه بر این باید مکانیزم های دیباگ جمع آوری لاگ و به روزرسانی اجباری و مکانیزم اطلاع رسانی برای بروز رسانی از قبل فراهم شده باشد. برای اینکه پیچیدگی این موضوع را بهتر درک کنید فکر کنید ماکروسافت قصد دارد ویندوز را اپدیت کند و این کار می خواهد به صورت اجباری انجام دهد به چالش های داشتن کاربر میلیونی و حجم زیاد بسته بروز رسانی فکر کنید و خوش حال می شوم در بخش نظرات با هم صحبت کنیم

یکی از کارهایی که می توان انجام داد این است که بیزینس لاجیک مربوطه را نحوه پیاده سازی کرد که بتوان آن را به عنوان یک ماژول در سرور و کلاینت استفاده کرد به این ترتیب می‌توان به روزرسانی سرور و اپلیکیشین را سریعتر و آسانتر کرد.

در طراحی لایه لایه باید توجه کنید که نود های پردازشی شما همگی باید بر روی یک سرور یا یک کلاس اجرا شود و سعی نکنید که کدهای یک نود پردازشی را جدا کنید چون که این کار بی فایده است و باعث کاهش پرفورمنس خواهد شد مگر اینکه در موارد خاص و پیچیده شما نیاز دارید به اضافه remote facades وdata transfer object که در مطالب بعدی در مورد آن صحبت خواهیم کرد.