محیطها، Deploy و عملیات
محیطها و preview
production برای کاربران نهایی، staging برای تأیید قبل از انتشار و preview برای تغییر کوتاهعمر است. branch، auto-deploy و variableهای هر محیط را مستقل نگه دارید. در preview از credential و داده production استفاده نکنید. GitHub میتواند برای Pull Request سرویس preview بسازد و پس از بستهشدن PR آن را جمع کند.
Build، release و عملیات پایدار
Build artifact سورس را ثبت میکند؛ release یک build و snapshot تنظیمات را در محیط فعال میکند. وضعیتهایی مثل queued، building، ready و failed مربوط به build هستند. deploy، lifecycle، exposure و deletion عملیات قابل پیگیریاند و ممکن است تا رسیدن به حالت terminal چند مرحله داشته باشند.
Rollback و promote
Rollback یک build آماده قبلی را بدون ساخت دوباره به release جدید تبدیل میکند. این کار schema دیتابیس را عقب نمیبرد؛ migration باید backward-compatible یا دارای برنامه جداگانه باشد. Promote همان artifact آزمایششده را به محیط مقصد میبرد و تفاوت ناشی از rebuild را حذف میکند.
Git و deploy hook
با فعالبودن auto-deploy، push روی branch متصل build جدید میسازد و وضعیت commit در GitHub ثبت میشود. Deploy hook یک credential در URL است و برای CI استفاده میشود؛ اگر افشا شد آن را rotate کنید. Watch path در monorepo از deployهای نامرتبط جلوگیری میکند.
Web، worker، cron و replica
- web ترافیک HTTP یا TCP میگیرد؛
- worker بدون endpoint عمومی کار پسزمینه انجام میدهد؛
- cron طبق عبارت cron اجرا میشود و هر run وضعیت، زمان و exit code دارد؛
- replicaهای بیشتر process را افقی تکثیر میکنند؛ برنامه باید stateless باشد یا state مشترک را در Add-on نگه دارد.
مشاهده و کنترل
لاگ runtime از stdout/stderr میآید. Metrics مصرف CPU/RAM و ترافیک را نشان میدهد. Restart process جاری را بازراهاندازی میکند، Stop سرویس را در حالت stopped نگه میدارد و Start آن را دوباره اجرا میکند. تغییر image، command، variable یا release ممکن است reprovision ایجاد کند.