پشته چیست؟
پشته (Stack) در دنیای توسعه وب به ترکیب چند فناوری مختلف اشاره دارد که به توسعهدهندگان فرانتاند این امکان را میدهد تا برای طراحی وبسایت از آنها استفاده کنند. یک وبسایت یا برنامه وبمحور مبتنی بر JAMstack تنها بر مبنای سه فناوری JavaScript، APIs و Markup ایجاد میشود. در این حالت، هر چیزی که کاربر روی وبسایت مشاهده میکند بر مبنای اچتیامال و سیاساس ساخته میشود. جاوااسکریپت نیز از طریق فراخوانی واسطهای برنامهنویسی کاربردی، پویایی و واکنشگرایی را به وبسایت اضافه میکند.
JAMstack چه تفاوتی با معماریهای سنتی طراحی دارد؟
اگر فناوریهای زیربنایی را که وب امروزی را شکل دادهاند بررسی کنیم، مشاهده میکنیم که همگی آنها نقش کلیدی و مهمی در پشته JAMstack دارند. قبل از اینکه راهحلهای سمت سرور ابداع شوند، توسعهدهندگان وب مجبور بودند بهشکل دستی کدهای اچتیامال بنویسند و سایتهای ایستا را در معرض دید کاربران قرار دهند.
با رشد وب، فناوریهای زیربنایی شکلدهنده آن به بلوغ رسیدند و راهحلهای پیچیده و قدرتمند سمت سرور پدید آمدند که وردپرس یکی از آنها است. پروژههای بزرگی مثل وردپرس به توسعهدهندگان اجازه میدهند با صرف کمی وقت، یک وبسایت کامل و یک سیستم مدیریت محتوای (CMS) کارآمد را برای نظارت بر محتوای وبسایت مورد استفاده قرار دهند.
در حالی که وردپرس به یکی از ابزارهای کلیدی دنیای توسعه وب تبدیل شد، اما توسعهدهندگان به دنبال آن بودند تا محتوای ثابت را با بالاترین عملکرد ارائه دهند. همچنین، آنها به دنبال یک مکانیزم طراحی کارآمد بودند که ماژولهای کمتری داشته باشد تا فرآیند تعمیر و نگهداری از وبسایتهای میزبانیشده روی سرورها سادهتر شود.
به مرور زمان، الگوهای طراحی مدرنی مثل مولدهای ایستای سایت (Static Site Generators) و راهحلهای میزبانی ابرمحوری مثل AWS S3 پدید آمدند که به توسعهدهندگان اجازه میدادند بهشکل سادهتری وبسایتهای ایستا را طراحی کنند. این موضوع در نهایت منجر به شکلگیری پلتفرمهایی مثل Netlify و Vercel شد که فرآیند توسعه را آسانتر کردند و طیف گستردهای از ویژگیهای کاربردی را با هدف بهبود فرآیند توسعه وب در اختیار توسعهدهندگان قرار دادند. بهطوری که امروزه شاهد پدید آمدن پشتههای مختلفی مثل JAMstack در دنیای توسعه وب هستیم.
JAMstack چیست؟
اگر توسعهدهنده فرانتاند باشید به احتمال زیاد با پشتههایی مثل MEAN یا MERN آشنا هستید. این پشتهها برای گروهبندی فناوریهای منحصربهفرد مورد استفاده قرار میگیرند. پشتهها ترکیبی از فناوریهای مختلف هستند که برای ساخت یک برنامه استفاده میشوند. پشته JAMstack یکی از همین پشتهها است؛ با این تفاوت که از فناوریهای خاصی نسبت به نمونههای مشابه استفاده میکند. JAMstack مربوط به کدنویسی سمت سرور نیست و روی سمت کلاینت متمرکز است. وبسایتهایی که بر مبنای فناوری JAMstack توسعه پیدا میکنند، سرعت و عملکرد بهتری نسبت به وبسایتهایی دارند که بر مبنای فناوریهای عادی توسعه پیدا میکنند.
اگر بگوییم JAMstack نوعی معماری پیشرفته نرمافزاری است که از مولفههای ازپیشساختهشده استفاده میکند تا برنامههای کاربردی وبمحور و وبسایتهایی مقیاسپذیری را توسعه دهد که سرعت و امنیت بالایی دارند، اغراق نکردهایم. انتظار میرود، این معماری نرمافزاری به یکی از ترندهای مهم فرانتاند در 2023 تبدیل شود. یکی از ویژگیهای کلیدی JAMstack قابلیت استفاده از آن همراه با ابزارهایی است که بهبود گردش کار، عملکرد و بهحداکثر رساندن بهرهوری را برای توسعهدهندگان فرانتاند به ارمغان میآورد. امروزه، بیشتر توسعهدهندگان وب در سراسر جهان از این معماری برای ساخت وبسایتها و اپلیکیشنهای وبمحور کوچک و بزرگ سازمانی استفاده میکنند که نشان از محبوبیت این فناوری دارد.
مستندات رسمی JAMstack به این نکته اشاره دارند که JAMstack معماری پیشرفتهای برای توسعه وبسایتهایی است که مبتنی بر جاوااسکریپت هستند و سمت کاربر اجرا میشوند. فناوریای که توانایی استفاده از واسطهای برنامهنویسی کاربردی با قابلیت استفاده مجدد را در اختیار توسعهدهندگان قرار میدهد و از Markup ازپیشساختهشده استفاده میکند.
JAMstack، معماری توسعه فرانتاند است. فرانتاند بخشی از وبسایت است که کاربران آنرا مشاهده کرده و به تعامل با آن میپردازند. با استفاده از معماری مذکور میتوانید وبسایتهای ایستا را با سرعت بیشتری ایجاد کرده و توسعه دهید. وبسایتهایی که با استفاده از معماری JAMstack توسعه پیدا میکنند، قادر هستند از کدهای آماده که در شبکه توزیع محتوا ذخیره شدهاند، استفاده کنند. به بیان دقیقتر، بهجای اجرای مجموعه کدهای سمت سرور برای تولید محتوای پویا، این محتوا بر مبنای مجموعهای از واسطهای برنامهنویسی کاربردی ساخته میشود. اگر معماری فوق بهدرستی توسعه پیدا کند، سرعت طراحی و بارگذاری وبسایت به میزان قابل توجهی بهبود پیدا میکند.
وبسایتهای عادی برای انجام فعالیتهای خود به سرورها و پایگاههای داده متکی هستند، اما وبسایتهای مبتنی بر معماری JAMstack حجم کمی از جاوااسکریپت را بارگذاری میکنند که از طریق واسطهای برنامهنویسی کاربردی دادههایی را دریافت کرده و آن را از طریق فناوریهای Markup و CDN برای کاربران ارسال میکنند که در نهایت توسط مرورگرها نشان داده میشود. اصطلاح JAM سرنام سه واژه JavaScript، APIs و Markup است. جاوااسکریپت، زبان برنامهنویسی وب است که در زمینه طراحی وبسایتها و وباپلیکیشنها استفاده میشود؛ به بیان دقیقتر در هر دو حوزه فرانتاند و بکاند کاربرد دارد. API سرنام Application Programming Interface، بهمعنای رابط برنامهنویسی کاربردی و راهی برای درخواست یا استفاده از دادههای یک برنامه دیگر است. Markup، زبان نشانهگذاری و کدی مانند اچتیامال و سیاساس است که دستورالعملهای موردنیاز مرورگرها در مورد ساختار صفحهها را در اختیارشان قرار میدهد. Markup، فناوری کاربردی و مهمی در این پشته است. نکته مهمی که باید به آن دقت کنید این است که مهم نیست کدهای اچتیامال خود را بهشکل دستی مینویسید یا کدهای شما در نهایت به دستورهای اچتیامال تبدیل شوند. در هر دو حالت، این کدها اولین بخش از یک برنامه وب هستند که مرورگر کاربران دریافت میکند. کدهای اچتیامال بخش مهمی از یک وبسایت هستند، به همین دلیل نحوه ارائه کدها به مرورگرها اهمیت زیادی دارد، زیرا باعث میشود وبسایتی عملکرد خوب یا ضعیف داشته باشد. بنابراین، چه چیزی یک برنامه JAMstack را بسیار عالی میکند؟
این واقعیت که شما برنامههای JAMstack را بهعنوان فایلهای ایستا بهشکل مستقیم از یک CDN ارائه میکنید، این ذهنیت را بهوجود میآورد که برنامه شما بهسرعت بارگذاری میشود. این حرف تا حدود زیادی درست است. به بیان دقیقتر، روزهایی که سرور قبل از پاسخ دادن مجبور به ساخت صفحات بود، سپری شده است. اکنون صفحه را فقط بهصورت HTML ساده یا از طریق فناوریهای واسط کلاینتمدار مثل React ارائه میدهید. در اغلب موارد، سایتهای JAMstack ارزانتر از همتایان سمت سرور خود هستند. میزبانی داراییهای ثابت نسبت به داراییهای پویا ارزانتر است. از آنجایی که فایلهای خود را از میزبانی ثابت که در بیشتر موارد یک CDN است، در اختیار کاربر قرار میدهید، مقیاسپذیری نسبتا نامحدود است.
وبسایت ایستا چیست؟
وبسایت ایستا از یک یا چند صفحه ثابت اچتیامال تشکیل میشود. این صفحات ثابت در همه مرورگرها بهشکل یکسانی نشان داده میشوند. وبسایتهای ایستا نیازی به فراخوانی اطلاعات از منابع مختلف ندارند و تنها از اچتیامال تشکیل میشوند. همین موضوع باعث میشود تا سرعت بارگذاری محتوا در این وبسایتها نسبت به نمونههای مشابه بیشتر باشد. اگر تمایل دارید، محتوای کدهای اچتیامال یک وبسایت را مشاهده کنید، کافی است پس از باز کردن وبسایت در مرورگر، در مکانی خالی از صفحه راست کلیک کنید و گزینه View Page Source را انتخاب کنید. در نقطه مقابل وبسایتهای ایستا، وبسایتها پویا قرار دارند که در هر بازدید بهشکل متفاوتی نشان داده میشوند، زیرا محتوای این وبسایتها بهشکل منظم بهروزرسانی میشود و ممکن است محتوایی که صبح روی سایت بازدید کردهاید تا عصر تغییر پیدا کند. یک نمونه روشن در این زمینه سایتهای خبری هستند که مطالب آنها دائما بهروز میشود. برای ارائه تجربه کاربری بهتر، وبسایت پویا با توجه به نوع بازدید کاربر، نحوه فعالیت او روی سایت و برای هر تغییری در دادههای ورودی، بهشکل متفاوتی به او نشان داده میشود. یک مثال ساده در این زمینه یوتیوب یا آپارات است. در هر بار نمایش وبسایت پویا، کدها باید در مرورگر کاربر یا روی سروری که میزبان صفحه وب است، اجرا شوند. همین مسئله باعث میشود تا زمان بارگذاری وبسایت طولانی شود. وبسایت JAMstack در مواقع خاص با فراخوانی واسطهای برنامهنویسی کاربردی، محتوای بهروزشدهای را به کاربر نمایش میدهد و تجربهای پویا و شخصیسازیشده در اختیار او قرار میدهد.
چگونه با استفاده از JAMstack عملکردهای بکاند را مدیریت کنیم؟
در طراحی یک وبسایت، کدهایی که در پشت صحنه اجرا میشوند و کاربر قادر به مشاهده آنها نیست، کدهای بکاند (Back-end) وبسایت هستند. بهطور معمول، کاربران در زمان مراجعه به یک وبسایت اطلاعی درباره زبان مورد استفاده در کدنویسی وبسایت ندارند و حتا کدهای بکاند سایت را مشاهده نمیکنند. با اینکه زبانهای جاوااسکریپت و نشانهگذاری در JAMstack نحوه نمایش اطلاعات به کاربر را برای وبسایت مشخص میکنند، وبسایت نیازمند توابع پشتیبان است تا بتواند بدون مشکل کار کند. JAMstack با فراخوانی واسطهای برنامهنویسی کاربردی از طریق جاوااسکریپت، از توابع بکاند بهشکل بهینه استفاده میکند.
لازم به توضیح است که استفاده از واسطهای برنامهنویسی کاربردی به این معنا است که توسعهدهندگان مجبور نیستند بکاند وبسایت را بهشکل جداگانه گسترش دهند. در حقیقت، آنها میتوانند برای ساخت وبسایتها و برنامههای کاربردی خود از واسطهای برنامهنویسی موجود استفاده کنند.
هنگامی که یک توسعهدهنده در نظر دارد، عملکرد جدیدی به برنامه وبمحور یا وبسایت خود اضافه کند، تنها کاری که باید انجام دهد، فراخوانی یک واسط برنامهنویسی کاربردی جدید است. خوشبختانه، واسطهای برنامهنویسی کاربردی قابلیت استفاده مجدد (Reusable) را دارند، در نتیجه امکان استفاده از آنها در پروژههای مختلف وجود دارد. از اینرو، هر زمان توسعهدهندگان نیاز داشته باشند یک عملکرد جدید API را به پروژهای اضافه کنند، کافی است آنرا فراخوانی کنند.
JAMstack چگونه با میکروسرویسها ارتباط برقرار میکند؟
توسعهدهندگان JAMstack که از واسطهای برنامهنویسی کاربردی استفاده میکنند، این توانایی را دارند تا کدهای بکاند را بر مبنای پارادایم برنامهنویسی میکروسرویسی توسعه دهند. در معماری میکروسرویسها، کدهای بکاند یک برنامه کاربردی به ماژولهای کوچکی تقسیم میشوند که از یکدیگر مستقل و مدیریتپذیر هستند و فرآیند استقرار و اجرای آنها بهسادگی انجام میشود. در این زمینه، معماری میکروسرویس و یک برنامه JAMstack قرابت زیادی دارد. در یک برنامه JAMstack این مکان وجود دارد تا در صورت لزوم APIهای مختلف را فراخوانی کرد.
با استفاده از JAMstack میتوان برنامهای ساخت که در بکاند نیازی به سرور ندارد. توابع بدون سرور، ماژولهای کوچک و با ویژگی قابلیت استفاده مجدد از کدهای بکاند وبسایت هستند که امکان استفاده مجدد از آنها به آسانی وجود دارد. در معماری بدون سرور (Serverless)، ضرورتی ندارد توسعهدهندگان نگران مسائل مرتبط با سرورها باشند و بهجای آن باید روی نحوه فراخوانی APIهای مرتبط با کدهای بکاند متمرکز شوند.
JAMstack چه مزایایی ارائه میدهد؟
برنامههای JAMstack بهشکل طبیعی مولفههای کلیدی یک سایت موفق یعنی زیرساخت سریع، ایمن، عملکرد بالا، انعطافپذیر و کارآمد را ارائه میکنند. بهطور کلی، معماری JAMstack با هدف سهولت در طراحی وبسایتها، افزایش سرعت و ایمنی، مورد توجه توسعهدهندگان قرار دارد، با اینحال، مزایای دیگری نیز ارائه میکند که از مهمترین آنها به موارد زیر باید اشاره کرد:
- عملکرد: تقریبا تمام محتوای یک وبسایت ساختهشده بر مبنای معماری JAMstack از فایلهای ایستا تشکیل شده که توسط CDN ارائه میشوند. بارگذاری دادهها از CDN سریعترین روش ارائه اطلاعات به کاربر است که افزایش سرعت بارگذاری وبسایت را بههمراه دارد.
- مقیاسپذیری: یک وبسایت مقیاسپذیر در هنگام افزایش ناگهانی ترافیک ورودی، بهخوبی قادر به رسیدگی به درخواستها است. با توجه به اینکه بخش فرانتاند JAMstack سریع و بکاند آن سبک است، در صورت افزایش تعداد ورودی یا تعداد عملیات انجامشده روی وبسایت، باز هم عملکرد و سرعت حفظ میشود. معماریهای رایج طراحی وب هنگام رویارویی با بارهای ترافیکی سنگین، مکانیزم کش کردن محتوا را بر مبنای منطق خاصی انجام میدهند. در JAMstack محتوا بهشکل پیشفرض در شبکه تحویل محتوا کش میشود و ضرورتی ندارد برنامهنویس درگیر منطق یا گردش کار پیچیدهای برای تشخیص نوع دادهها و زمانی شود که فرآیند کش باید انجام شود.
- سهولت در طراحی و توسعه: JAMstack به توسعهدهندگان اجازه میدهد بدون نگرانی درباره بکاند وبسایت و خطاهای احتمالی آن، روی بهبود تجربه کاربری جذاب در فرانتاند وبسایت متمرکز شوند. وبسایتهای JAMstack به فناوریهای اختصاصی یا چارچوبهای کمتر شناختهشده محدود نیستند و امکان ساخت آنها با استفاده از ابزارهای مختلف وجود دارد.
- امنیت بیشتر: در JAMstack محتوای موجود از قبل آماده شده و به کاربر تنها اجازه خواندن میدهد. از اینرو هیچگونه اعمال تغییر در محتوا یا کدها با هدف دستکاری و انجام فعالیتهای مخرب وجود ندارد. در معماری مذکور تنها از میزبانهایی که سیستم خود را بهطور مرتب از نظر مسائل امنیتی بررسی و کنترل میکنند، استفاده میشود. در مجموع باید بگوییم که JAMstack نسبت به دیگر معماریهای طراحی وب امنیت بیشتری دارد.
- قابلیت نگهداری: هنگامی که پیچیدگی در بخش میزبانی وبسایتها کم میشود، فرآیند نگهداری سادهتر میشود.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