Bosh sahifa Wiki Continuous delivery

Continuous delivery

Continuous delivery — dasturiy ta’minotdagi har bir tasdiqlangan o‘zgarishni avtomatik build, test va paketlash orqali istalgan vaqtda productionga chiqarishga tayyor holatda saqlash amaliyotidir. Release tez-tez bo‘lishi mumkin, lekin production deployment inson tasdig‘i yoki biznes qarori bilan boshlanishi ehtimol. Asosiy maqsad chiqarish jarayonini takrorlanuvchan, kichik va kam xavfli qilishdir.

Pipeline bosqichlari

O‘zgarish version controlga tushgach build boshlanadi. Unit test, static analysis va dependency tekshiruvi erta, tez feedback beradi. Keyingi bosqichlarda integration, API, migration va security testlar bajariladi. Artifact bir marta yaratiladi va environmentlar orasida aynan shu immutable nusxa targ‘ib qilinadi.

Pipeline kodi repositoryda saqlansa, release jarayoni review va versiyalashdan o‘tadi. Environment configuration ham nazoratli manbadan keladi, secret esa maxsus secret managerda saqlanadi. Qo‘lda serverda bajarilgan hujjatsiz o‘zgarish configuration drift yaratadi.

Deployment va release

Deployment kodni muhitga joylashtiradi, release esa funksiyani foydalanuvchiga ochadi. Feature flag bu ikki hodisani ajratishi mumkin. Kod oldindan productionga joylanib, funksiya kichik auditoriyaga yoki belgilangan vaqtda yoqiladi.

Rolling, blue-green va canary strategiyalari yangi versiyani bosqichma-bosqich kiritadi. Health metric va error rate yomonlashsa avtomatik rollback yoki rolloutni to‘xtatish ishlaydi. Database migration eski va yangi versiya bir muddat birga ishlashini hisobga oladigan backward-compatible shaklda loyihalanadi.

Sifat va xavfsizlik

Pipeline’dagi quality gate dalilga asoslanadi: test natijasi, code review, vulnerability severity va policy tekshiruvi. Juda sekin yoki beqaror testlar feedbackni kechiktirib, jamoani tekshiruvni chetlab o‘tishga undashi mumkin. Test piramidasi tez tekshiruvlar bilan kam sonli qimmat end-to-end testni muvozanatlashtiradi.

Supply-chain himoyasi build worker vakolatini cheklash, dependency pinning, artifact imzolash va provenance yozuvini o‘z ichiga oladi. Production credential build logiga tushmasligi kerak. Deployment huquqi least privilege va audit bilan boshqariladi.

Continuous deployment bilan farqi

Continuous delivery’da productionga chiqarishga tayyor holat doimiy saqlanadi, ammo yakuniy release qo‘lda tasdiqlanishi mumkin. Continuous deployment’da barcha gate’lardan o‘tgan o‘zgarish avtomatik productionga chiqadi. Tashkilotning risk, compliance va mahsulot jarayoni qaysi model mosligini belgilaydi.

O‘lchovlar

Deployment frequency, lead time for changes, change failure rate va recovery time yetkazib berish samaradorligini ko‘rsatadi. Faqat release sonini oshirish maqsad emas; tezlik barqarorlik bilan birga baholanadi. Pipeline duration, flaky test ulushi va rollback sababi ichki takomillashtirish uchun kuzatiladi.

Kichik batch va tez feedback xatoni qaysi o‘zgarish keltirganini topishni osonlashtiradi. Post-incident tahlil pipeline, monitoring va rollbackni yaxshilashga olib keladi. Continuous delivery faqat vosita emas, kodni integratsiya qilish va operatsion javobgarlikni umumiy jarayonga aylantiradigan muhandislik madaniyatidir.

Database o‘zgarishlari

Schema migration release pipeline’ning eng xavfli qaytarish nuqtalaridan biridir. Expand-contract usulida avval eski va yangi kod ishlata oladigan ustun yoki jadval qo‘shiladi, keyin ma’lumot backfill qilinadi, yangi kod o‘qishga o‘tadi va faqat oxirida eski schema olib tashlanadi. Katta jadvaldagi blocking migration oldindan productionga o‘xshash hajmda sinovdan o‘tadi. Rollback kodni eski versiyaga qaytarishi mumkin, lekin qaytarib bo‘lmaydigan data transformatsiyasi uchun forward fix va backup recovery rejasi zarur.

Bog‘liq tushunchalar

CI/CD, Continuous deployment, Deployment pipeline, Feature flag, Canary release, Immutable artifact