Layihənin servisləri: veb servislər, fon prosesləri və planlaşdırılmış tapşırıqlar.
Layihəyə fon prosesləri, planlaşdırılmış tapşırıqlar, əlavə veb servislər, verilənlər bazaları və Valkey əlavə edin — layihənin öz kodundan, başqa repozitoriyadan və ya hazır Docker image-dən. Servislər bir-birinə adla müraciət edir və hamısı bir hesabdadır.
Layihə yalnız bir prosesdən ibarət olmur. Əsas tətbiqin yanında növbə prosesini, gecə tapşırığını, ayrıca API-ni, verilənlər bazasını işlədə bilərsiniz — hər biri öz resursları olan servis kimi, hamısı isə bir hesabda.
Servislər tətbiqin İcmal bölməsində göstərilir: Servislər → Servis əlavə et. Layihədə 10 servisədək ola bilər. Əvvəlcə əsas servis işə salınmalıdır, layihənin abunəliyi isə aktiv olmalıdır (sınaq müddəti də nəzərə alınır).
Servis növləri
| Növ | Nədir |
|---|---|
| Veb servis | öz ünvanı olan başqa sayt və ya API |
| Fon prosesi | daim işləyir: növbələr, Horizon, Celery, istehlakçılar |
| Planlaşdırılmış tapşırıq | cədvəl üzrə başlayır (cron formatı, UTC), işini görür və dayanır |
| PostgreSQL, MySQL, Valkey | idarə olunan verilənlər bazaları — ətraflı: Verilənlər bazaları |
Kod haradan götürülür
Bu layihənin kodu
Eyni kod başqa cür işə salınır: növbə prosesi, planlaşdırıcı, WebSocket serveri (məsələn, Laravel Reverb), monorepo qovluğu, ayrıca API.
- Əmr mütləqdir — servisin icra etdiyi əmr, məsələn,
php artisan queue:workvə yanode worker.js. - Veb servis
$PORTdəyişənindəki portu dinləməlidir. - Planlaşdırılmış tapşırıq üçün cron formatında (UTC) Cədvəl də lazımdır, məsələn,
*/5 * * * *. - Əsas servisin hər yeni versiyası bu servislərdə də yerləşdirilir, ona görə onlar həmişə eyni kodla işləyir.
Başqa repozitoriya
Qoşulmuş Git hesabınızın başqa repozitoriyasından veb servis və ya fon prosesi — öz branch-ı ilə, lazım olduqda Layihə qovluğu və Yığım və işə salma əmrləri ilə (müəyyən etdiyimiz dəyərdən istifadə etmək üçün sahəni boş saxlayın). Onun öz yerləşdirmələri və versiyaları olur, branch-ına edilən hər push yerləşdirilir. Servislər üçün branch önizləmələri hələ yaradılmır.
Hazır Docker image
Docker Hub, GitHub Container Registry və ya istənilən digər reyestrdəki hazır Docker image-dən veb servis və ya fon prosesi — məsələn, nginx:1.27 və ya ghcr.io/org/app:tag.
- Port — Docker image-in dinlədiyi port; onu
$PORTdəyişənində də ötürürük. - Əmr — istəyə bağlıdır; boş qalsa, Docker image nəzərdə tutulduğu kimi işə düşür.
- Gizli reyestr — istifadəçi adı və şifrə və ya giriş tokeni. Onlar şifrələnmiş şəkildə saxlanılır, yalnız Docker image-i yükləmək üçün istifadə olunur və bir daha göstərilmir.
- Avtomatik yerləşdirmə aktiv olduqda gündə bir dəfə teqin yeni versiyaya keçib-keçmədiyini yoxlayır və onu yerləşdiririk. Yerləşdirmələr bölməsindəki Docker image-i yenidən yüklə bunu dərhal edir.
Bir-birinə adla müraciət
Layihənin servisləri daxili şəbəkədə bir-biri ilə adla əlaqə saxlayır: api adlı servisə digərləri api, db adlı verilənlər bazasına db, əsas servisə isə web adı ilə müraciət edir. Panel bunu «Layihədə «api» adı ilə əlçatandır» kimi göstərir. Layihənin servisləri arasındakı trafik hesablanmır.
Hər servis layihənin dəyişənlərini — o cümlədən verilənlər bazasına qoşulma məlumatlarını — və öz dəyişənlərini alır; servisin öz dəyişənləri layihənin dəyişənlərindən üstündür. Ətraflı: Mühit dəyişənləri.
Resurslar və qiymət
Hər servisin öz Yaddaş, CPU və Disk resursları var və onların qiyməti istənilən tətbiqdə olduğu kimidir: hər GB yaddaş üçün ayda $6, hər CPU nüvəsi üçün ayda $4; hər GB yaddaşa 10 GB disk daxildir, sonra hər GB üçün $0.15. Servisin yaddaşı 8 GB-dək ola bilər.
Servis əlavə etdikdə onun qiyməti layihənin hesabına əlavə olunur — cari ay üçün yalnız ayın qalan hissəsinə görə. Layihə pulsuz sınaq müddətindədirsə, yeni servislər sınaq müddəti bitənədək ödənişsizdir.
İcmal bölməsində Layihə üzrə cəmi göstərilir — layihənin bütün servislərinin birlikdə aylıq dəyəri.
Tətbiqin daxilindəki fon prosesləri
Hər zaman ayrıca servis lazım olmur. Əsas tətbiqin Proseslər bölməsində bunlar var:
- Fon prosesləri — saytın yanında daim işləyən 5 prosesədək, məsələn, növbə prosesi. Onlar tətbiqin resurslarını bölüşür və hər yerləşdirmədə yenidən başladılır.
- Planlaşdırılmış əmrlər — cədvəl üzrə 10 əmrədək (cron formatı, UTC). Onların nəticəsi jurnalda Cədvəl bölməsindədir.
- Konsol — işləyən tətbiqin daxilində, onun dəyişənləri və verilənlər bazası ilə birdəfəlik əmr icra edin. Əmr 15 dəqiqəyədək işləyə bilər; interaktiv əmrlər (tinker, shell) burada dəstəklənmir.
Fon prosesinə öz resursları lazım olduqda ayrıca servis daha yaxşı seçimdir — belə olduqda ağır növbə saytı heç vaxt yavaşlatmır.
Servisin dəyişdirilməsi
Servisi Servislər siyahısından açın. Onun Parametrlər bölməsində əmr, cədvəl, Docker image və ya branch, həmçinin resurslar təyin olunur; dəyişikliklər yadda saxlanılır və servis onlarla yenidən başladılır. Hər servisin öz Jurnal və Monitorinq bölmələri də var.