Continuous Delivery (CD) — bu dasturiy ta'minot doimo produksiyaga chiqarishga tayyor holatda bo'ladigan rivojlantirish amaliyotidir. Har bir o'zgarish avtomatlashtirilgan testlash va tekshirishlarning barcha bosqichlaridan o'tadi, shundan so'ng tugmani bir marta bosish bilan yoki avtomatik ravishda joylashtirilishi mumkin. Google Cloud DORA Report, 2025 ma'lumotlariga ko'ra, CDni qo'llaydigan jamoalar relizlarni avtomatlashtirish darajasi past bo'lgan jamoalarga qaraganda 208 marta tez-tez va 106 marta tezroq chiqaradi.
Asosiy xulosalar
Continuous Delivery (CD) — bu Continuous Integrationning kengaytmasi bo'lib, relizni tayyorlashning barcha bosqichlarini avtomatlashtiradi: reliz buildini yig'ish, sertifikatlar bilan imzolash, obfuskatsiya, ilovalar do'konining metadatalarini tekshirish va stagingga deploy qilish. Bu atama Jez Humble va David Farley tomonidan „Continuous Delivery“ (2010) kitobida kiritilgan bo'lib, unda jamoalarga relizlarni bashorat qilinadigan va past xavfli qilish imkonini beradigan amaliyotni rasmiylashtirishgan.
CD joriy etilishidan oldin relizlar voqea edi: jamoa xonada to'planar, 20 banddan iborat tekshiruv ro'yxatini bajarar, skriptlarni qo'lda ishga tushirar va hech narsa buzilmasligiga umid qilardi. Continuous Delivery relizni voqeadan jarayonga aylantiradi: kichik kod o'zgarishi foydalanuvchilarga haftalarda emas, daqiqalarda yetkazilishi mumkin. Amazon, Netflix va Etsy CDni birinchi bo'lib 2010-yillarda joriy etishdi — bugungi kunda bu mahsulot jamoalari uchun standartdir.
Funksiyalarni tez yetkazib berish — raqobat ustunligi. Agar raqobatchi yangi funksiyani kunlarda chiqarsa, siz esa oylarda — bozor raqobatchini tanlaydi. DORA metrikalari ko'rsatadi: elite jamoalar (CD bilan) chiqarish vaqtini 1 soatdan kam qiladi, low jamoalar (CDsiz) — 1 haftadan 1 oygacha. CD xavfni ham tubdan kamaytiradi: kichik o'zgarishlarni buzish katta relizdan ko'ra qiyinroq.
CI, CD va Continuous Deployment atamalarini ko'pincha chalkashtirishadi, lekin ular o'rtasida aniq chegara bor. Farqlarni tushunish pipeline to'g'ri loyihalashga va jamoaning yetukligi hamda biznes talablariga mos keladigan avtomatlashtirish darajasini tanlashga yordam beradi.
CI — bu CD quriladigan poydevordir. CI har bir commitning yig'ish va testlardan o'tishini kafolatlaydi. CIsiz CD mumkin emas: agar kod tekshirilmagan bo'lsa, uni reliz qilib bo'lmaydi. CI to'g'rilikni tekshiradi, CD esa biznes foydalanishga tayyorlikni tekshiradi.
CD CIga reliz buildini tayyorlash, metadatalarni tekshirish, imzolash va beta testlash uchun stagingga yoki ilovalar do'koniga joylashtirish bosqichlarini qo'shadi. Asosiy farq — produksiyaga chiqarish to'g'risidagi qarorni inson qabul qiladi (menejer, mahsulot egasi). CD relizni „bir marta bosish“ bilan — sodda va xavfsiz qiladi.
Continuous Deployment — bu to'liq avtomatlashtirish: CD pipeline barcha bosqichlaridan o'tgan har bir o'zgarish qo'lda tasdiqlashsiz avtomatik ravishda produksiyaga yuboriladi. Continuous Deployment SaaS mahsulotlari va veb-servislari uchun qo'llaniladi, lekin ilovalar do'konlari siyosatlari (App Store Review, Google Play Review qo'lda yuborishni talab qiladi) tufayli mobil ishlab chiqishda kam qo'llaniladi.
| Amaliyot | Avtomatlashtirish | Produksiyaga reliz | Odatda qo'llaniladi |
|---|---|---|---|
| CI | Yig'ish + testlar | Yo'q | Har qanday loyihalar |
| CD | Yig'ish + testlar + reliz buildi + yetkazish | Tugma bilan | Mobil ilovalar |
| Continuous Deployment | To'liq: yig'ish → testlar → yetkazish → reliz | Avtomatik | Veb-servislar, SaaS |
Mobil ilovalar uchun CD uni veb va backend pipelinelaridan ajratib turadigan xususiyatlarga ega. Mobil relizlar ilovalar do'konlaridan (App Store Review, Google Play Review) o'tadi, bu vaqt va protsessual to'siq qo'shadi. CD reviewga yuborishdan oldin avtomatlashtirish mumkin bo'lgan hammasini avtomatlashtiradi, shunda tekshiruvni birinchi urinishda o'tish ehtimolini maksimal darajada oshiradi.
Android CD pipeline quyidagilarni o'z ichiga oladi: AAB (Android App Bundle) yig'ish, reliz kaliti bilan imzolash, R8/ProGuard orqali obfuskatsiya, APK o'lchami va multidex klasslarini tekshirish, reliz eslatmalarini generatsiya qilish. Gradle product flavors (free/paid, dev/staging/prod) ishlatish bitta pipelinedan bir nechta konfiguratsiyalarni boshqarish imkonini beradi.
iOS CD Fastlane match orqali sertifikatlar bilan imzolashni, ikonkalarning mosligini tekshirishni (App Store talabi — 1024×1024 px), metadatalarni (nomi, tavsifi, kalit so'zlar) validatsiya qilishni, xususiy APIlar yo'qligini tekshirishni talab qiladi. Texnik validatsiya App Store Connectga yuklamasdan altool --validate-app orqali amalga oshiriladi, bu tezkor fikr-mulohaza beradi.
# Fastfile — iOS va Android uchun to'liq CD pipeline
platform :ios do
desc "iOS CD — relizni tayyorlash va TestFlightga yuklash"
lane :deliver_to_testflight do
capture_screenshots
match(type: "appstore")
build_app(
scheme: "MyApp",
export_method: "app-store",
workspace: "MyApp.xcworkspace"
)
pilot(skip_waiting_for_build: true)
end
end
platform :android do
desc "Android CD — AAB yig'ish va Google Play Consolega yuklash"
lane :deliver_to_internal do
gradle(
task: "bundleRelease",
build_type: "Release",
print_command: true
)
upload_to_play_store(
track: "internal",
skip_upload_metadata: true
)
end
end
Fastlane deliver_to_testflight skrinshotlarni yig'adi, match orqali sertifikatlarni oladi, IPA yig'adi va TestFlightga yuklaydi. Android uchun deliver_to_internal leyning Gradle orqali Release AAB yig'adi va uni Google Play Console ichki treykgacha yuklaydi. Ikkala pipeline ham testlardan o'tgandan so'ng CIdan ishga tushiriladi.
CD pipeline ketma-ket bosqichlardan iborat bo'lib, har biri reliz foydalanuvchilarga tayyorligiga ishonch qo'shadi. Bosqichlar texnik (yig'ish, imzolash) va mahsulot (metadata, skrinshotlar, tavsifni tekshirish) guruhlariga bo'linadi. Har qanday bosqichni o'tkazib yuborish ilovalar do'koni tomonidan relizning rad etilishi xavfini oshiradi.
CDning muhim komponenti — versiyalarni avtomatik boshqarish. Version bump (Android uchun versionCode va versionName, iOS uchun CFBundleVersion va CFBundleShortVersionString) Git tegari yoki do'kondagi avvalgi versiya asosida bajariladi. Fastlane increment_version_number va Gradle buyruqlari (versionCode auto-increment) bu qadamni avtomatlashtiradi.
Google Play Console va App Store Connect quyidagilarni talab qiladi: ilova tavsifi, kalit so'zlar, kategoriya, reyting, maxfiylik siyosatiga havolalar. CD o'z ichiga oladi metadatalarning mavjudligi va to'g'riligini tekshirish. Fastlane deliver va supply build bilan birga tavsif, skrinshotlar va ikonkalarni yuklashni avtomatlashtiradi.
Reviewga yuborishdan oldin pipeline gate tekshiruvlarini bajaradi: build o'lchamini tekshirish (200 MB dan katta APK Google Play tomonidan rad etiladi), barcha lokalizatsiyalarning mavjudligi, reliz buildida debug belgilarining yo'qligi, crash-loglarni dekodlash uchun ProGuard mapping faylini tekshirish. Agar birorta tekshiruv o'tmagan bo'lsa — pipeline relizni bloklaydi.
CDga ishonch darajasi avtomatik testlar sifatiga to'g'ridan-to'g'ri proporsionaldir. Agar testlar regressiyalarni ushlamasa — reliz produksiyani buzishi mumkin, va jamoa CDga ishonchini yo'qotadi. Mobil CD platforma o'ziga xosligiga moslashtirilgan uch darajali testlash piramidasini talab qiladi.
Unit-testlar biznes logikani alohida tekshiradi. Kod qamrovi muhim modullar uchun (autentifikatsiya, to'lovlar, tarmoq bilan ishlash) kamida 70% bo'lishi kerak. CI unit-testlarni har bir pushda ishga tushiradi, va agar ular tushib qolsa — CD pipeline tuzatilgunga qadar bloklanadi.
Komponentlarning o'zaro ta'sirini tekshiradi: haqiqiy API (yoki mock-server) bilan tarmoq qatlami, ma'lumotlar bazasi, fayl tizimi. Android uchun Room DAO testlari, iOS uchun Core Data testlari — integratsion testlar misollaridir. Ular unit-testlardan sekinroq (1–5 daqiqa) va CD bosqichida bajariladi, har bir commitda CIda emas.
Skrinshot testlari (snapshot testing) ilova ekranlarini namunaviy tasvirlar bilan solishtiradi. Agar kod o'zgarishi UI ni o'zgartirgan bo'lsa — test tushadi va dasturchi o'zgarish kutilganmi yoki yo'qligini tekshiradi. Android Roborazzi va Paparazzini qo'llab-quvvatlaydi, iOS — Point-Free SnapshotTestingni. Skrinshot testlari CD pipeline qismi sifatida relizdan oldin bajariladi.
Continuous Deliveryni joriy etish nafaqat vositalarni, balki jamoa madaniyatini o'zgartirishni ham talab qiladi. Quyidagi amaliyotlar Google, Spotify va Uberdagi mobil jamoalarning ko'p yillik tajribasiga asoslangan va har qanday o'lchamdagi loyihalarga moslashtirilgan.
Yangi funksiya kodi produksiyaga yetkaziladi, lekin flag orqasida yashiringan. Feature flags funksiya foydalanuvchilarga ko'rsatishga tayyor bo'lishidan oldin kodni chiqarish va muammolar yuzaga kelganda uni bir zumda o'chirish imkonini beradi. Kutubxonalar: LaunchDarkly, Firebase Remote Config, Unleash. Feature flags — mobil loyihalarda CD uchun majburiy shart.
Produksiyaga yuborishdan oldin build stagingga joylashtiriladi — produksiya bilan bir xil, lekin test ma'lumotlari bilan muhit. QA muhandislari funksiyani TestFlight yoki Internal Testing treygi orqali o'rnatilgan staging buildida tekshiradi. Agar staging o'tsa — build do'konga reviewga yuborish uchun ruxsat oladi.
CD commit xabarlari asosida reliz eslatmalarini avtomatik generatsiya qiladi. Conventional Commits (feat:, fix:, chore:) va semantic versioning formatidagi Git teglari o'zgarishlar tarixini pars qilish imkonini beradi. Fastlane changelog_from_git_commits oxirgi ikki teg orasidagi o'zgarishlarni yig'adi va ularni ilovalar do'koni uchun formatlaydi.
CD nashr qilish bilan tugamaydi — relizdan so'ng monitoring ishga tushadi: crash rate, Android uchun ANR rate, ishga tushirish vaqti, to'lovlardagi muvaffaqiyatsizliklar chastotasi. Agar metrikalar normadan chiqib ketsa — CD pipeline relizni avtomatik qaytarishi yoki jamoani xabardor qilishi kerak. Vositalar: Firebase Crashlytics, Sentry, New Relic.
// CD uchun Firebase Remote Config bilan Feature Flag misoli
class FeatureManager(
private val remoteConfig: FirebaseRemoteConfig
) {
fun isNewCheckoutEnabled(): Boolean {
return remoteConfig.getBoolean("new_checkout_enabled")
}
fun getRecommendedVersion(): String {
return remoteConfig.getString("minimum_app_version")
}
}
// Kodda ishlatish
if (featureManager.isNewCheckoutEnabled()) {
showNewCheckoutScreen()
} else {
showLegacyCheckoutScreen()
}
Ko'p so'raladigan savollar
Continuous Delivery (CD) relizni tayyorlashni avtomatlashtiradi, lekin chiqarish to'g'risidagi qarorni insonga qoldiradi. Continuous Deployment — bu CD + inson ishtirokisiz produksiyaga avtomatik reliz. Mobil ishlab chiqishda ilovalar do'konlarining majburiy reviewi tufayli Continuous Deployment mumkin emas.
Barcha bosqichlar uchun bitta buildni ishlating: CI debug-buildni testlaydi, CD xuddi shu manbalar bilan release-buildni yig'adi. Fastlane build_app va Gradle assembleRelease yig'ish konfiguratsiyasini izolyatsiya qiladi. Qo'shimcha ravishda do'konga yuborishdan oldin CD pipelineda reliz buildida smoke-testlarni ishga tushiring.
Ha, CD har qanday loyihaga joriy etiladi. Bitta bosqichni avtomatlashtirishdan boshlang — masalan, reliz buildini yig'ish. So'ng imzolashni, keyin TestFlightga yuklashni qo'shing. Pipeline asta-sekin kengaytiring. Asosiysi — hammasini birdaniga avtomatlashtirishga urinmang: CD iterativ joriy etiladi.
Feature flags — CDning asosiy eneybleri. Ular kodni foydalanuvchilar uchun yoqmasdan produksiyaga yetkazish imkonini beradi. Agar funksiya beqaror bo'lib chiqsa — flag ilovani qayta yig'masdan o'chiriladi. Firebase Remote Config va LaunchDarkly CD pipeline bilan integratsiyalanadi va veb-interfeys yoki API orqali boshqariladi.
CD bilan jamoalar relizlarni har hafta yoki ikki haftada qiladi. DORA hisobotidagi elite jamoalar Continuous Deployment orqali kuniga bir nechta reliz chiqaradi (server qismi uchun). Mobil ilovalar uchun optimal chastota — 1–2 haftada bir marta: App Store reviewi 1–3 kun davom etadi va tez-tez relizlar foydalanuvchilarga o'zgarishlarni sezishga vaqt bermaydi.
Xulosalar
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.