Continuous Deployment је пракса аутоматског постављања сваке промене кода у продукцију након проласка кроз све фазе провере. За разлику од Continuous Delivery, где издање захтева ручну потврду, овај модел елиминише људски фактор из процеса постављања. Према извештају Puppet State of DevOps, 2025, тимови са подешеним CD постижу 106 пута чешћа постављања у поређењу са традиционалним приступима.
Главно
Continuous Deployment је метода развоја при којој се свака промена кода која прође све аутоматизоване провере аутоматски поставља у продукционо окружење. Процес не захтева ручно одобравање — ако је код прошао компилацију, тестове и анализу, одмах стиже до корисника.
Концепт CD је уско повезан са DevOps културом и захтева висок степен аутоматизације. Тим мора да верује својим тестовима и да има механизме брзог враћања у случају проблема. Без ових услова аутоматско постављање постаје ризично.
Према Google Cloud DORA, 2025, елитни извршиоци (elite performers) постављају код неколико пута дневно, док нискоефикасни тимови — једном месечно. Овај јаз се постиже управо захваљујући Continuous Deployment и сродним CI/CD праксама.
У традиционалном приступу издања излазе једном у неколико недеља или месеци. Програмери акумулирају промене, што води ка сложеним спајањима и конфликтима. CD преокреће овај модел: промене излазе појединачно, одмах након завршетка. То смањује сложеност сваког издања и поједностављује проналажење проблема.
За имплементацију CD потребни су прекидачи функција (feature toggles) који омогућавају скривање незавршених функционалности од корисника. Без њих, програмери не могу безбедно спајати незавршене функције. Такође је потребно свеобухватно праћење и алармирање — ако постављање поквари окружење, тим мора сазнати за то у року од неколико минута.
Обезбеђење квалитета у CD није посебна фаза, већ континуирани процес. Сваки комит пролази кроз стотине или хиљаде аутоматизованих тестова: јединичних, интеграционих, UI тестова и тестова снимака екрана. Ако макар један тест падне — постављање се блокира до исправке.
Термини CI, CD и Continuous Delivery се често мешају, иако описују различите фазе аутоматизације испоруке кода. Разумевање разлика је критично за изградњу исправног пајплајна.
| Пракса | Шта ради | Резултат |
|---|---|---|
| CI (Continuous Integration) | Аутоматска компилација и тестирање при сваком комиту | Код је увек у радном стању |
| Continuous Delivery | CI + аутоматска припрема издања (ручни окидач постављања) | Издање је спремно за постављање у било ком тренутку |
| Continuous Deployment | Continuous Delivery + аутоматско постављање у продукцију | Промене стижу до корисника без одлагања |
Континуирана интеграција (CI) — темељ за оба модела. Без ње нису могући ни Continuous Delivery ни CD. CI гарантује да код није покварен и да је спреман за даље фазе.
Continuous Delivery — то је када тим у било ком тренутку може притиснути дугме и објавити издање. Разлика у односу на CD је у томе што Continuous Delivery оставља крајњу одлуку човеку (Release Manager-у или DevOps инжењеру). CD потпуно уклања овај шљуз.
За пројекте са регулаторним захтевима (финтех, медицина) или где свако издање пролази обавезну ручну проверу (одобравање заинтересованих страна), Continuous Delivery без потпуне аутоматизације је сигурнији избор. CD најбоље функционише за SaaS производе и мобилне апликације са брзим циклусом ажурирања.
Потпуни CD пајплајн укључује неколико узастопних фаза. Свака фаза филтрира дефекте — ако је фаза успешно прошла, код прелази на следећу. Размотримо типичан ланац за мобилну апликацију.
Све почиње пушем у репозиторијум. CI сервер (на пример, GitHub Actions или Jenkins) прима webhook обавештење, учитава најновију верзију кода и покреће компилацију. За Android то може бити `./gradlew assembleRelease`, за iOS — `xcodebuild -workspace App.xcworkspace -scheme App -configuration Release`.
name: CI Pipeline
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Android APK
run: ./gradlew assembleRelease
- name: Run Unit Tests
run: ./gradlew test DebugUnitTestCoverage
Након успешне компилације покрећу се тестови: јединични, интеграциони, UI и статичка анализа кода. Систем контроле квалитета проверава покривеност кода, присуство рањивости и усклађеност са код-стилом. Ако прагови нису достигнути — пајплајн се зауставља.
Ако су сви тестови прошли, артефакт се аутоматски поставља у staging окружење. Тамо се извршавају end-to-end тестови и тестови перформанси. У овој фази могу се прикључити интеграционе провере са спољним сервисима.
Завршна фаза — објављивање у продукцију. За смањење ризика користе се канари издања (canary releases), када се нова верзија прво испоручује малом проценту корисника. Ако су метрике стабилне — саобраћај се постепено повећава до 100%.
pipeline {
agent any
stages {
stage('Build') {
steps {
sh './gradlew assembleRelease'
}
}
stage('Test') {
steps {
sh './gradlew test'
}
}
stage('Deploy') {
steps {
sh './deploy.sh --canary 5%'
}
}
}
post {
failure {
notify 'devops-team'
}
}
}
На тржишту постоје бројне платформе које подржавају CD. Избор зависи од технолошког стека, величине тима и буџета за инфраструктуру. Размотримо главне категорије и њихове представнике.
GitHub Actions, GitLab CI/CD, CircleCI и Bitbucket Pipelines нуде уграђену подршку за пајплајнове. Интегришу се са облачним регистрима (Docker Hub, GitHub Container Registry) и подржавају постављање на AWS, Google Cloud, Azure и Firebase App Distribution.
Spinnaker, ArgoCD и Flux — алати усмерени искључиво на CD. Нуде напредне стратегије постављања: blue-green, canary, rolling update. ArgoCD је посебно популаран у Kubernetes екосистему захваљујући GitOps приступу, где се стање инфраструктуре описује у Git репозиторијуму.
Fastlane — де-факто стандард за аутоматизацију компилације и објављивања у App Store и Google Play. Интегрише се са CI серверима и управља потписивањем кода, снимцима екрана, бета дистрибуцијом кроз TestFlight и Internal App Sharing. Bitrise и Codemagic — специјализовани CI/CD за мобилне апликације.
# Fastfile — конфигурација Fastlane
default_platform(:android)
platform :android do
desc "Deploy a new version to Google Play"
lane :deploy do
gradle(task: 'assembleRelease')
upload_to_play_store(
track: 'production',
release_status: 'completed'
)
end
end
Прелазак на Continuous Deployment захтева не само техничку припрему, већ и промене у култури тима. Без правих пракси аутоматско постављање може довести до честих инцидената и смањења поверења у процес.
Feature flags омогућавају постављање незавршеног кода у продукцију, али његово скривање од корисника. То је основа CD — програмери могу спајати промене у било ком тренутку, не чекајући завршетак функције. LaunchDarkly, Flagsmith и ConfigCat су популарне платформе за управљање прекидачима функција.
Без метрика успех постављања се не може проценити. Кључне метрике: време одговора (latency), стопа грешака (error rate), пропусна моћ (throughput). Користите алате попут Datadog, New Relic или Grafana за праћење сваког издања у реалном времену.
Критична пракса CD — механизам аутоматског враћања. Ако се након постављања метрике погоршају (error rate прекорачи праг), систем треба сам да врати претходну верзију. То скраћује време опоравка (MTTR) са сати на минуте.
CD пајплајн је вредан ресурс и потенцијална мета за нападе. Користите управљање тајнама (Vault, AWS Secrets Manager), потписујте артефакте и контејнере, скенирајте зависности на рањивости (Dependabot, Snyk). Никада не чувајте кључеве приступа у репозиторијуму.
Често постављана питања
Continuous Delivery припрема издање, али захтева ручну потврду за постављање у продукцију. Continuous Deployment аутоматизује и овај корак — код стиже до корисника без учешћа човека након проласка свих провера.
Технички може, али то значајно компликује процес. Без прекидача функција програмери не могу спајати незавршени код, што успорава рад и повећава ризик од конфликата при спајању.
За мали тим од нуле — од 2 до 6 месеци. Време зависи од тренутног нивоа аутоматизације, сложености пројекта и спремности тима за промене у процесима.
Основне DORA метрике: учесталост постављања (deploy frequency), време извршења промена (lead time), средње време опоравка (MTTR) и проценат неуспешних промена (change failure rate).
Не, за пројекте са строгим регулаторним захтевима (на пример, медицински или финансијски системи) често је потребно ручно одобравање сваког издања. У таквим случајевима пожељнији је Continuous Delivery.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође