مفاهیم اصلی
اپلیکیشن
اپلیکیشن ظرف یک محصول است: سایت فروشگاه، API آن، دیتابیس و دامنههایش همه در یک اپلیکیشناند. اعضا و نقشها برای هر اپلیکیشن جدا تعیین میشوند و سرویسهای یک اپلیکیشن در یک شبکهٔ خصوصیاند و هم را پیدا میکنند. دو محصول بیربط را در دو اپلیکیشن بگذارید.
در CLI و API به اپلیکیشن «project» میگویند.
سرویس
سرویس یک برنامهٔ در حال اجراست: یک سایت، یک API، یک worker یا یک کار زمانبندیشده. منبعش میتواند گیت، پوشهٔ بارگذاریشده، ایمیج داکر یا قالب بازارچه باشد. همهٔ سرویسها، از هر منبعی، یکجور مدیریت میشوند: لاگ، متغیر، دامنه، نسخه و تنظیمات.
هر سرویس یکی از این نوعهای دسترسی را دارد: وب عمومی، خصوصی یا TCP.
سرویسها همیشه روشناند و با نیامدن درخواست خاموش نمیشوند. اگر سرویسی را «توقف» کنید، تا وقتی خودتان «شروع» نزنید خاموش میماند.
محیط
محیط یک نسخهٔ جدا از کل اپلیکیشن است، مثلاً production برای کاربران واقعی و staging برای آزمایش. هر محیط سرویسها، دیتابیسها و متغیرهای خودش را دارد، پس تغییری در staging به production نمیرسد. محیطها
افزونه
افزونه یک دیتابیس یا سرویس آماده است که گردو نگهداریاش میکند: PostgreSQL، MariaDB، MongoDB، Redis، RabbitMQ یا MinIO. به سرویس وصلش میکنید و آدرس اتصال (مثل DATABASE_URL) خودکار به سرویس میرسد. از دیتابیسها هر روز نسخهٔ پشتیبان گرفته میشود. دیتابیسها
دیسک
فایلسیستم سرویس موقت است و با هر استقرار پاک میشود. فایلهایی که باید بمانند (آپلود کاربران، فایل SQLite) را روی دیسک ماندگار بنویسید. دیسک ماندگار
ساخت و نسخه
هر بار که کد تازه میرسد، گردو آن را میسازد و یک ایمیج آماده درست میکند. وقتی آن ایمیج با متغیرهای همان لحظه اجرا میشود، یک نسخه منتشر شده است. برای برگشتن به نسخهٔ قبل لازم نیست دوباره بسازید؛ گردو همان ایمیج قبلی را اجرا میکند. نسخهها و بازگشت
اگر از Railway یا Render آمدهاید: اپلیکیشن همان project است، سرویس همان service، و افزونه همان database. ارجاع به متغیرها هم با همان قالب ${{ Service.VAR }} کار میکند. متغیرها