Staging, üretim ortamını yakından taklit eden bir ara ortamdır ve üretime dağıtımdan önce son test ve kabul işlemlerinin yapıldığı yerdir. Kalite kontrolünün son hattı olarak işlev görür ve izole ortamlarda birim ve entegrasyon testleri sırasında tespit edilemeyen sorunların belirlenmesini sağlar. Atlassian DevOps Guide, 2025'e göre, staging ortamı kullanmak üretimdeki olay sayısını %60-70 oranında azaltır.
Önemli Noktalar
Staging, üretime dağıtımdan önce son doğrulama platformu olarak hizmet veren bir ortamdır. Geliştirme ve test ortamlarının aksine, staging gerçek işletim koşullarına mümkün olduğunca yakındır: aynı işletim sistemi sürümlerini, benzer ağ yapılandırmasını, karşılaştırılabilir veri hacimlerini ve aynı harici entegrasyonları kullanır.
Staging'in temel amacı, yalnızca gerçek işletime yakın koşullarda ortaya çıkan sorunları tespit etmektir. Örneğin, yüksek yük altında yarış koşulları, bağımlılık sürümü uyumsuzlukları ve üretim verileriyle uç durumların hatalı işlenmesi.
Microsoft DevOps Practices, 2025'e göre, staging ortamının düzenli kullanımı, değişiklik başarısızlık oranını (change failure rate) azaltan ilk 5 uygulama arasındadır. Staging aşamasını atlayan ekipler, kritik olaylarla 3-4 kat daha sık karşılaşır.
Olgun bir boru hattında, staging otomatik test aşamasını takip eder ve üretimden önce gelir. Önceki tüm kontrolleri başarıyla geçen bir yapıt, staging'e dağıtılır ve burada uçtan uca senaryolar, yük testleri ve manuel kabul (gerekirse) gerçekleştirilir.
Geliştirme ortamları arasındaki farkları anlamak, testleri aşamalara doğru şekilde dağıtmaya yardımcı olur. Her ortam kendi amacına hizmet eder ve farklı doğrulama araçları kullanır.
| Ortam | Amaç | Veri | Kim Kullanır |
|---|---|---|---|
| Development | Kod geliştirme, yerel test | Test, minimum | Geliştiriciler |
| QA/Test | Fonksiyonel test | Test, sentetik | QA mühendisleri |
| Staging | Sürüm öncesi son doğrulama | Anonimleştirilmiş üretim verisi | DevOps, QA, Ürün Sahibi |
| Production | Kullanıcılar için işletim | Gerçek kullanıcı verisi | Son kullanıcılar |
Bir QA ortamı genellikle sentetik veri içerir ve mimari açıdan üretimden farklı olabilir (örneğin, daha az veritabanı kopyası). Staging ise tam eşitlik hedefler: aynı hizmet sürümleri, benzer veritabanı ölçeği (veriler anonimleştirilmiş olsa da) ve aynı ağ ortamı.
Düşük güvenilirlik gereksinimleri olan basit projeler için ayrı bir staging ortamını sürdürmenin maliyeti haklı çıkmayabilir. Bu gibi durumlarda, üretim benzeri verilere sahip bir QA ortamı staging işlevi görebilir. Ancak yüksek SLA'ya (%99,9+) sahip projeler için staging zorunludur.
Staging ortamı, önceki aşamalarda gerçekleştirilmesi imkansız veya verimsiz olan kontroller için tasarlanmıştır. Her test türü belirli bir kusur kategorisini ortaya çıkarır.
Sistemin tüm bileşenlerinden geçen tam kullanıcı senaryoları: mobil uygulama -> API -> veritabanı -> harici hizmetler. Mobil uygulamalar için, E2E testleri kayıt, yetkilendirme, ödemeler ve push bildirimlerini içerir. Araçlar: Detox, Appium, Espresso, XCUITest.
Staging, gerçekçi yük ile performans testi yapılabilecek tek ortamdır. Kullanılan araçlar: JMeter, k6, Gatling. Amaç, uygulamanın beklenen RPS'yi (saniyedeki istek sayısı) kaldırabildiğini doğrulamak ve önceki sürüme kıyasla performans düşüşünü tespit etmektir.
Staging'de hizmetler, mock'larla değil, harici sistemlerin gerçek (veya sandbox) sürümleriyle iletişim kurar. Ödeme ağ geçitleri, e-posta/SMS gönderimi, analitik izleyiciler — tüm entegrasyonlar üretime mümkün olduğunca yakın koşullarda test edilir.
// Staging ortamı için Retrofit yapılandırma örneği
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'deki veriler, ortam kurulumunun en zorlu yönlerinden biridir. Bir yandan güvenilir testler için üretim verilerine mümkün olduğunca benzemelidir; diğer yandan güvenlik ve gizlilik gereksinimleri karşılanmalıdır.
Kullanıcıların kişisel verileri (e-posta, telefon, adres, ödeme bilgileri) staging'e kopyalanmadan önce anonimleştirilmelidir. Belirleyici şifreleme veya sentetik verilerle değiştirme kullanın. Araçlar: Delphix, Tonic, maskelenmiş değerlerde UPDATE ile özel SQL betikleri. Maskelemenin iş mantığını bozmadığından emin olun — örneğin, e-posta gönderimini test etmek için e-postalar geçerli bir formatta kalmalıdır.
Staging veritabanı şeması, migrasyonlarla otomatik olarak güncellenmelidir. Şema sürümlemesi için Liquibase veya Flyway kullanın. Migrasyonlar tüm ortamlara sırayla uygulanır: dev -> QA -> staging -> production. Staging ve üretim arasındaki herhangi bir şema tutarsızlığı, testlerin güvenilirliğini azaltır.
Staging'in üretim verilerinin tam hacmini içermesi gerekmez. Performans testleri için, tüm temel senaryoları kapsayan temsili bir örnek yeterlidir. Ancak, ölçekleme sorunlarını belirlemek için veri hacminin minimum test eşiğinden en az 3-5 kat daha büyük olduğundan emin olun. Tam döküm yerine yalnızca ilgili veri alt kümelerini kopyalamak için alt kümeleme (subsetting) kullanın.
# Staging için veri anonimleştirme betiği
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)
# );
Bir staging ortamı oluşturmak, üretim doğruluğu ile altyapı maliyetleri arasında denge gerektiren bir görevdir. Mikro hizmet mimarisine sahip bir mobil proje için adım adım yaklaşıma bakalım.
Üretimin hangi bileşenlerinin staging'de bulunması gerektiğini belirleyin: API ağ geçidi, arka uç (mikro hizmetler), veritabanları, önbellek (Redis), kuyruklar (RabbitMQ/Kafka), dosya depolama (S3 uyumlu). Tam eşitlik için, aynı orkestratörü (Kubernetes) benzer sayıda kopyayla kullanın.
Boru hattına, başarılı testlerden sonra yürütülen "Staging'e Dağıt" aşaması eklenir. Uygulama yapılandırması (URL uç noktaları, sandbox hizmetleri için API anahtarları) ortam değişkenleri veya CI sistemi sırları aracılığıyla iletilir.
Gerçekçi testler için, staging üretime benzer veriler içermeli ancak gizli bilgiler olmamalıdır. Periyodik olarak (günlük/haftalık) üretim verilerini kopyalayan ve PII'yi (kişisel verileri) anonimleştiren bir ETL süreci kurun.
Bir staging ortamının etkili kullanımı, belirli kurallara uyulmasını gerektirir. Bu kuralları ihlal etmek staging'in değerini geçersiz kılar ve yanlış bir güvenlik hissi yaratır.
Staging, tüm parametrelerde üretime mümkün olduğunca yakın olmalıdır: işletim sistemi sürümleri, ağ gecikmesi, veri hacmi, hizmet örneği sayısı. Staging üretimden farklıysa, test sonuçları gerçek davranışı yansıtmayabilir.
Staging ayrı bir veritabanı, ayrı bir önbellek ve ayrı kuyruklar kullanır. Ortamları karıştırmak öngörülemeyen durumlara yol açar: bir geliştirici yanlışlıkla test verilerinin üzerine yazabilir veya regresyon test sonuçlarını etkileyebilir.
Her test turundan sonra staging temiz bir duruma dönmelidir. Altyapıyı kod olarak yönetmek için Terraform veya Pulumi kullanın — bu, ortamı tek bir komutla yeniden oluşturmayı sağlar ve kimliğini garanti eder.
Staging'de üretimle aynı izleme yığını çalışmalıdır: günlükleme (ELK, Loki), metrikler (Prometheus, Datadog), izleme (Jaeger, Zipkin). Staging izlenmezse, orada bulunan sorunlar gözden kaçabilir.
Sıkça Sorulan Sorular
Staging anonimleştirilmiş veri, ayrı API anahtarları kullanır, gerçek kullanıcıları yoktur ve genel DNS'ye bağlı değildir. Mimari olarak üretime mümkün olduğunca yakındır, ancak ondan izole edilmiştir.
Hayır, staging fonksiyonel testlerin yeri değildir. Tüm temel kontroller QA ortamında yapılmalıdır. Staging, sürüm öncesi son doğrulama için tasarlanmıştır ve geliştirme süreçleriyle kirletilmesi sonuçların güvenilirliğini azaltır.
Maliyet, üretim maliyetinin %40'ı ile %70'i arasında değişir. Kritik olmayan hizmetler için daha küçük örnekler kullanarak, ortam çalışma süresini planlayarak ve bulutta spot örnekler kullanarak tasarruf edilebilir.
Çoğu proje için en uygun sıklık haftalıktır. Günlük sürümleri olan yüksek yüklü sistemler için — anonimleştirilmiş verilerin günlük senkronizasyonu. Çok seyrek güncellemeler, güncel olmayan verilerde test yapılmasına yol açar.
Sunucu tarafı bileşeniyle etkileşime giren uygulamalar için evet. Staging, API entegrasyonlarını, veri senkronizasyonunu ve çeşitli ağ koşulları altında davranışı test etmeye olanak tanır. Çevrimdışı öncelikli (offline-first) uygulamalar için staging daha az kritik ancak önerilir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun