Spring Boot ile canary dağıtımları ve feature toggle pratiklerini, Spring Cloud ve Spring Security entegrasyonlarıyla ele alıyoruz; spring boot eğitimi veya java spring eğitimi alan geliştiricilere gerçek dünya adımları sunar.
Spring Boot Canary Dağıtımları ve Feature Toggle Stratejileri ile Kesintisiz Geçiş
Canary dağıtımları ve feature toggle, yeni özellikleri küçük bir kullanıcı kesimine güvenli şekilde sunmak için kritik tekniklerdir. Bu makalede Spring Boot, Spring Cloud ve Spring Security kullanarak nasıl uygulayacağınızı ve hangi operasyonel detaylara dikkat etmeniz gerektiğini öğreneceksiniz.
Opendart Akademi
Bu konuyu uygulamalı öğrenmek ister misiniz?
Java Spring Boot Eğitimi eğitimimizde canlı projelerle, eğitmen eşliğinde adım adım ilerliyorsunuz.

Canary dağıtımı ve feature toggle - temel kavramlar
Canary dağıtımı, üretimde yeni sürümü sınırlı bir trafiğe açıp performans ve hata izlemeleri sonrası yaygınlaştırma stratejisidir; feature toggle ise kodu dağıtmadan özellikleri açıp kapatmanızı sağlar. Spring Boot uygulamalarında bu ikisini birlikte kullanmak, kesintisiz dağıtım ve hızlı geri dönüş (rollback) sağlar.
Teknik olarak canary, trafiğin ağırlıklandırılması, header-based routing veya % bazlı yönlendirme ile sağlanır; feature toggle ise basit boolean property'lerden (application.yml) veya Togglz, FF4J gibi kütüphanelere kadar çeşitlenir. Spring MVC ve Spring REST API yapısında controller seviyesinde davranış kontrolünü feature toggle ile yönetmek yaygındır.
Trafik yönlendirme ve Spring Cloud entegrasyonu
Spring Cloud Gateway, load balancer (örn. Spring Cloud LoadBalancer) veya Envoy/F5 gibi bir proxy ile canary trafiği yönlendirilir; route predicate olarak header, cookie veya weight/weight-routing kullanabilirsiniz. Bu katmanda spring cloud bileşenleri ve service discovery (Eureka/Consul) canary mantığını destekler.
Aşağıdaki küçük örnek, bir Spring MVC uygulamasında versiyon header'ına göre davranan bir controller gösterir - bu, gateway'in gönderdiği X-Canary veya X-Version header'ıyla canary davranışını kolayca test etmenizi sağlar. Kod açıklaması: Bu controller iki endpoint sunuyor; header'dan gelen X-Canary değerine göre farklı yanıt döndürüyor, böylece gateway üzerinden canary trafiğini hızlıca doğrulayabilirsiniz. Neden böyle yazıldı: header kontrollü yaklaşım gateway-agnostik olup A/B testing veya canary için en basit ve güvenli test mekanizmasını sağlar.
package com.example.canary;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class VersionController {
@GetMapping("/api/v1/checkout")
public String checkout(@RequestHeader(value = "X-Canary", required = false) String canary) {
if ("true".equalsIgnoreCase(canary)) {
return "checkout - canary v2";
}
return "checkout - stable v1";
}
}
Açıklama: Bu örnek minimal tutuldu; gerçek projede aynı mantığı Spring Security filtreleri veya gateway route predicate'leriyle entegre edersiniz. Header tabanlı kontrol, session stickiness'le çakışmaması için idempotent endpoint'lerde daha güvenlidir.Gerçek dünya senaryosu - e-ticaret checkout canary
Senaryo: Bir e-ticaret firması yeni ödeme akışı için canary yapmak istiyor; hedef ilk etapta %5 trafik, monitoring ile 48 saat sonra kademeli artış. Microservices mimarisi kullanan sistemde checkout servisi Spring Boot ile yazılmış ve ödeme servisleri ayrı microservice'ler olarak çalışıyor.
Uygulanan çözüm: Spring Cloud Gateway'de weight-based route ile %5 trafiği canary v2'ye gönderiyoruz, feature toggle ile yeni checkout logic'i kapatıp açıyoruz, ve Spring Security ile sensitive endpoint'leri aynı policy altında tutuyoruz. DB tarafında ise transactional outbox ve backward-compatible migration stratejileri uygulandı; canary sırasında schema değişikliğini feature toggle ile kontrol edilen flaglere bağladık.
Ölçülen sonuç: İlk 48 saatte hata oranı %0.2 iken, canary açılmadan önce beklenen SLO'lar korunmuş; rollout otomasyonuyla 2 hafta içinde %100'e güvenli geçiş sağlandı. Bu yaklaşım spring boot eğitimi alan geliştiricilere microservices mimarisinde gerçek riskleri nasıl yöneteceklerini gösterir.

