برنامه فولاستک چیست؟ توضیح ساده به زبان روان
برنامه فولاستک برنامهای است که همه لایههای لازم برای کارکردن را دارد: فرانتاند که مردم میبینند و روی آن کلیک میکنند، بکاند که روی سرور اجرا میشود و قوانین را اعمال میکند، و پایگاه داده که همه چیز را به خاطر میسپارد. یک لیست کارهایی که کارهایتان را ذخیره میکند، اجازه میدهد با هر دستگاهی وارد شوید و به هیچ کس دیگری فهرستتان را نشان نمیدهد، فولاستک است. یک صفحه تکی که فقط ساعت کاری شما را نشان میدهد، نیست.
«استک» فقط به معنی لایههای فناوری است که روی هم سوار شدهاند. «فول» یعنی همهشان هستند.
چرا وقتی با هوش مصنوعی میسازید اهمیت دارد
وقتی برنامهای را برای یک سازنده هوش مصنوعی توصیف میکنید، کلماتی که به کار میبرید تعیین میکند کدام لایهها ساخته شوند. «یک صفحه بساز که منوی ما را نشان دهد» یک فرانتاند میسازد. «بگذار مشتریها از منوی ما سفارش دهند و آشپزخانه سفارشهای جدید را ببیند» هر سه لایه را لازم دارد، چون سفارشها باید ذخیره شوند، بین دو نوع کاربر به اشتراک گذاشته شوند و خصوصی بمانند.
دانستن این تفاوت در سه جهت کمک میکند:
- چیزی را که لازم دارید درست درخواست کنید. اگر میخواهید دادهها ذخیره شوند، صریح بگویید. سازندهای که فقط فرانتاند میسازد، تمام به نظر میرسد اما با تازهسازی صفحه همه چیز را فراموش میکند.
- کامل بودن ظاهری را تشخیص دهید. یک نمونه با دادههای نمونه میتواند دقیقاً شبیه یک برنامه کاری باشد. دانستن لایهها به شما کمک میکند بررسی کنید داده واقعاً جایی میرود.
- هزینههای اجرایی را بفهمید. یک فرانتاند بهتنهایی میتواند بهصورت فایلهای ایستا سرویس شود. بکاند و پایگاه داده برنامههایی هستند که روی سرورها اجرا میشوند، و بیشترین هزینه میزبانی از همینجا میآید.
یک تشبیه روزمره: رستوران
یک رستوران را در نظر بگیرید.
- سالن غذاخوری فرانتاند است. منوها، میزها و دفترچه یادداشت گارسون. همان چیزی است که مهمانان میبینند و باید دلپذیر و آسان برای استفاده باشد.
- آشپزخانه بکاند است. مهمانان هرگز وارد آن نمیشوند. سفارش میگیرد، بررسی میکند غذا موجود است، آن را میپزد و درخواستهای عجیب را رد میکند. قوانین اینجا زندگی میکنند.
- انبار و دفتر سفارشها پایگاه داده هستند. آنچه وجود دارد و آنچه سفارش داده شده را نگه میدارند، تا با عوض شدن شیفت چیزی فراموش نشود.
رستورانی که فقط سالن غذاخوری دارد میتواند منوی قشنگی نشانتان دهد، اما نمیتوانید غذا بخورید. این یک برنامه فقط-فرانتاند است که وانمود میکند فولاستک است.
سه لایه با جزئیات بیشتر
| لایه | کجا اجرا میشود | وظیفهاش | فناوری معمول |
|---|---|---|---|
| فرانتاند | در مرورگر بازدیدکننده | نمایش صفحهها، دریافت ورودی، احساس سرعت | HTML، CSS، جاوااسکریپت، اغلب React |
| بکاند | روی سروری که کنترلش با شماست | بررسی دسترسیها، اعمال قوانین کسبوکار، صدا زدن سرویسهای دیگر با کلیدهای محرمانه | Node.js، Python، C#، Java و دیگران |
| پایگاه داده | روی سرور، کنار بکاند | ذخیره و پیدا کردن قابلاعتماد داده | Postgres، MySQL، SQLite |
لایهها به ترتیب ثابتی با هم حرف میزنند. فرانتاند از طریق یک API — مجموعه درخواستهای تعریفشدهای که بکاند میپذیرد — چیزی را از بکاند میخواهد. بکاند درخواست را بررسی میکند، پایگاه داده را میخواند یا در آن مینویسد و پاسخی برمیگرداند. فرانتاند هرگز مستقیم با پایگاه داده حرف نمیزند.
این ترتیب مهمترین ایده امنیتی کل استک است. هر چیزی در فرانتاند را بازدیدکننده میتواند بخواند و تغییر دهد، چون روی دستگاه خودش اجرا میشود. پس قوانین — «فقط مالک میتواند این فاکتور را ببیند»، «یک کوپن فقط یک بار قابل استفاده است» — باید در بکاند اعمال شوند. برای جزئیات بیشتر این تقسیم، فرانتاند در برابر بکاند را ببینید.
یک مثال کامل: اپلیکیشن رزرو کلاس یوگا
فرض کنید مربی یوگا هستید و میخواهید مردم بتوانند آنلاین کلاس رزرو کنند.
کاری که بازدیدکننده انجام میدهد: سایت را باز میکند، کلاسهای این هفته را میبیند، یکی را لمس میکند، وارد میشود و یک جا رزرو میکند.
آنچه زیر پوشش رخ میدهد:
- فرانتاند برنامه کلاسها را نشان میدهد. برای پر کردن آن از بکاند میپرسد: «کلاسهای این هفته چیست و چند جا باقی مانده؟»
- بکاند از پایگاه داده کلاسها را میخواهد، رزروهای هر کدام را میشمارد و پاسخ میدهد.
- بازدیدکننده روی رزرو میزند. فرانتاند میفرستد «کلاس ۴۲ را برای این شخص واردشده رزرو کن».
- بکاند بررسی میکند: آیا این شخص واقعاً وارد شده است؟ آیا کلاس پر است؟ آیا قبلاً آن را رزرو کرده؟ فقط اگر همه چیز درست باشد، یک ردیف رزرو جدید در پایگاه داده مینویسد.
- بکاند پاسخ «رزرو شد» میدهد و فرانتاند تأییدیه را نشان میدهد.
- بعداً صاحب استودیو وارد میشود و فهرست کلاسها را میبیند. بکاند بررسی میکند که او مدیر است، قبل از نشان دادن نام همه.
حالا تصور کنید این فقط فرانتاند ساخته شده بود. برنامه ممکن است نمایش داده شود و دکمه رزرو ممکن است یک تیک قشنگ نشان دهد، اما رزرو با تازهسازی ناپدید میشد، شمارش «جای باقیمانده» برای بقیه اشتباه بود و صاحب استودیو هرگز آن را نمیدید. مرحله ۴ — بررسیها — کاملاً غایب بود. این تفاوت عملی است.
اصطلاحات کلیدی
- فرانتاند (سمت کلاینت): بخشی که در مرورگر اجرا میشود.
- بکاند (سمت سرور): بخشی که روی سرور اجرا میشود. به آن سرور API هم میگویند.
- پایگاه داده: جایی که داده به شکلی سازمانیافته ذخیره میشود. پایگاه داده چیست را ببینید.
- API: فهرست درخواستهایی که بکاند از فرانتاند یا برنامههای دیگر میپذیرد.
- احراز هویت (Authentication): بررسی اینکه کسی کیست (ورود). مجوزدهی (Authorisation): بررسی اینکه چه کاری مجاز است انجام دهد.
- استقرار (Deployment): قرار دادن همه لایهها روی سرورها تا عموم بتوانند از آن استفاده کنند.
- یکپارچه در برابر سرویسها: یک برنامه که همه کار را انجام میدهد، در برابر چند برنامه کوچکتر جدا (مثلاً یک وبسایت و یک API جداگانه). هر دو فولاستک هستند.
اشتباهات رایج و باورهای غلط
- «ظاهرش تمام است، پس تمام است.» داده نمونه و یک دکمه که کار میکند، همان داده ذخیرهشده نیستند. صفحه را تازهسازی کنید، در یک پنجره خصوصی باز کنید و بررسی کنید داده هنوز آنجاست.
- گذاشتن قوانین در فرانتاند. پنهان کردن یک دکمه امنیت نیست. اگر بکاند بررسی نکند، هر کسی که درخواست را بداند میتواند آن را بفرستد.
- گذاشتن کلیدهای محرمانه در فرانتاند. کلید یک سرویس پرداخت یا هوش مصنوعی در کد مرورگر برای هر بازدیدکننده قابل خواندن است. کلیدها باید در بکاند باشند، در متغیرهای محیطی — متغیرهای محیطی و رازها را ببینید.
- فکر کردن اینکه فولاستک یعنی پیچیده. یک برنامه فولاستک کوچک میتواند چند صفحه، چند مسیر بکاند و سه جدول پایگاه داده باشد. این توصیف لایههاست، نه اندازه.
- فکر کردن اینکه باید خودتان همه فناوریها را انتخاب کنید. هر استک معقول و پرکاربردی برای یک نسخه اول کافی است. مهمتر از آن توصیف روشن دادهها و قوانین است.
از سازنده هوش مصنوعیتان چه بخواهید
برنامه را بر حسب سه لایه توصیف کنید، حتی اگر اسمشان را نمیدانید:
- داده: «کلاسها (نام، زمان، ظرفیت) و رزروها (کلاس، شخص، زمان رزرو) را در یک پایگاه داده ذخیره کن.»
- قوانین: «یک کلاس بیشتر از ظرفیت رزرو نشود. هر شخص فقط یک بار میتواند یک کلاس را رزرو کند. فقط مدیران بتوانند ببینند چه کسی رزرو کرده.»
- صفحهها: «یک برنامه هفتگی، تأییدیه رزرو، یک صفحه مدیریت که رزروها را به تفکیک هر کلاس فهرست میکند.»
- بررسیها: «این قوانین را روی سرور اعمال کن، نه فقط در صفحه. کلیدهای API را روی سرور نگه دار.»
سپس مثل یک آدم شکاک آزمایش کنید: تازهسازی کنید، با دو شخص متفاوت وارد شوید، و سعی کنید دادهای را ببینید که نباید ببینید. راهنمای ساخت برنامه با هوش مصنوعی این چرخه را از ابتدا تا انتها توضیح میدهد.
برنامههای فولاستک در Mythex
Mythex برنامههای وب فولاستک را از یک توصیف در چت میسازد. بهطور پیشفرض یک برنامه جدید یک فرانتاند React و TypeScript میگیرد؛ وقتی برنامه نیاز به ذخیره داده داشته باشد، Mythex یک پایگاه داده Postgres اختصاصی به پروژه اضافه میکند، و میتوانید یک سرور API جداگانه (مثلاً با Python، Node، C# یا Java) کنار وبسایت بخواهید. همه چیز با هم در یک پیشنمایش زنده اجرا میشود و روی یک آدرس عمومی منتشر میشود. صفحه برنامههای چندسرویسی در مستندات نشان میدهد وبسایت و API چطور با هم پیشنمایش و منتشر میشوند، و صفحه سازنده برنامه فولاستک نقطهشروعهایی دارد.
پرسشها
فولاستک یعنی چه؟
فولاستک یعنی یک برنامه همه لایههای لازم برای کار کردن بهتنهایی را داشته باشد: فرانتاند که مردم میبینند و با آن کار میکنند، بکاندی که روی سرور اجرا میشود و قوانین را اعمال میکند، و پایگاه دادهای که دادهها را نگه میدارد. توسعهدهنده فولاستک کسی است که میتواند روی همه این لایهها کار کند.
آیا یک وبسایت برنامه فولاستک است؟
همیشه نه. یک سایت معرفی با صفحات ثابت فقط فرانتاند است. وقتی به سرور و پایگاه داده نیاز پیدا کند، فولاستک میشود — مثلاً اینکه مردم بتوانند ثبتنام کنند، سفارش ثبت کنند یا دادههای شخصیشان را ببینند.
آیا به برنامه فولاستک نیاز دارم یا فقط فرانتاند کافی است؟
اگر برنامهتان باید بین بازدیدها چیزی را به خاطر بسپارد، دادهها را برای هر کاربر خصوصی نگه دارد، پرداخت بگیرد یا با رازهای محرمانه با سرویسهای دیگر حرف بزند، به بکاند و پایگاه داده نیاز دارید و پس فولاستک است. اگر فقط اطلاعات نشان میدهد، فرانتاند کافی است.
آیا هوش مصنوعی میتواند یک برنامه فولاستک بسازد؟
بله. سازندههای برنامه با هوش مصنوعی میتوانند از روی توصیف با زبان روزمره، فرانتاند، بکاند و جدولهای پایگاه داده را بنویسند و همه را با هم در پیشنمایش اجرا کنند. همچنان باید دادهها و اینکه چه کسی مجاز به دیدن چه چیزی است را توصیف کنید و نتیجه را آزمایش کنید.