Job — scheduler yoki batch tizimiga topshiriladigan, aniq maqsad va lifecycle ga ega bajarilish birligidir. U bitta command, script, container yoki bir nechta taskdan tashkil topishi mumkin. Job interaktiv so‘rovdan farqli ravishda navbatda kutishi, keyin worker yoki cluster resursida bajarilishi va natija holatini saqlashi mumkin.
Job ta’rifi
Ta’rif executable yoki image, argumentlar, environment, resurs talabi, timeout va retry siyosatini o‘z ichiga oladi. Input ma’lumot inline, object storage URLi yoki dataset reference orqali berilishi mumkin. Secret oddiy argumentga yozilsa process list va logda ko‘rinishi ehtimol; himoyalangan credential mexanizmi ishlatiladi.
Job nomi inson uchun, ID esa har submissionni noyob aniqlash uchun xizmat qiladi. Bir xil reja har kuni ishlasa, schedule nomi doimiy, run ID esa har bajarilishda yangi bo‘ladi. Bu log va metricni aniq attempt bilan bog‘laydi.
Lifecycle
Job submitted holatidan queuedga, resurs ajratilgach runningga o‘tadi. Yakunida succeeded, failed, cancelled yoki timed out bo‘lishi mumkin. Dependency yoki quota kutayotgan holat alohida ko‘rsatilishi mumkin. Status transition atomik va audit qilinadigan bo‘ladi.
Cancel signali workerga graceful to‘xtash imkonini beradi. Ma’lum grace perioddan keyin majburiy kill bajarilishi mumkin. Partial output tayyor deb e’lon qilinmasligi uchun temporary path va commit marker ishlatiladi.
Retry va idempotency
Transient network xatosida retry foydali, noto‘g‘ri inputda esa bir xil xatoni takrorlaydi. Error classification retryable va permanent holatlarni ajratadi. Exponential backoff hamda jitter tashqi servisga bir vaqtda qayta yuk tushishini kamaytiradi.
At-least-once scheduler bir jobni duplicate bajarishi mumkin. Payment, email yoki database write idempotency key bilan himoyalanadi. Faqat “oldin bajarilganmi” degan tekshiruv va keyingi yozuv orasida race bo‘lsa, atomik unique constraint yoki transaction kerak.
Resurslar
CPU, memory, GPU, disk va network talabi scheduler placementiga ta’sir qiladi. Juda past request node overcommit va evictionga, haddan tashqari yuqori request esa queue kutishiga olib keladi. Real utilization tarixidan foydalanib qiymatlar moslashtiriladi.
Job bir nechta parallel taskga bo‘linishi mumkin. Task group umumiy placement yoki lifecycle siyosatini beradi. Distributed jobda bitta task failurei butun jobni to‘xtatishi, faqat shardni qayta ishlashi yoki degraded natija berishi mumkin; semantika oldindan belgilanadi.
Natija va kuzatuv
Exit code texnik yakunni bildiradi, lekin biznes natijani to‘liq ko‘rsatmasligi mumkin. Job output manifest, processed record soni, rejected item va checksumni yozadi. Structured log run ID, task ID va attemptni saqlaydi.
Duration, queue wait, success rate, retry va resource peak kuzatiladi. Uzoq jim turgan job heartbeat yoki progress orqali hang holatidan ajratiladi. Retention tugagach log va artifact qonuniy hamda operatsion siyosat bo‘yicha o‘chiriladi.
Job dependencylari
Job boshqa dataset, artifact yoki upstream runni kutishi mumkin. Dependency faqat vaqt bo‘yicha “bir soat keyin” deb emas, tayyorlik signali yoki manifest bilan ifodalansa aniqroq. Upstream muvaffaqiyatsiz bo‘lsa downstream skip, fail yoki degraded rejim siyosatiga ega bo‘ladi.
Versiyalash
Job specification, container digest va input data versiyasi bir run metadata sida saqlanadi. Faqat “latest” image bilan tarixiy natijani takrorlash mumkin emas. Reprocessing paytida ayni kod va config kerakmi yoki yangi mantiq bilan qayta hisoblanadimi ochiq belgilanadi.
Xavfsizlik
Worker jobni ishonchsiz tenantdan qabul qilsa sandbox, network policy va filesystem limit qo‘llanadi. User bergan commandni privileged hostda bevosita bajarish remote code executiondir. Output access control input bilan bir xil tenant chegarasini saqlaydi.
Bog‘liq tushunchalar
Scheduler, Worker, Task, Queue, Retry, Idempotency key, Batch processing