Deployment — dasturiy ta’minotning sinovdan o‘tgan versiyasini maqsadli muhitga joylashtirib, foydalanuvchilar uchun ishlaydigan holatga keltirish jarayonidir. U faqat fayllarni serverga ko‘chirishdan iborat emas. Build artefakti, konfiguratsiya, ma’lumotlar bazasi o‘zgarishi, xizmatni ishga tushirish, trafikni yo‘naltirish va natijani tekshirish birgalikda deploymentni tashkil etadi.
Artefakt va muhit
CI jarayoni manba koddan executable, package, container image yoki static fayllar kabi o‘zgarmas artefakt yaratadi. Bir xil artefakt staging va productionga ko‘tarilsa, muhitlar orasidagi farq kamayadi. API manzili, maxfiy kalit va resurs limiti artefakt ichiga qattiq yozilmay, tashqi konfiguratsiya orqali beriladi.
Deployment identifikatori commit hash, image digest yoki release raqami bilan bog‘lanadi. Bu ishlab chiqarishda aynan qaysi kod ishlayotganini aniqlash va avvalgi versiyani qayta chiqarish imkonini beradi.
Strategiyalar
Recreate eski nusxani to‘xtatib, yangisini ishga tushiradi. Sodda, ammo downtime bo‘lishi mumkin. Rolling deployment instanslarni navbat bilan yangilaydi va xizmatni davom ettiradi. Eski hamda yangi versiya bir muddat birga ishlagani uchun API va schema mosligi talab qilinadi.
Blue-green deployment ikkita bir xil muhitdan foydalanadi. Yangi versiya bo‘sh muhitda tekshiriladi, so‘ng trafik birdan unga o‘tkaziladi. Canary deployment yangi versiyani trafikning kichik qismiga beradi; metrikalar sog‘lom bo‘lsa ulush oshiriladi.
Ma’lumotlar bazasi o‘zgarishi
Schema migration deploymentning eng ehtiyotkor qismidir. Eski kod hali ishlayotgan paytda ustunni darhol o‘chirish xato keltirishi mumkin. Expand-and-contract usulida avval yangi schema eski kod bilan mos qo‘shiladi, keyin kod yangi tuzilishga o‘tadi, oxirgi bosqichda eski maydon olib tashlanadi.
Katta jadvaldagi migration lock yoki I/O yukini oshirishi mumkin. Uning davomiyligi va rollback semantikasi stagingda real hajmga yaqin ma’lumot bilan tekshiriladi. Ma’lumotni qaytarib bo‘lmaydigan o‘zgarish oddiy kod rollbackidan alohida reja talab qiladi.
Sog‘lomlik tekshiruvi
Readiness probe instans trafik qabul qilishga tayyorligini, liveness probe esa jarayonni qayta ishga tushirish kerakligini bildiradi. Yangi versiya ishga tushgani deployment muvaffaqiyatli degani emas. Error rate, latency, resurs va asosiy biznes amallari kuzatiladi.
Smoke test login, o‘qish yoki yozish kabi muhim oqimlarni yangi muhitda tekshiradi. Deployment logi kim, qachon va qaysi versiyani chiqarganini saqlaydi.
Rollback va roll-forward
Rollback trafikni avvalgi ishlaydigan versiyaga qaytaradi. Roll-forward esa xatoni yangi tuzatish bilan bartaraf etadi. Qaror schema va tashqi shartnoma holatiga bog‘liq. Avtomatik rollback noto‘g‘ri signalga asoslanmasligi uchun sog‘lomlik mezonlari oldindan aniq belgilanadi.
Graceful shutdown
Yangilanishda eski instans trafikdan chiqarilgach, faol so‘rovlarni tugatishi uchun qisqa muddat ishlashda davom etadi. Jarayon termination signalini qabul qilib yangi ish olmasligi, connection va background tasklarni nazoratli yopishi kerak. Darhol o‘chirish yarim bajarilgan request, uzilgan file upload yoki qayta navbatga tushmagan xabar qoldirishi mumkin. Grace period tugaganda platforma jarayonni majburan to‘xtatadi, shuning uchun uzoq vazifa alohida durable queuega topshiriladi. Load balancer readinessni o‘chirgan payt bilan barcha edge yoki connectionning yangilanishi orasida ham kechikish bo‘lishi mumkin.
Deployment yakunida eski instanslar, vaqtinchalik image va feature flaglar nazoratsiz qolmaydi; aks holda muhit xarajati hamda keyingi release murakkabligi ortadi.
Bog‘liq tushunchalar
CI/CD, release, rolling deployment, blue-green deployment, canary release, migration, rollback