Quarkus Doğrulama Döngüsü
PR'lardan önce, büyük değişikliklerden sonra ve deployment öncesi çalıştırın.
Ne Zaman Aktif Edilir
- Quarkus servisi için pull request açmadan önce
- Büyük refactoring veya bağımlılık yükseltmelerinden sonra
- Staging veya production için deployment öncesi doğrulama
- Tam build → lint → test → güvenlik taraması → native derleme pipeline'ı çalıştırma
- Test kapsamının eşikleri karşıladığını doğrulama (%80+)
- Native image uyumluluğunu test etme
Faz 1: Build
Build başarısız olursa, durdurun ve derleme hatalarını düzeltin.
Faz 2: Static Analiz
Checkstyle, PMD, SpotBugs (Maven)
SonarQube (yapılandırılmışsa)
Ele Alınacak Yaygın Sorunlar
- Kullanılmayan import'lar veya değişkenler
- Karmaşık metodlar (yüksek cyclomatic complexity)
- Potansiyel null pointer dereference'ları
- SpotBugs tarafından işaretlenen güvenlik sorunları
Faz 3: Testler + Kapsam
Test Kategorileri
Unit Testler
Mock'lanmış bağımlılıklarla servis mantığını test edin:
Entegrasyon Testleri
Gerçek veritabanıyla (Testcontainers) test edin:
API Testleri
REST Assured ile REST endpoint'lerini test edin:
Kapsam Raporu
Ayrıntılı kapsam için target/site/jacoco/index.html sayfasını kontrol edin:
- Genel satır kapsamı (hedef: %80+)
- Branch kapsamı (hedef: %70+)
- Kapsanmamış kritik yolları belirleyin
Faz 4: Güvenlik Taraması
Bağımlılık Güvenlik Açıkları (Maven)
CVE'ler için target/dependency-check-report.html raporunu inceleyin.
Quarkus Güvenlik Denetimi
OWASP ZAP (API Güvenlik Testi)
Yaygın Güvenlik Kontrolleri
- Tüm gizli bilgiler ortam değişkenlerinde (kodda değil)
- Tüm endpoint'lerde girdi doğrulama
- Kimlik doğrulama/yetkilendirme yapılandırılmış
- CORS düzgün yapılandırılmış
- Güvenlik başlıkları ayarlanmış
- Parolalar BCrypt ile hash'lenmiş
- SQL injection koruması (parametreli sorgular)
- Genel endpoint'lerde rate limiting
Faz 5: Native Derleme
GraalVM native image uyumluluğunu test edin:
Native Image Sorun Giderme
Yaygın sorunlar:
- Reflection: Dinamik sınıflar için reflection yapılandırması ekleyin
- Resources:
quarkus.native.resources.includesile kaynakları dahil edin - JNI: Native kütüphaneler kullanıyorsanız JNI sınıflarını kaydedin
Örnek reflection yapılandırması:
Faz 6: Performans Testi
K6 ile Yük Testi
Çalıştırın:
İzlenecek Metrikler
- Yanıt süresi (p50, p95, p99)
- Throughput (istek/saniye)
- Hata oranı
- Bellek kullanımı
- CPU kullanımı
Faz 7: Sağlık Kontrolleri
Beklenen yanıtlar:
Faz 8: Container Image Build
Container Güvenlik Taraması
Faz 9: Yapılandırma Doğrulama
Ortama Özgü Kontroller
- Veritabanı URL'leri ortam başına yapılandırılmış
- Gizli bilgiler dışsallaştırılmış (Vault, ortam değişkenleri)
- Loglama seviyeleri uygun
- CORS origin'leri doğru ayarlanmış
- Rate limiting yapılandırılmış
- İzleme/tracing etkinleştirilmiş
Faz 10: Dokümantasyon İncelemesi
- OpenAPI/Swagger dokümanları güncel (
/q/swagger-ui) - README kurulum talimatlarını içeriyor
- API değişiklikleri belgelenmiş
- Breaking change'ler için migration rehberi
- Yapılandırma özellikleri belgelenmiş
OpenAPI spec oluşturun:
Doğrulama Kontrol Listesi
Kod Kalitesi
- Build uyarısız geçiyor
- Static analiz temiz (yüksek/orta sorun yok)
- Kod ekip kurallarını takip ediyor
- PR'da yorum satırına alınmış kod veya TODO yok
Test
- Tüm testler geçiyor
- Kod kapsamı ≥ %80
- Gerçek veritabanıyla entegrasyon testleri
- Güvenlik testleri geçiyor
- Performans kabul edilebilir sınırlar içinde
Güvenlik
- Bağımlılık güvenlik açığı yok
- Kimlik doğrulama/yetkilendirme test edilmiş
- Girdi doğrulama tamamlanmış
- Gizli bilgiler kaynak kodda değil
- Güvenlik başlıkları yapılandırılmış
Deployment
- Native derleme başarılı
- Container image oluşturuluyor
- Sağlık kontrolleri doğru yanıt veriyor
- Hedef ortam için yapılandırma geçerli
Native Image
- Native executable oluşturuluyor
- Native testler geçiyor
- Başlangıç süresi < 100ms
- Bellek ayak izi kabul edilebilir
Otomatik Doğrulama Script'i
CI/CD Entegrasyonu
GitHub Actions Örneği
En İyi Uygulamalar
- Her PR öncesi doğrulama döngüsünü çalıştırın
- CI/CD pipeline'ında otomatize edin
- Sorunları hemen düzeltin; borç biriktirmeyin
- Kapsamı %80'in üzerinde tutun
- Bağımlılıkları düzenli olarak güncelleyin
- Native derlemeyi periyodik olarak test edin
- Performans trendlerini izleyin
- Breaking change'leri belgeleyin
- Güvenlik tarama sonuçlarını inceleyin
- Her ortam için yapılandırmayı doğrulayın


