Continuous Delivery (CD): шта је то и по чему се разликује од Continuous Deployment

Аутор: IT Sectr Објављено: 2026-04-11 Време читања: 9 мин

Continuous Delivery (CD) — то је пракса развоја при којој се софтвер увек налази у стању, спремном за издање у продукцији. Свака измена пролази кроз све фазе аутоматизованог тестирања и провера, након чега може бити постављена једним кликом на дугме или аутоматски. Према Google Cloud DORA Report, 2025, тимови који примењују CD објављују издања 208 пута чешће и 106 пута брже од тимова са ниским нивоом аутоматизације.

Главно

  • Continuous Delivery (CD) — пракса у којој је код увек спреман за издање након аутоматских провера
  • CD укључује CI и додаје фазе припреме издања, потписивања и испоруке у продавнице апликација
  • Ручна потврда разликује Continuous Delivery од Continuous Deployment (аутоматски деплој)
  • Fastlane — стандардна алатка за CD у мобилном развоју, апстрахује потписивање и објављивање
  • Release pipeline укључује проверу метаподатака, снимака екрана, описа и маркетиншких материјала

Шта је Continuous Delivery

Continuous Delivery (CD) — то је проширење Continuous Integration-а, које додаје аутоматизацију свих фаза припреме издања: прављење издавачког билда, потписивање сертификатима, обфускацију, проверу метаподатака продавнице апликација и деплој на staging. Термин су увели Џез Хамбл и Дејвид Фарли у књизи „Continuous Delivery“ (2010), где су формализовали праксу која омогућава тимовима да издања учине предвидивим и нискоризичним.

Еволуција испоруке софтвера

Пре увођења CD-а издања су била догађај: тим се окупљао у просторији, обављао контролну листу од 20 ставки, ручно покретао скрипте и надао се да се ништа неће покварити. Continuous Delivery претвара издање из догађаја у процес: мала измена кода може бити испоручена корисницима за неколико минута, а не недеља. Amazon, Netflix и Etsy су први увели CD у 2010-им — данас је то стандард за производне тимове.

Пословна вредност CD-а

Брза испорука функција — конкурентска предност. Ако конкурент објављује нову функционалност за дане, а ви — за месеце, тржиште бира конкурента. DORA метрике показују: elite тимови (са CD-ом) време објављивања мање од 1 сата, low тимови (без CD-а) — од 1 недеље до 1 месеца. CD такође радикално смањује ризик: мале измене је теже покварити него велико издање једанпут у кварталу.

CD vs CI vs Continuous Deployment

Термине CI, CD и Continuous Deployment често мешају, али између њих постоји јасна граница. Разумевање разлика помаже да се правилно осмисли пајплајн и изабере ниво аутоматизације који одговара зрелости тима и пословним захтевима.

Continuous Integration

CI — то је темељ на коме се гради CD. CI гарантује да сваки комит пролази прављење и тестове. Без CI-ја CD је немогућ: ако код није верификован, не може се издати. CI проверава исправност, CD проверава спремност за пословну употребу.

Continuous Delivery

CD додаје CI-ју фазе припреме издавачког билда, провере метаподатака, потписивања и распоређивања на staging или у продавницу апликација ради бета тестирања. Кључна разлика — одлуку о издању у продукцији доноси човек (менаџер, власник производа). CD чини издање „једним кликом“ — једноставним и безбедним.

Continuous Deployment

Continuous Deployment — то је потпуна аутоматизација: свака измена, која прође све стадијуме CD пајплајна, аутоматски се шаље у продукцију без ручне потврде. Continuous Deployment је применљив за SaaS производе и веб сервисе, али се ретко користи у мобилном развоју због политика продавница апликација (App Store Review, Google Play Review захтева ручно слање).

ПраксаАутоматизацијаИздање у продукцијиТипично за
CIПрављење + тестовиНеБило који пројекти
CDПрављење + тестови + издавачки билд + испорукаНа дугмеМобилне апликације
Continuous DeploymentПотпуна: прављење → тестови → испорука → издањеАутоматскиВеб сервиси, SaaS

Continuous Delivery за мобилне апликације

CD за мобилне апликације има посебности које га разликују од веб и backend пајплајна. Мобилна издања пролазе кроз продавнице апликација (App Store Review, Google Play Review), што додаје временску и процесну баријеру. CD аутоматизује све што се може аутоматизовати пре слања на ревју, како би се максимизовала шанса да провера прође из првог покушаја.

Припрема за објављивање у Google Play

Android CD пајплајн укључује: прављење AAB (Android App Bundle), потписивање издавачким кључем, обфускацију преко R8/ProGuard, проверу величине APK и multidex класа, генерисање белешки за издање. Коришћење Gradle product flavors-а (free/paid, dev/staging/prod) омогућава управљање са више конфигурација из једног пајплајна.

Припрема за објављивање у App Store

iOS CD захтева потписивање сертификатима преко Fastlane match, проверу усклађености икона (захтев App Store-а — 1024×1024 px), валидацију метаподатака (назив, опис, кључне речи), проверу одсуства приватних API-ја. Техничка валидација се обавља преко altool --validate-app без отпремања у App Store Connect, што даје брзу повратну информацију.

ruby
# Fastfile — комплетан CD пајплајн за iOS и Android
platform :ios do
  desc "iOS CD — припрема издања и отпремање у TestFlight"
  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 и отпремање у Google Play Console"
  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 прикупља снимке екрана, добија сертификате преко match-а, прави IPA и отпрема га у TestFlight. Лена deliver_to_internal за Android прави Release AAB преко Gradle-а и отпрема га на интерни трек Google Play Console. Оба пајплајна се покрећу из CI-ја након проласка тестова.

Компоненте CD пајплајна

CD пајплајн се састоји од узастопних фаза, од којих свака додаје поверење у то да је издање спремно за кориснике. Фазе се деле на техничке (прављење, потписивање) и производне (провера метаподатака, снимака екрана, описа). Прескакање било које фазе повећава ризик од одбијања издања од стране продавнице апликација.

Управљање верзијама

Критична компонента CD-а — аутоматско управљање верзијама. Version bump (versionCode и versionName за Android, CFBundleVersion и CFBundleShortVersionString за iOS) обавља се на основу Git ознака или претходне верзије у продавници. Fastlane increment_version_number и Gradle команде (versionCode auto-increment) аутоматизују овај корак.

Метаподаци продавнице

Google Play Console и App Store Connect захтевају: опис апликације, кључне речи, категорију, оцену, линкове на политику приватности. CD укључује проверу постојања и исправности метаподатака. Fastlane deliver и supply аутоматизују отпремање описа, снимака екрана и икона заједно са билдом.

Gate провере

Пре слања на ревју пајплајн обавља gate провере: проверу величине билда (APK > 200 MB одбија Google Play), постојање свих локализација, одсуство debug симбола у издавачком билду, проверу ProGuard mapping датотеке за декодовање crash логова. Ако било која провера не прође — пајплајн блокира издање.

Аутоматизовано тестирање за CD

Ниво поверења у CD директно је пропорционалан квалитету аутоматских тестова. Ако тестови не хватају регресије — издање може покварити продукцију, и тим губи поверење у CD. Мобилни CD захтева трослојну пирамиду тестирања, прилагођену специфичности платформе.

Модулни тестови

Јунит тестови проверавају пословну логику изоловано. Покривеност кода треба да буде најмање 70% за критичне модуле (аутентификација, плаћања, рад са мрежом). CI покреће јунит тестове на сваки push, и ако падају — CD пајплајн се блокира до исправке.

Интеграциони тестови

Проверавају интеракцију компоненти: мрежни слој са правим API-јем (или mock сервером), база података, датотечни систем. Room DAO тестови за Android, Core Data тестови за iOS — примери интеграционих тестова. Спорији су од јунит тестова (1–5 минута) и извршавају се на CD фази, а не на CI-ју при сваком комиту.

UI и screenshot тестови

Снимак тестови (snapshot testing) упоређују екране апликације са референтним сликама. Ако је измена кода променила UI — тест пада, и програмер проверава да ли је промена очекивана. Android подржава Roborazzi и Paparazzi, iOS — SnapshotTesting од Point-Free. Снимак тестови се извршавају пре издања као део CD пајплајна.

Најбоље праксе Continuous Delivery

Увођење Continuous Delivery захтева не само алатке, већ и промену културе тима. Праксе испод засноване су на вишегодишњем искуству мобилних тимова из Google-а, Spotify-а и Uber-а и прилагођене су пројектима било које величине.

Feature flags

Код нове функције испоручује се у продукцију, али је скривен иза заставице. Feature flags омогућавају да се код објави пре него што функција буде спремна за приказ корисницима, и да се тренутно искључи при проблемима. Библиотеке: LaunchDarkly, Firebase Remote Config, Unleash. Feature flags — обавезан услов за CD у мобилним пројектима.

