solmaz.oskouie (سولماز اسکویی)
solmaz.oskouie (سولماز اسکویی)
خواندن ۳ دقیقه·۵ سال پیش

اسباب بازی من بهتر از مال تو هست( اندر باب فاکتورهای تاثیر گذار در انتخاب زبانها / تکنولوژی ها )

دقیقا دو روز پیش بود که کتاب Patterns of Enterprise Application Architecture مارتین فاولر رو بازم دستم گرفتم برای مطالعه ( برنامه ام مطالعه تدریجی این کتاب مفید و حرفه ای ست ).

فاولر میگه برای شخص من بزرگترین چالش ( والبته علاقه مندی ) درهنگام طراحی یک Enterprise Application بحث سر انتخاب معماری / ابزار و بررسی اینکه کدامیک چرا مناسب تر از دیگری است . ( فکر کنم منظور فاولر مرحله Suitability باشد دراین مرحله از فرایند طراحی نرم افزار روی انتخاب معماری و ابزار و زبان برنامه نویسی و حتی فریم ورک ها بحث می شود تا براساس ماهیت پروژه و مسئله ، مجموعه ای از راه حل ها / معماری / ابزارهای مناسب را انتخاب کنند ) .

فاولر میگه به هنگام انتخاب معماری / ابزار بایستی سه نکته را درنظر داشته باشید :

  • تعداد کاربران وبحث scale سیستم مانند سیستم خرده فروشی آنلاین ( سیستم هایی که تعداد خیلی بالایی از کاربران را باید مدیریت کنند)
  • میزان پیچیدگی Domain Logic وUI مانند سیستم بستن قراردادهای لیزینگ و مالی ( در این سیستم ها ما با business logic و rule های خیلی پیچیده ای سروکار داریم ولی تعداد کاربران در طول زمان معمولا ثابت هستند )
  • تعداد و تنوع فیچر ها در گذر زمان ( سیستم هایی که خیلی ساده شروع می شوند ولی به مرور مدام بهش فیچر های آنچنانی اضافه می شود مثل سیستم پیگیری هزینه ها و درامدهای شرکت )



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

دعوا سر این زبان وآن زبان ، این تکنولوژی و اون تکنولوژی همیشه خدا بین برنامه نویسان و توسعه دهندگان نرم افزار بوده و به نظر خودم بسیار هم جذاب است ( به شرطی که مسئله شخصی و ناموسی نشود و هدف توهین و زیر سوال بودن شخصیت و سواد فرد مقابل نباشد و حدود رعایت بشود ) .

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

راستش هنوز برای خودم چندان واضح نیست چرا جاوا ؟

چرا هنوز جاوا ؟

قبل دست به قلم شدن برای نوشتن این مقاله کمی توی گوگل گشتم تا جوابی برای سوالم پیدا کنم یکی از مطالب جالبی که پیدا کردم این متن بود :


https://www.slideshare.net/120bi/scaling-a-high-traffic-web-application-our-journey-from-java-to-php

این مقاله دردسرهایی که با پلتفرم جاوایی برای Scale کردن ( یک سروررو تبدیل به دو سرور کردن ) پروژه شون داشتند و اینکه برای تامین این نیازشون مجبور شدن از جاوا به PHP مهاجرت کنند و دردسرها و پیچیدگی هایی که با افزودن ORM به پروژه شون داشتند و ... بیان می کند . اما در نهایت ...

در نهایت میگه این زبان نیست که تعیین کننده است برای scale کردن


Never let anybody tell you a language or framework does or doesn’t scale.


عوامل و فاکتورهای زیادی دخیل می شوند تا تیمی با کمترین درد و خونریزی یک پروژه با تعداد بالایی از کاربران و حجم عظیمی از ترافیک را به مرحله بلوغ و نگهداری برسانند.

این عوامل چیا هستن سعی می کنم در مقاله / مقاله های بعدی بیانشون کنم .


ته نوشت : خیلی دلم میخواست زیر همین پست دوستانی که تجربه ای تو حوزه پروژه های با ترافیک بالا ومبحث scaling داشتند چالش ها و راه حل ها شون بنویسند :)

معماری نرم افزارمارتین فاولرscalingenterprise applicationjava
Java ( web) developer. Cats lover. a left-handed(southpaw) girl . ISTJ
شاید از این پست‌ها خوشتان بیاید