Staging (стејџинг) је прелазно окружење, максимално приближено продуктивном, где се спроводи коначно тестирање и пријем пре постављања у продукцију. Оно служи као последња линија контроле квалитета, омогућавајући откривање проблема који се не откривају у фази модуларног и интеграционог тестирања у изолованим окружењима. Према подацима Atlassian DevOps Guide, 2025, коришћење staging окружења смањује број инцидената у продукцији за 60-70%.
Главно
Staging (стејџинг) је окружење које служи као коначна верификациона платформа пре постављања у продукцију. За разлику од развојних и тестних окружења, staging је максимално приближен реалним условима експлоатације: користи исте верзије ОС-а, сличну конфигурацију мреже, сличне количине података и исте спољне интеграције.
Основна намена staging-а је откривање проблема који се појављују само у условима блиским реалној експлоатацији. На пример, race condition при високом оптерећењу, некомпатибилност верзија зависности, нетачна обрада edge case-ова са продукционим подацима.
Према Microsoft DevOps Practices, 2025, редовно коришћење staging окружења спада у топ 5 пракси које смањују change failure rate — проценат неуспешних постављања. Тимови који прескачу фазу стејџинга суочавају се са критичним инцидентима 3-4 пута чешће.
У зрелом пајплајну staging следи након фазе аутоматизованог тестирања и претходи продукцији. Артефакт који је успешно прошао све претходне провере поставља се на staging, где се спроводе end-to-end сценарији, тестови оптерећења и ручни пријем (ако је потребан).
Разумевање разлика између окружења за развој помаже у правилном распоређивању тестирања по фазама. Свако окружење решава своје задатке и користи различите алате за проверу.
| Окружење | Намена | Подаци | Ко користи |
|---|---|---|---|
| Development | Развој кода, локално тестирање | Тестни, минимални | Програмери |
| QA/Test | Функционално тестирање | Тестни, синтетички | QA инжењери |
| Staging | Коначна провера пре објављивања | Анонимизирани продукциони подаци | DevOps, QA, Product Owner |
| Production | Експлоатација за кориснике | Реални кориснички подаци | Крајњи корисници |
QA окружење обично садржи синтетичке податке и може се разликовати од продукције по архитектури (нпр. мање реплика базе података). Staging, пак, тежи потпуном паритету: исте верзије сервиса, иста величина базе података (иако су подаци анонимизирани), исто мрежно окружење.
За једноставне пројекте са ниским захтевима за поузданост, трошкови одржавања посебног staging окружења могу се не исплатити. У таквим случајевима улогу staging-а може да испуни QA окружење са подацима блиским продукцији. Међутим, за пројекте са високим SLA (99.9%+) staging је обавезан.
Staging окружење је намењено проверама које се не могу или нису ефикасне у ранијим фазама. Свака врста теста открива специфичну категорију дефеката.
Потпуни кориснички сценарији који пролазе кроз све компоненте система: мобилна апликација -> API -> база података -> спољни сервиси. За мобилне апликације E2E тестови укључују регистрацију, ауторизацију, плаћања, push обавештења. Алати: Detox, Appium, Espresso, XCUITest.
Staging је једино окружење где се може извршити performance тестирање са реалистичним оптерећењем. Користе се алати: JMeter, k6, Gatling. Циљ је проверити да апликација издржава очекивани RPS (захтеве у секунди) и открити деградацију у поређењу са претходним издањем.
На staging-у сервиси комуницирају не са mock-овима, већ са реалним (или sandbox) верзијама спољних система. Платни пролази, слање е-поште/SMS-а, аналитички тракери — све интеграције се тестирају у условима максимално блиским продукцији.
// Пример подешавања Retrofit-а за staging окружење
object ApiClient {
private fun getBaseUrl(): String {
return when (BuildConfig.FLAVOR) {
"staging" -> "https://api.staging.example.com/"
"production" -> "https://api.example.com/"
else -> "https://api.dev.example.com/"
}
}
val api: ApiService = Retrofit.Builder()
.baseUrl(getBaseUrl())
.build()
.create(ApiService::class.java)
}
Подаци на staging-у су један од најсложенијих аспеката подешавања окружења. С једне стране морају бити што сличнији продукцији за поуздано тестирање, а с друге — потребно је поштовати захтеве безбедности и поверљивости.
Лични подаци корисника (е-пошта, телефон, адреса, информације о плаћању) морају бити обезличен пре копирања на staging. Користите детерминистичку енкрипцију или замену синтетичким подацима. Алати: Delphix, Tonic, сопствени SQL скриптови са UPDATE на маскиране вредности. Уверите се да маскирање не нарушава пословну логику — на пример, е-пошта мора остати у валидном формату за тестирање слања порука.
Структура базе података staging-а треба аутоматски да се ажурира при миграцијама. Користите Liquibase или Flyway за верзионисање шеме. Миграције се примењују секвенцијално на сва окружења: dev -> QA -> staging -> production. Свако одступање шеме између staging-а и продукције смањује поузданост тестирања.
Staging не мора да садржи пуни обим продукционих података. За performance тестирање довољан је репрезентативан узорак који покрива све кључне сценарије. Међутим, за откривање проблема са скалирањем, уверите се да обим података буде бар 3-5 пута већи од минималног прага тестирања. Користите subsetting — копирање само повезаних подскупова података уместо пуног дампа.
# Скрипт анонимизације података за staging
import hashlib
def anonymize_email(email):
local, domain = email.split('@')
hash_local = hashlib.sha256(local.encode()).hexdigest()[:10]
return f"{hash_local}@{domain}"
# UPDATE users SET email = CONCAT(
# SUBSTR(SHA2(email, 256), 1, 10), '@', SUBSTR(email, LOCATE('@', email) + 1)
# );
Креирање staging окружења је задатак који захтева равнотежу између верности продукцији и трошкова инфраструктуре. Размотримо корак по корак приступ за мобилни пројекат са микросервисном архитектуром.
Одредите које компоненте продукције морају бити присутне у staging-у: API пролаз, серверски део (микросервиси), базе података, кеш (Redis), редови (RabbitMQ/Kafka), складиште датотека (S3-compatible). За потпуни паритет користите исти оркестратор (Kubernetes) са аналогним бројем реплика.
У пајплајн се додаје фаза "Deploy to Staging" која се извршава након успешних тестова. Конфигурација апликације (URL адресе, API кључеви за sandbox сервисе) преноси се путем променљивих окружења или тајни CI система.
За реалистично тестирање staging треба да садржи податке сличне продукцији, али без поверљивих информација. Подесите ETL процес који периодично (дневно/недељно) копира продукционе податке, анонимизујући PII (личне податке).
Ефикасно коришћење staging окружења захтева поштовање одређених правила. Кршење ових правила поништава вредност стејџинга и ствара лажан осећај сигурности.
Staging треба да буде што ближи продукцији по свим параметрима: верзије ОС-а, мрежна кашњења, обим података, број инстанци сервиса. Ако се staging разликује од продукције, резултати тестирања на њему можда неће одговарати стварности.
Staging користи одвојену базу података, одвојени кеш и одвојене редове. Мешање окружења доводи до непредвидивих стања: програмер може случајно да препише тестне податке или утиче на резултате регресионог тестирања.
Након сваког круга тестирања, staging треба да се врати у основно стање (clean state). Користите Terraform или Pulumi за infrastructure as code — то омогућава поновно креирање окружења једном командом и гарантује његов идентитет.
На staging-у треба да ради исти мониторинг стек као у продукцији: логирање (ELK, Loki), метрике (Prometheus, Datadog), трасинг (Jaeger, Zipkin). Ако staging није под надзором, проблеми откривени на њему могу бити превиђени.
Често постављана питања
Staging користи анонимизиране податке, одвојене API кључеве, нема стварних корисника и није везан за јавне DNS-ове. По архитектури је максимално близак продукцији, али изолован од ње.
Не, staging није место за функционално тестирање. Све основне провере треба да се обављају у QA окружењу. Staging је намењен за коначну верификацију пре објављивања, а загађење развојним процесима смањује поузданост резултата.
Трошак износи од 40% до 70% цене продукције. Може се уштедети коришћењем мањих инстанци за некритичне сервисе, укључивањем окружења по распореду и коришћењем spot инстанци у облаку.
Оптимална учесталост је недељно за већину пројеката. За системе са високим оптерећењем са дневним издањима — дневна синхронизација анонимизираних података. Превише ретко ажурирање доводи до тестирања на застарелим подацима.
За апликације које комуницирају са серверским делом — да. Staging омогућава тестирање API интеграција, синхронизацију података и понашање у различитим мрежним условима. За offline-first апликације staging је мање критичан, али се препоручује.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође