دقیقا دو روز پیش بود که کتاب Patterns of Enterprise Application Architecture مارتین فاولر رو بازم دستم گرفتم برای مطالعه ( برنامه ام مطالعه تدریجی این کتاب مفید و حرفه ای ست ).
فاولر میگه برای شخص من بزرگترین چالش ( والبته علاقه مندی ) درهنگام طراحی یک Enterprise Application بحث سر انتخاب معماری / ابزار و بررسی اینکه کدامیک چرا مناسب تر از دیگری است . ( فکر کنم منظور فاولر مرحله Suitability باشد دراین مرحله از فرایند طراحی نرم افزار روی انتخاب معماری و ابزار و زبان برنامه نویسی و حتی فریم ورک ها بحث می شود تا براساس ماهیت پروژه و مسئله ، مجموعه ای از راه حل ها / معماری / ابزارهای مناسب را انتخاب کنند ) .
فاولر میگه به هنگام انتخاب معماری / ابزار بایستی سه نکته را درنظر داشته باشید :
این بحث فاولر گوشه ذهنم بود تا اینکه دیروز با دوستی مشغول صحبتهای تخصصی از جنس دولوپری خودمون بودیم .برای ایشون جالب بود بدونند چرا باید هنوز زبانی مانند جاوا ( با این حجم از پیچیدگی و سختگیری ) خواهان داشته باشد و اصلا چرا باید تو پروژه های بزرگ از جاوا استفاده کرد .( منظورشون بیشتر آنجایی که تعداد بالایی از کاربران حضوردارد و مباحث 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 داشتند چالش ها و راه حل ها شون بنویسند :)