اگر از توسعه دهندگان دنیای وب باشید و هر از گاهی سری به منابع خارجی نیز بزنید، احتمالا نام JAMstack را شنیده اید. بسیاری از توسعه دهندگان در حال برنامه نویسی با معماری JAMstack هستند اما خودشان نمی دانند. در واقع JAMstack نوعی معماری جدید برای برنامه های تحت وب است، بنابراین نه زبان برنامه نویسی است و نه ابزار خاصی برای توسعه ی وب، بلکه روشی برای توسعه ی وب است که سعی می کند وب سایت شما را امن تر کرده، عملکرد و سرعتش را بهبود بخشیده و هزینه ی مقیاس پذیری را پایین آورد. در این مقاله قصد بر آن است که شناخت کلی از این معماری بدست آوریم.
ممکن است که تا به حال کلمه JAMstack به گوشتان خورده باشد اما درست ندانید که این تکنولوژی چه چیزهایی را در بر می گیرد. خود من نیز تا چند وقت پیش درست نمی دانستم که این موضوع دقیقاً چیست. اما زمانی که آن را درک کردم متوجه شدم که قبلاً نیز از آن استفاده کرده ام. JAMstack یک معماری مدرن برای توسعه وب است. JAMstack در واقع یک رویکرد در دنیای توسعه وب است که هدف بهتر کردن کارایی، بالا بردن امنیت، کم هزینه کردن مقياس پذیری و بهبود تجربه توسعه دهنده را دارد.
JAMstack یک معماری مدرن برای توسعه وب است که براساس جاوااسکریپت سمت کاربر، API هایی با قابلیت استفاده مجدد و Markup از پیش ساخته شده ایجاد شده است. زمانی که در این معماری به کلمه Stack اشاره می کنیم، منظورمان یک زبان برنامه نویسی، سیستم عامل، وب سرور و یا دیتابیس خاص نیست. JAMstack تکنولوژی خاصی نیست، بلکه روشی جدید برای ایجاد وبسایت ها و اپلیکیشن های مبتنی بر وب است. هدف این روش نیز ارائه کارایی بهتر، امنیت بیشتر، هزینه کمتر مقیاس بندی و بهبود تجربه توسعه دهنده است. JAMstack یک تکنیک و ترفند است که توسط Mathias Biilman بنیان گذار Netlify ساخته شده است.
ممکن است تا به حال پشته هایی مانند MEAN یا MERN را شنیده باشید. این پشته ها در واقع صرفاً برای گروه بندی و یا کلاس بندی یکسری تکنولوژی منحصر به فرد استفاده می شوند. JAMstack مخففی برای سه تکنولوژی Javascript ،API و HTML است. در واقع پشته ها تنها ترکیبی از چندین تکنولوژی مختلف هستند که برای ساختن یک اپلیکیشن یا برنامه استفاده می شوند. پشته JAMstack نیز یکی از همان دست پشته ها است با این تفاوت که تکنولوژی های این مورد کمی متفاوت است. JAMstack مربوط به پروژه های سرورساید نمی شود و تنها به قسمت کلاینت اهمیت می دهد. اپلیکیشن هایی که با پیروی از JAMstack ساخته شوند، سرعت و کارایی بهتری را نسبت به حالت عادی ارائه می دهند.
وبسایت های سنتی و یا CMS ها به سرور، پلاگین ها و دیتابیس وابسته هستند و تقریباً بدون آنها نمی توانند کار کنند. اما JAMstack میتواند از طریق یکسری کد جاوا اسکریپت، دیتاهایی که از یک API که مخففی برای Application Programming Interface یا رابط برنامه نویسی اپلیکیشن است که به برنامه ها این قابلیت را می دهد تا با همدیگر صحبت کنند و دیتاهایشان را با همدیگر به اشتراک بگذارند گرفته می شوند و یکسری Markup آماده که از Static Site Generatorها گرفته شده است ، کار شما را به خوبی انجام بدهد. همچنین فایل های مورد نظر برای انجام تمام این کارها از طریق یکسری CDN که مخفف Content Delivery Network یا شبکه توزیع محتوا است که به ما این امکان را میدهد تا محتوای مدنظر را با سرعت بیشتری به کاربران تحویل دهیم. این کار از طریق به اشتراک گذاری یک فایل در بین سرورهای مختلف و اتصال نزدیکترین سرور به کاربر انجام میشود. یکی از رویکردهای مهمی که در JAMstack پیاده سازی شده استفاده از CDN است كه قابل دسترس هستند.
هیچ چیز به اندازه بارگذاری فایل های از پیش ساخته شده نمی تواند به سرعت انجام شود. این دقیقاً کاری است که JAMstack قصد انجام آن را دارد. چرا که تمام فایل های مربوط به HTML در این روال آماده هستند و تنها کافیست که از طریق یک CDN آنها را وارد پروژه نمود. بنابراین شما دیگر نیازی به Serve فایل ها از طریق یکسری درخواست به سرور و غیره ندارید. همه داده ها و اطلاعات از طریق یکسری API و یکسری فایل ثابت به ما ارسال میشود. در نتیجه خبری از سرور و دیتابیس نیست، به همین دلیل نباید نگران مشکلات امنیتی باشید. تنها با استفاده از یکسری API شما می توانید میزان مشکلات و خطرات امنیتی یک وبسایت را به شدت پایین بیاورید و به همین دلیل است که الگوی کاری JAMstack بسیار ایمن است.
بهترین رویکردهای الگوی JAMstack
• استفاده از یک CDN برای توزیع فایل ها بجای یک سرور مرکزی
• استفاده از گیت و NPM برای بالا بردن سرعت ساخت یک پروژه. اینگونه میتوان مطمئن بود که پروژه در نهایت آسانی و سرعت ساخته شده است.
• استفاده از یک Build Tool مانند Babel یا Webpack اینکار برای مطمئن شدن از اجرای پروژه در تمام مرورگرها انجام می شود.
• پشتیبانی کردن از تمام استانداردهاي وب. اینگونه میتوان مطمئن شد که همه المان ها قابلیت دسترسی پذیری بالایی دارند.
• پیاده سازی فرآیند های خودکارسازی.
مزایای معماری JAMstack
• سرعت بالا: تقریباً تمام محتوا در یک سایت JAMstack از فایل های HTML آماده در یک CDN تشکیل میگردد. این راه یکی از سریعترین روش های بارگذاری صفحات است. دلیل این موضوع نیز علاوه بر موضوع ذکر شده، عدم نیاز به بارگذاری محتوای سمت سرور و استفاده از API ها می باشد.
• مقیاس پذیر بودن: عملکرد یک برنامه مقیاس پذیر در صورت مواجه شدن با افزایش حجم کاربران و بار سیستم دچار تداخل نمی گردد. به دلیل سریع بودن فرانت اند JAMstack و سبک بودن بک اند آن، این صفحات به طور معمول از مقیاس پذیری بالایی برخوردارند.
• سهولت در طراحی : این معماری برنامه نویسان فرانت اند را قادر می سازد تا تمرکز خود را معطوف این بخش از سایت نمایند و تجربه کاربری مناسب تری را فارغ از کدنویسی بک اند برای بازدیدکنندگان ایجاد نمایند.
در این معماری از ابزارهایی مانند npm و Git استفاده کنید تا راه اندازی ساده تری را تجربه کنید. از ابزارهای مختلف برای ساخت وب سایت استفاده کنید تا در تمام مرورگرها قابل دسترسی باشد ابزارهایی مانند Babel ،Browserify، Webpack سپس مطمئن شوید که پروژه ی شما بر اساس معیارهای امروزی دنیای وب طراحی شده و کاملاً قابل دسترس است. حال از خودکار بودن فرآیند ساخت اطمینان حاصل کنید تا استرس خود و تیم خود را کاهش دهید. فرآیند deploy تست های نهایی و قرار گیری سایت روی سرور واقعی را خودکار کنید. برای این کار می توانید از سرویس هایی مانند Netlify استفاده کنید. در انتها میبایست خاطر نشان شد که فناوری های مختلفی به صورت پیش فرض در JAMstack قرار دارند که می توانید از آن ها استفاده کنید. از این فناوری ها می توان به Gatsby و NuxtJS و Hugo و Netlify CMS اشاره کرد که به اختصار در زیر توضیح داده شده اند:
1. Gatsby: فریمورکی مبتنی بر ری اکت است که به صورت متن باز ارائه میشود و به توسعه دهندگان قابلیت ایجاد سریع وبسایت و اپلیکیشن ها را میدهد.
2. NuxtJS: فریمورکی مبتنی بر ویوجی اس است که برای ایجاد اپلیکیشن های مختلف استفاده میشود.
3. Hugo: این استاتیک سایت جنراتور به سریعترین فریمورک برای ایجاد وبسایت معروف شده است. البته باید گفت که این موضوع تا حد زیادی نیز واقعیت دارد.
4. Netlify CMS: این مورد یک سیستم مدیریت محتوا منعطف و سریع است که منحصراً برای پیروی از الگوهای JAMstack ساخته شده است.
5. Contentful: یک سیستم مدیریت محتوای مناسب برای تولیدکنندگان محتوای متنی است. در این ابزار یک ادیتور حرفه ای نیز وجود دارد.
6. Svelte: یک تغییر ریشه ای در دنیای رابط های کاربری است. فریمورک های جاوااسکریپتی مانند ویو، ری اکت و غیره در مروگر اجرا میشوند، اما این ابزار روال کامپایل جداگانه ای را برای اپلیکیشن هایش در نظر میگیرد.