Staging окружење

Пре слања у продукцију билд се поставља на staging — окружење идентично продукцији, али са тест подацима. QA инжењери проверавају функцију на staging билду, инсталираном преко TestFlight-а или Internal Testing трека. Ако staging прође — билд добија одобрење за слање на ревју у продавницу.

Белешке за издање и changelog

CD аутоматски генерише белешке за издање на основу commit порука. Conventional Commits (feat:, fix:, chore:) и Git ознаке у формату semantic versioning омогућавају парсирање историје измена. Fastlane changelog_from_git_commits прикупља измене између последње две ознаке и форматира их за продавницу апликација.

Мониторинг након издања

CD се не завршава објављивањем — након издања покреће се мониторинг: crash rate, ANR rate за Android, време покретања, учесталост отказа у плаћањима. Ако метрике превазиђу нормалне границе — CD пајплајн треба аутоматски да врати издање или обавести тим. Алатке: Firebase Crashlytics, Sentry, New Relic.

kotlin
// Пример Feature Flag-а са Firebase Remote Config за CD
class FeatureManager(
    private val remoteConfig: FirebaseRemoteConfig
) {
    fun isNewCheckoutEnabled(): Boolean {
        return remoteConfig.getBoolean("new_checkout_enabled")
    }

    fun getRecommendedVersion(): String {
        return remoteConfig.getString("minimum_app_version")
    }
}

// Коришћење у коду
if (featureManager.isNewCheckoutEnabled()) {
    showNewCheckoutScreen()
} else {
    showLegacyCheckoutScreen()
}

Често постављана питања

По чему се Continuous Delivery разликује од Continuous Deployment?

Continuous Delivery (CD) аутоматизује припрему издања, али одлуку о објављивању оставља човеку. Continuous Deployment — то је CD + аутоматско издање у продукцији без учешћа човека. У мобилном развоју Continuous Deployment је немогућ због обавезне ревизије од стране продавница апликација.

Како бити сигуран да се издавачки билд не разликује од тестираног?

Користите исти билд за све фазе: CI тестира debug билд, CD прави release билд са истим изворима. Fastlane build_app и Gradle assembleRelease изолују конфигурацију прављења. Додатно покрените smoke тестове на издавачком билду у CD пајплајну пре слања у продавницу.

Може ли се CD увести за већ објављену апликацију?

Да, CD се уводи у било који пројекат. Почните са аутоматизацијом једне фазе — на пример, прављења издавачког билда. Затим додајте потписивање, па отпремање у TestFlight. Постепено проширујте пајплајн. Главно — не покушавајте аутоматизовати све одједном: CD се уводи итеративно.

Како су Feature flags повезани са CD-ом?

Feature flags — кључни енејблер CD-а. Они омогућавају испоруку кода у продукцију без укључивања за кориснике. Ако се функција покаже нестабилном — заставица се искључује без поновног прављења апликације. Firebase Remote Config и LaunchDarkly се интегришу са CD пајплајном и управљају се преко веб интерфејса или API-ја.

Колико често треба правити издања уз CD?

Са CD-ом тимови праве издања недељно или сваке две недеље. Elite тимови из DORA извештаја врше више издања дневно кроз Continuous Deployment (за серверски део). За мобилне апликације оптимална учесталост — једанпут на 1–2 недеље: ревизија App Store-а траје 1–3 дана, и чешћа издања не дају корисницима времена да примете измене.

Закључци

  • Continuous Delivery (CD) — аутоматизација припреме издања уз задржавање ручне одлуке о објављивању у продукцији
  • CD се заснива на CI-ју и додаје: издавачко прављење, потписивање, проверу метаподатака и испоруку у продавницу апликација
  • Fastlane — стандардна алатка за CD у мобилном развоју, подржава Android и iOS из једног Fastfile-а
  • Feature flags и staging окружење — обавезне праксе за безбедан CD у мобилним пројектима
  • Gate провере (величина билда, локализације, debug симболи) блокирају издање при неусаглашености са захтевима продавнице
  • DORA метрике доказују: тимови са CD-ом издају 208 пута чешће и са мањим ризиком
  • Препорука: уводите CD итеративно — почните са аутоматским прављењем издавачког билда, затим додајте потписивање, па отпремање у TestFlight

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође