برنامه نویسی

بهترین پشته فناوری برای هکرهای مستقل در سال 2023

بهترین پشته فناوری برای هکرهای مستقل – افراد انفرادی یا تیم های کوچک/متوسط ​​چیست؟ چه چارچوب نرم افزاری را باید انتخاب کنید؟ چه دیتابیسی؟ آیا باید از فریم ورک‌های قدیمی به سبک MVC استفاده کنید یا از فریمورک‌های جدید و فانتزی مبتنی بر جاوا اسکریپت؟ در این پست، با هم تمام این سوالات را بررسی می کنیم و سعی می کنیم پشته ای را انتخاب کنیم که برای ما مفید باشد!


قبل از اینکه عمیق تر شویم، اجازه دهید با چند نکته شروع کنیم:

  • اولین و مهمترین مورد این است – هیچ “پشته فناوری نهایی” به شما در حل هر مشکلی کمک نمی کند. همیشه باید ابزار مناسب برای کار را انتخاب کنید!
  • در مرحله بعد، حتی اگر می‌تواند گزینه مناسبی باشد، No-Code را در نظر نمی‌گیرم، زیرا معتقدم این یک راه‌حل بسیار کاربردی است.

گفته شد، بیایید با تعریف انتظارات خود شروع کنیم.

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

بنابراین، می توان گفت که:

  1. ما از خدمات رایانش ابری مانند AWS، Azure یا Google Cloud / Firebase استفاده خواهیم کرد.
  2. ما از پشته نرم‌افزار «خسته‌کننده» آزمایش‌شده در نبرد با بسیاری از کتابخانه‌ها و ابزارهای کمکی استفاده خواهیم کرد.
  3. ما چرخ را دوباره اختراع نخواهیم کرد. به عنوان مثال: می خواهید ایمیل بفرستید؟ – از SendGrid استفاده کنید. نیاز به احراز هویت و مجوز دارید، اما چارچوب آن را خارج از جعبه ارائه نمی دهد؟ – از Auth0 یا Firebase استفاده کنید. امیدوارم ایده گرفته باشید

خوب، با انتظارات تعیین شده، بیایید ببینیم چه چیزی در خارج وجود دارد که می توانیم برای پروژه های خود استفاده کنیم.


Jamstack

Jamstack (جاوا اسکریپت، API، پشته نشانه گذاری) یک رویکرد جدید برای نوشتن نرم افزار برای وب است.

در اصل به این معناست که

  • شما از یک SSG (Static Site Generator) استفاده خواهید کرد – در واقع تعداد زیادی از آنها وجود دارد. من توصیه می کنم به Eleventy، Jekyll و Hugo نگاه کنید. نوشتن HTML ساده (رجوع کنید به html5-boilerplate) نیز یک گزینه است، اما SSG به شما اجازه می دهد تا بیشتر صفحه دیگ بخار را در یک قالب جداگانه استخراج کنید و در زمان شما صرفه جویی کنید.
  • به احتمال زیاد، شما یک بک پایان “سنتی” نخواهید داشت. در عوض، منطق تجاری برنامه شما تا حدی در قسمت جلویی و تا حدی در عملکردهای بدون سرور (مانند AWS Lambda، Cloud Functions و غیره) قرار دارد. یکی از گزینه های خوب Firebase است. همه چیز مورد نیاز شما را دارد – احراز هویت، توابع ابری، میزبانی، پایگاه داده و بسیاری موارد دیگر.
  • شما از وانیلی جاوا اسکریپت برای افزودن تعامل به برنامه وب خود استفاده خواهید کرد.

به طور کلی، این یک گزینه بسیار قوی است. با استفاده از Firebase، میزبانی، پایگاه داده و احراز هویت خارج از جعبه خواهید داشت. توابع Cloud به شما امکان می دهد یک API برای وب و موبایل ایجاد کنید. علاوه بر این، نیازی به مدیریت هیچ زیرساختی نخواهید داشت. گوگل همه چیز را مدیریت خواهد کرد.

