تا اینجای این سری، دربارهٔ نوشتن پرامپت خوب، نشاندادن کدبیس به مدل و رفع خطا صحبت کردیم؛ همهٔ اینها به شما کمک میکنند اپی بسازید که روی سیستم خودتان کار میکند. اما یک اپ واقعی معمولاً باید دادهها را جایی نگه دارد، کاربران را بشناسد، و در نهایت روی اینترنت در دسترس دیگران باشد. این سه مفهوم — دیتابیس، احراز هویت، دیپلوی — همان جایی هستند که وایب کدینگ از «بازی با کد» به «ساختن چیزی واقعی» تبدیل میشود، و دقیقاً همان جایی هستند که یک اشتباه ساده میتواند به از دسترفتن داده یا نفوذ امنیتی ختم شود. این مقاله این سه مفهوم را بدون فرض هیچ دانش قبلی توضیح میدهد و میگوید کجاها باید محتاطتر باشید.
لیست مطالب
دیتابیس یعنی چه
دیتابیس محلی است که اطلاعات اپ شما — کاربران، یادداشتها، سفارشها، هر چیزی — بهصورت دائمی نگه داشته میشود؛ برخلاف localStorage که فقط در مرورگر یک نفر میماند، دیتابیس روی یک سرور قرار دارد و همهٔ کاربران به آن دسترسی دارند. برای شروع لازم نیست جزئیات فنی دیتابیس را بدانید؛ کافی است این تصویر ذهنی را داشته باشید: دیتابیس مثل یک انبار طبقهبندیشده است که هر «جدول» یک قفسه است و هر «رکورد» یک آیتم روی آن قفسه.

احراز هویت یعنی چه
احراز هویت (authentication) یعنی اپ شما بفهمد این کاربر واقعاً همان کسی است که ادعا میکند؛ یعنی همان فرآیند ورود با ایمیل و رمز عبور، یا ورود با گوگل. جدا از آن، یک مفهوم دیگر هم هست به نام مجوزدهی (authorization) که مشخص میکند این کاربر شناختهشده اجازهٔ چه کارهایی را دارد. اشتباه رایج این است که این دو را با هم قاطی کنیم؛ اینکه کاربر لاگین کرده به این معنی نیست که او اجازهٔ دیدن دادهٔ کاربر دیگر را هم دارد.
دیپلوی یعنی چه
دیپلوی (deploy) یعنی اپی که روی سیستم شما کار میکند را روی یک سرور میگذارید تا هرکسی با یک آدرس اینترنتی به آن دسترسی داشته باشد. تفاوت اصلی محیط لوکال و محیط دیپلویشده در این است که در محیط لوکال فقط شما آن را میبینید و اشتباهات بیخطرند؛ اما بعد از دیپلوی، هر باگ یا حفرهٔ امنیتی بهصورت بالقوه در معرض دید همه است.
| مفهوم | توضیح ساده | جایی که باید مراقب باشید |
|---|---|---|
| دیتابیس | محل نگهداری دائمی دادهها روی سرور | بکاپگیری منظم و دسترسی محدود |
| احراز هویت | تشخیص هویت واقعی کاربر | رمزها هرگز بهصورت متن ساده ذخیره نشوند |
| مجوزدهی | اینکه هر کاربر چه اجازهای دارد | هر کاربر فقط باید به دادهٔ خودش دسترسی داشته باشد |
| دیپلوی | در دسترسگذاشتن اپ روی اینترنت | کلیدهای مخفی هرگز در کد عمومی قرار نگیرند |
جاهایی که حتماً باید حواستان باشد
- رمزها و کلیدهای مخفی: هیچوقت رمز دیتابیس، کلید API یا هر اطلاعات حساس دیگر را مستقیم داخل کد ننویسید، خصوصاً اگر آن کد را جایی مثل یک مخزن عمومی قرار میدهید. اینها باید در متغیرهای محیطی (environment variables) نگه داشته شوند که جدا از کد هستند.
- دسترسیها: وقتی از مدل میخواهید بخشی از اپ را بسازد که به دادهٔ کاربر دسترسی دارد، همیشه صریح بگویید که هر کاربر فقط باید دادهٔ خودش را ببیند. این نکته را در پرامپت بنویسید، فرض نکنید مدل خودش رعایت میکند.
- بکاپ: قبل از اینکه اپ شما کاربر واقعی داشته باشد، مطمئن شوید سرویسی که برای دیتابیس انتخاب کردهاید، بکاپ خودکار دارد یا خودتان یک روال دستی برای گرفتن نسخهٔ پشتیبان تنظیم کردهاید. یک خطای ساده در یک دستور میتواند کل داده را پاک کند.
- محیط تست در برابر محیط واقعی: تغییرات بزرگ را اول روی یک نسخهٔ آزمایشی امتحان کنید، نه مستقیم روی نسخهای که کاربران واقعی از آن استفاده میکنند.
پرامپت نمونه برای رعایت دسترسی صحیح:
در این تابع که لیست سفارشهای کاربر را برمیگرداند، مطمئن شو
فقط سفارشهایی که owner_id آنها برابر با شناسهٔ کاربر لاگینکرده است
برگردانده میشود، نه همهٔ سفارشهای دیتابیس.
همچنین کلید اتصال به دیتابیس را از متغیر محیطی بخوان، نه بهصورت مستقیم در کد.
چند اصطلاح دیگر که زیاد میشنوید
در کنار سه مفهوم بالا، چند اصطلاح دیگر هم هست که خوب است معنایشان را بدانید تا در مستندات ابزارها گم نشوید. API یعنی رابطی که دو نرمافزار از طریق آن با هم حرف میزنند؛ وقتی اپ شما با دیتابیس یا یک سرویس بیرونی صحبت میکند، معمولاً از طریق یک API این کار را انجام میدهد. سرور یعنی همان کامپیوتری (معمولاً در یک مرکز داده) که اپ شما بعد از دیپلوی روی آن اجرا میشود. هاست یا هاستینگ یعنی سرویسی که این سرور را در اختیار شما میگذارد. لازم نیست از قبل نام سرویس خاصی را بدانید؛ وقتی به مرحلهٔ دیپلوی رسیدید، گزینهها را بر اساس نوع پروژهتان بررسی کنید.
چطور شروع کنیم بدون گمشدن
لازم نیست همهٔ این مفاهیم را یکجا یاد بگیرید. مسیر معمول این است: اول اپ را بدون دیتابیس و بدون لاگین بسازید (مثل پروژهٔ یادداشت در مقالهٔ قبل)، بعد دیتابیس اضافه کنید، بعد احراز هویت، و در نهایت دیپلوی. هر مرحله را جدا تست کنید و به مرحلهٔ بعد نروید تا مطمئن نشوید قبلی درست کار میکند. اگر میخواهید همین ترتیب را بهصورت یک نقشهٔ کامل با تمرینهای عملی دنبال کنید، نقشهٔ راه وایب کدینگ دقیقاً همین مسیر را پوشش میدهد، و اگر هنوز مفاهیم پایهایتر برایتان روشن نیست، راهنمای کامل وایب کدینگ نقطهٔ شروع بهتری است.
جمعبندی
- دیتابیس محل دائمی نگهداری دادههاست؛ احراز هویت تشخیص هویت کاربر است؛ دیپلوی یعنی در دسترسگذاشتن اپ روی اینترنت.
- رمزها و کلیدهای مخفی هرگز مستقیم داخل کد نروند؛ همیشه در متغیرهای محیطی نگه داشته شوند.
- در هر پرامپتی که به دادهٔ کاربر مربوط میشود، صریح بگویید هر کاربر فقط باید به دادهٔ خودش دسترسی داشته باشد.
- قبل از داشتن کاربر واقعی، بکاپگیری دیتابیس را تنظیم کنید؛ یک اشتباه ساده میتواند غیرقابلجبران باشد.
- مراحل را جدا جدا بسازید و تست کنید: بدون دیتابیس، با دیتابیس، با احراز هویت، سپس دیپلوی.