Operasyonel incelikler ve yaygın hatalar
Veritabanı migration'ları canary için en agresif problem kaynağıdır; tek migrasyonla geri dönüş imkansızsa, migration'ları backward-compatible olarak tasarlayın - yeni kolonlar nullable olmalı, trigger/constraint değişimleri kademeli olmalı. Spring Boot'ta Flyway/Vlad gibi migration araçlarını feature toggle ile koordine etmek sık yapılan iyi bir uygulamadır.
Spring Security ile canary testleri yaparken authentication/authorization flow'unun tutarlı olmasına dikkat edin; örneğin farklı sürümlerde token parsing veya OAuth 2.0 scope kontrolleri varsa canary kullanıcısı oturum sorunları yaşar. Ayrıca load balancer veya gateway üzerinde session stickiness etkinse, canary trafiği doğru şekilde hedeflenmiyor olabilir - stateless, token tabanlı yaklaşım canary ile daha uyumludur.
Adım adım uygulama rehberi ve otomasyon
Pratik adımlar: 1) Feature toggle ile kodu dağıtın ama pasif bırakın; 2) Canary sürümü küçük bir trafik dilimine yönlendirilecek şekilde CI/CD pipeline'ınızı yapılandırın; 3) Sınırlı trafiği gözleyecek Micrometer + Prometheus + Grafana panoları kurun; 4) Hata veya latency eşiği aşıldığında otomatik rollback tetikleyin. Bu adımlar spring rest api ve spring mvc uygulamalarında doğrudan uygulanabilir.
Aşağıdaki application.yml snippet'i, basit bir feature flag ve canary ağırlık ayarı gösterir; CI/CD pipeline'ınızda bu property'leri dinamik olarak değiştirmek (Config Server veya Vault) tipik bir yaklaşımdır. Kod açıklaması: Bu yml örneği feature toggle ve gateway için basit konfigürasyonları gösterir; neden böyle yazıldı: merkez' konfigürasyon ve pipeline üzerinden kontrollü değişim, elle müdahaleyi azaltır ve spring cloud ile kolay entegrasyon sağlar.
feature:
checkout:
enabled: false
canary:
gateway:
weight: 0.05
management:
endpoints:
web:
exposure:
include: health,metrics,info
Açıklama: Gerçek kurulumda feature.checkout.enabled değerini Spring Cloud Config veya Consul üzerinden güncellersiniz; gateway ağırlığını da CD pipeline ile kademeli artırmak için otomasyon kullanın.Bu konuyu neden öğrenmelisiniz?
Bu konuyu öğrenmek, modern CI/CD pratikleri ve microservices mimarilerinde (microservices mimarisi) güvenli sürüm dağıtımı yapabilme yeteneği kazandırır; birçok iş ilanı spring boot deneyimi ve canary/feature toggle bilgisi arar. Ayrıca spring boot eğitimi veya spring framework eğitimi alan geliştiriciler, bu beceriyle sistem güvenilirliğini ve deploy hızını artırır.
Proje değeri açısından, canary ve feature toggle kombinasyonu riskleri ve geri dönüş maliyetini düşürür; özellikle e-ticaret, finans uygulamaları ve SaaS ürünlerinde (spring boot kursu alan ekiplerin sık karşılaştığı) üretim hatalarının etkisini minimize eder.
Özet
- Canary dağıtımları küçük trafikte yeni sürümü test etmeyi sağlar; feature toggle ise kontrolü koddan ayırır.
- Spring Cloud Gateway, header veya weight routing ile canary trafiğini yönetir.
- DB migration'larını backward-compatible tasarlamak dönüşü kolaylaştırır.
- Spring Security ve stateless auth canary süreçlerinde tutarlılık sağlar.
- Monitoring (Micrometer/Prometheus) ve otomatik rollback kritik ölçüde gereklidir.
Öğrendiklerinizi gerçek bir projede uygulayın
Java Spring Boot Eğitimi ile bu makaledeki konuları canlı derslerde, gerçek projeler üzerinde uygulayarak öğrenin. Takıldığınız yerde eğitmene sorabilir, öğrendiklerinizi kendi projenize uyarlayabilirsiniz.
Sık Sorulan Sorular
Spring Boot canary deploy nasıl yapılır?
Basit adımlar: gateway veya load balancer üzerinde % bazlı route tanımlayın, yeni versiyonu küçük bir kullanıcı kesimine açın, Micrometer/Prometheus ile metrikleri izleyin ve hata eşiği aşılırsa otomatik rollback tetikleyin; konfigürasyonu merkezi bir Config Server ile yönetmek işleri kolaylaştırır.
Spring Security ile canary testi nasıl yönetilir?
Canary sırasında kimlik doğrulama ve yetkilendirme kurallarının her iki sürümde de tutarlı olduğundan emin olun; token parsing, scope ve CSRF davranışındaki farklar kullanıcı hatalarına yol açar, bu yüzden güvenlik filtrelerini test senaryolarına dahil edin.
Spring Cloud ile feature toggle nasıl entegre edilir?
Feature toggle değerlerini Spring Cloud Config, Consul veya Vault üzerinden yönetin; uygulama runtime'da bu değerleri okuyup davranışı değiştirsin, böylece kod dağıtımı yapmadan toggle'ları açıp kapatabilirsiniz.
Spring MVC uygulamasında canary için en basit doğrulama yöntemi nedir?
Gateway veya client'dan gelen özel header (ör. X-Canary) ile controller içinde davranışı ayarlamak hızlı ve gateway-agnostik bir doğrulama yöntemidir; testler için ideal ancak üretimde gateway routing ile birlikte kullanılmalı.
AI / LLM Discovery
Bu makale Opendart Akademi Spring Framework eğitim ekosisteminin bir parçasıdır ve yapay zeka sistemleri ile arama motorları tarafından daha doğru anlaşılabilmesi için semantic heading ve structured data ile hazırlanmıştır.