اما چند نکته منفی قابل توجه نیز وجود دارد:

  • اولین نقطه ضعف توابع Cloud است – حقیقت این است که مدیریت منطق پیچیده کسب و کار با استفاده از توابع ابری در مقایسه با رویکرد backend-school سخت تر است. داشتن توابع زیاد هم کمکی نمی کند. همچنین، به خاطر داشته باشید که هر فراخوانی تابع اساساً یک تماس HTTP است.
  • دومین نقطه ضعف جاوا اسکریپت وانیلی است. البته، شما می توانید از ابزارهایی مانند petite-vue یا Alpine.js استفاده کنید، اما آنها با آنچه React یا Vue ارائه می دهند بسیار فاصله دارند. به خاطر داشته باشید که دلیل خاصی برای استفاده از SSG وجود دارد. چارچوب‌هایی مانند React از چیزی به نام Virtual DOM استفاده می‌کنند که باعث می‌شود وب‌سایت شما سئوی کمتری داشته باشد، اما خوشبختانه راه‌حلی وجود دارد.

Next.js

Next.js چارچوبی است که به شما امکان می‌دهد با استفاده از React یک رابط کاربری غنی ایجاد کنید و تمام مزایای SSG را در اختیار شما قرار می‌دهد – می‌توانید کد React خود را به طور کامل در HTML ایستا از قبل رندر کنید، انتخاب کنید که در هر درخواست کامپوننت خود را در سمت سرور ارائه دهید یا کامپوننت را در سمت کلاینت مانند کامپوننت معمولی React ارائه دهید.

توجه داشته باشید، Next.js یک برنامه Node.js است، بنابراین شما پیچیدگی بیشتری برای استقرار، مدیریت/مقیاس‌سازی/نظارت آن خواهید داشت.

همچنین، مجموعه‌ای از فریم‌ورک‌های مشابه Next.js وجود دارد: Remix، Nuxt، و SvelteKit، برای نام بردن از چند مورد. همه آنها عملکرد مشابهی را ارائه می دهند. صادقانه بگویم، اگر می‌خواهید کار انجام شود – Next.js بهترین گزینه شماست، با هزاران مستندات، آموزش‌ها و کتاب‌ها.


چارچوب های فول استک قدیمی

از آنجایی که ما توافق کردیم که چرخ را دوباره اختراع نکنیم، باید چارچوبی را انتخاب کنیم که بیشتر مشکلات را برای ما حل کند. همچنین، در حالت ایده‌آل، ما می‌خواهیم بر یک فریم‌ورک تسلط داشته باشیم و آن را تا حد امکان در پروژه‌های بیشتری اعمال کنیم. یادگیری و تسلط بر یک چارچوب جدید به زمان نیاز دارد که بهتر است آن را صرف ارائه عملکرد به کاربران خود و آزمایش فرضیه های جدید کنیم.

بیایید ویژگی هایی را که ترجیح می دهیم در یک چارچوب داشته باشیم در نظر بگیریم:

  • باید یک باشد چارچوب تمام پشته. داشتن جلو و عقب به طور جداگانه دارای مزایایی است اما پیچیدگی قابل توجهی نیز دارد. به عنوان مثال، با استفاده از یک چارچوب تمام پشته می توانید داده ها را از پایگاه داده واکشی کنید، یک الگو را رندر کنید و یک صفحه HTML را در یک جریان به کاربر برگردانید. با فرانت‌اند و بک‌اند مجزا، باید یک API صادر کنید، تماس‌های HTTP برقرار کنید، استثناهای احتمالی HTTP و غیره را مدیریت کنید.
  • چارچوب باید داشته باشد یکپارچه سازی پایگاه داده داخلی. باید بتواند مهاجرت های پایگاه داده را مدیریت کند و ابزارهایی برای واکشی داده ها از پایگاه داده داشته باشد
  • باید باشد افشای یک API آسان است برای کاربران یا اپلیکیشن موبایل شما
  • از آنجایی که اکثر برنامه ها نیاز دارند احراز هویت کاربر به نوعی، ما می خواهیم چارچوب ما نیز آن را ارائه دهد. البته، می توانید استدلال کنید که یک Auth0 وجود دارد که می تواند در هر چارچوبی ادغام شود، و شما درست خواهید گفت. اما احراز هویت بومی مزایای کمی نسبت به Auth0 دارد. به عنوان مثال، کارهای ساده ای مانند تغییر رمز عبور، ایمیل یا حذف یک حساب کاربری توسط فریمورک برای شما ارائه می شود، در حالی که انجام آن با Auth0 دشوارتر است.
  • در نهایت، حتی اگر این یک نیاز “باید” نیست، من می خواهم توانایی یکپارچه سازی را داشته باشم وب سوکت به راحتی در صورت نیاز به برقراری ارتباط با کاربر در زمان واقعی

من عمداً به عملکرد / مقیاس پذیری در لیست بالا اشاره نکردم. استفاده از ابر مدرن، مقیاس بندی برنامه خود به صورت عمودی و افقی و ذخیره سازی صحیح به شما این امکان را می دهد که خدمات خود را بی نهایت افزایش دهید. به احتمال زیاد، پایگاه داده SQL شما ابتدا به گلوگاه تبدیل خواهد شد.

با توجه به همه چیزهایی که تا کنون بحث کردیم، تنها تعداد انگشت شماری از فریمورک ها همه نیازهای ما را برآورده می کنند – جنگو، روبی روی ریل، لاراول و دات نت. من در اینجا به جزئیات هر چارچوبی نمی پردازم. هر کدام خوب هستند و به شما کمک می کنند تا راه طولانی را طی کنید. در عوض، بیایید مقایسه ای در سطح بالا انجام دهیم و نقاط قوت و ضعف آنها را درک کنیم.

یکی از مشاهدات جالبی که می‌خواهم با شما به اشتراک بگذارم این است که یک عنوان در وب‌سایت هر فریم‌ورک 100% به‌طور دقیق ماهیت چارچوب را نشان می‌دهد:

جانگو

جنگو یک چارچوب وب سطح بالا پایتون است که توسعه سریع و طراحی تمیز و عملی را تشویق می کند. این برنامه که توسط توسعه دهندگان با تجربه ساخته شده است، بسیاری از دردسرهای توسعه وب را برطرف می کند، بنابراین می توانید بدون نیاز به اختراع مجدد چرخ، روی نوشتن برنامه خود تمرکز کنید. این رایگان و متن باز است.”

نقاط قوت

  • پایتون – زبان فوق‌العاده، کتابخانه عظیمی از بسته‌ها، جامعه عظیم
  • احراز هویت کاربر داخلی
  • ساده ترین در میان این چهار چارچوب
  • مستندات شگفت انگیز

نقاط ضعف

  • پشتیبانی ناهمزمان ضعیف
  • رویکرد منسوخ شده به قسمت جلویی در حالی که سایر فریم ورک ها ابزارهایی مانند Hotwire در Rails یا Blazor در Net را در اختیار شما قرار می دهند، برای رسیدن به همان هدف در جنگو، باید خودتان همه چیز را با هم هک کنید.
  • بدون خط لوله دارایی داخلی

به هر حال، من مقاله ای دارم که توانایی های جنگو را نشان می دهد.

روبی روی ریل

Rails یک چارچوب تمام پشته است. این برنامه با تمام ابزارهای مورد نیاز برای ساخت برنامه های وب شگفت انگیز در قسمت جلویی و پشتی ارائه می شود. رندر کردن قالب‌های HTML، به‌روزرسانی پایگاه‌های داده، ارسال و دریافت ایمیل، نگهداری از صفحات زنده از طریق WebSockets، صف‌بندی مشاغل برای کارهای ناهمزمان، ذخیره آپلودها در ابر، ارائه حفاظت‌های امنیتی قوی برای حملات رایج. Rails همه این کارها را انجام می دهد و خیلی بیشتر.”

نقاط قوت

  • بهترین چارچوب در اینجا از نظر بهره وری توسعه دهنده
  • سیم داغ
  • مستندات خوب
  • بسیاری از جواهرات با کیفیت بالا برای هر مناسبت

نقاط ضعف

  • بدون احراز هویت کاربر خارج از جعبه، اگرچه چند گزینه قوی وجود دارد که ادغام آنها نسبتا آسان است
  • زبان روبی برای همه نیست. با این حال، اگر ترجیحات قوی ندارید، توصیه می کنم قبل از هر گونه قضاوتی آن را امتحان کنید

لاراول

لاراول یک چارچوب برنامه کاربردی وب با نحو رسا و زیبا است. ما قبلاً پایه را گذاشته‌ایم – به شما اجازه می‌دهیم بدون عرق کردن چیزهای کوچک خلق کنید.»

نقاط قوت

نقاط ضعف

  • پرمخاطب ترین چارچوب از این چهار
  • فرآیند استقرار بسیار پیچیده است و شلیک به پای خود آسان است

.خالص

“.NET یک چارچوب رایگان، منبع باز و چند پلتفرمی برای ساخت برنامه های مدرن و سرویس های ابری قدرتمند است.”

نقاط قوت

  • Blazor – .Net پیشرفته ترین پشته front-end را در بین این چهار فریم ورک دارد

  • بهترین عملکرد احراز هویت کاربر در میان این چهار چارچوب، از جمله احراز هویت مبتنی بر جلسه، JWT و احراز هویت آسان ارائه دهنده خارجی
  • پشتیبانی شگفت انگیز از برنامه نویسی ناهمزمان
  • تایپ استاتیک
  • چارچوب پیش‌فرض Identity بسیار قابل تنظیم است و رابط کاربری پیش‌فرض مناسبی دارد، بنابراین نیازی به ایجاد قالب‌های ورود، ثبت‌نام و غیره از ابتدا نخواهید داشت.

نقاط ضعف

• اسناد می تواند بهتر باشد
• منحنی یادگیری شیب دار

چند کلمه در مورد پایگاه داده

اگرچه این یک الزام مطلق نیست، چارچوب های تمام پشته فوق الذکر فرض می کنند که شما از یک پایگاه داده SQL استفاده خواهید کرد. صادقانه بگویم، اگر به پایگاه داده نیاز دارید، دلیل خوبی برای اجتناب از پایگاه داده SQL وجود ندارد. MySQL و PostgreSQL مدرن همه چیزهایی را که شما نیاز دارید، حتی انواع json با نمایه سازی دارند و برای چرخش در فضای ابری بسیار ارزان هستند.


نتیجه

بنابراین، “در آن صورت کدام پشته بهترین است؟” می توانید از من بپرسید … خب، پاسخ این است – بستگی دارد:

  • اگر می خواهید یک فرضیه را آزمایش کنید و MVP را با هم خیلی سریع هک کنید، Jamstack بهترین دوست شما خواهد بود
  • استفاده کنید Next.js + Firebase یا .خالص اگر در حال ساخت یک رابط وب بسیار تعاملی هستید
  • اگر تازه شروع کرده اید و با هیچ یک از چارچوب ها تجربه ندارید – جانگو یا روبی روی ریل بهترین گزینه های شما خواهد بود
  • اگر در حال ساخت یک برنامه هوش مصنوعی هستید و می خواهید مدل ML را به همراه کدهای دیگر خود در یک سرویس نگه دارید، انتخاب کنید جانگو
  • اگر یک توسعه دهنده یا یک تیم با تجربه هستید، شدیداً شما را تشویق می کنم که امتحان کنید .خالص. عملکرد Blazor به سادگی با سایر فریم ورک ها بی نظیر است. همچنین، تایپ ایستا، پشتیبانی استثنایی از برنامه نویسی ناهمزمان و چارچوب هویت از نقاط قوت فروش هستند.
  • اگر چارچوب “چاقوی ارتش سوئیس” را می خواهید بهترین گزینه شما خواهد بود روبی روی ریل یا .خالص

در ادامه، من می خواهم یک بار دیگر تأکید کنم که هیچ “پشته فناوری نهایی” وجود ندارد. شما همیشه باید نیازهای خود را با آنچه هر فناوری ارائه می دهد تحقیق و مقایسه کنید. امیدوارم این مقاله بتواند به عنوان نقطه شروعی برای تحقیقات شما باشد و شما را در مسیر درست راهنمایی کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا