Sürüm Süreci
5 minute read
Sürüm Süreci
Denomas, dual-track deployment stratejisi uygular. Bu strateji, SaaS ve self-managed ürün hatlarının farklı sürüm döngülerini yönetir. Dağıtım süreci code.denomas.com ve code.ilimteknoloji.com GitLab altyapıları üzerinde çalışır. Otomatik Kalite Kapısı tüm süreci otomatize eder ve güvence altına alır.
Git Akışı
Standart ve kanıtlanmış branch stratejisi:
feature-branch → develop → staging → main
| Dal | Rol | Deploy Ortamı |
|---|---|---|
feature/* | Yeni özellik veya bug fix geliştirmesi | Development (her push) |
develop | Ana geliştirme dalı, tüm yeni özellikler buraya merge edilir | Development |
staging | Canlıya çıkmadan önceki son test ortamı | Staging (otomatik) |
main | Sadece stabil, test edilmiş ve canlıya çıkmaya hazır kod | Production (manuel onay) |
main ve develop dallarına doğrudan push yapılması pre-commit hook ile engellenmiştir. Tüm değişiklikler Merge Request üzerinden gelmelidir.
Dual-Track Deployment
Track 1: Sürekli Deployment (SaaS)
- Hedef: denomas.com, sibersigorta.com, cybercasko.com üzerinden sunulan SaaS hizmetler
- Sıklık: Günlük (her başarılı main merge sonrası)
- GitLab CI Aşamaları:
lint→test→build→scan→deploy-staging→deploy-prod - Süreç:
- MR onaylandı ve
stagingdalına merge edildi - GitLab Runner
deploy-stagingaşamasını tetikler → Staging ortamına otomatik deploy - Otomatik smoke testleri çalıştırılır
- Geliştirici
maindalına merge eder (Manuel onay ile) - Canary ortamına otomatik deploy → %5 trafik yönlendirilir
- Canary metrikler 30 dakika izlenir
- Başarılı → Production'a kademeli rollout (%5 → %25 → %50 → %100)
- Başarısız → Otomatik rollback
- MR onaylandı ve
Track 2: Aylık Release (Self-Managed)
- Hedef: Müşteri kendi altyapısında çalıştıran kurumsal müşteriler (on-premise Denomas Denetim Otomasyon, GPMS vb.)
- Sıklık: Aylık (her ayın ilk Perşembesi)
- Süreç:
- Release branch oluşturulur (
release/vX.Y.Z) - Release candidate tag'lenir (
vX.Y.Z-rc.1) - QA ekibi kapsamlı test yapar (1 hafta)
- Release notes ve upgrade kılavuzu hazırlanır
- Final release tag'lenir (
vX.Y.Z) ve paketlenir (Docker image + Ansible playbook) 08-HANDBOOKS/altında release dokümantasyonu güncellenir- Müşterilere bildirim gönderilir + upgrade Ansible playbook'u paylaşılır
- Release branch oluşturulur (
GitLab CI Pipeline Aşamaları (Detay)
# .gitlab-ci.yml — Track 1 pipeline özeti
stages:
- lint # Pre-commit, ruff, mypy, eslint, yamllint
- test # pytest (--cov-fail-under=80), entegrasyon testleri
- build # Docker image oluşturma, semantic versiyon etiketi
- scan # Bandit, Semgrep, Trivy, GitLab SAST, lisans kontrolü
- deploy-staging # Ansible ile staging ortamına deploy + smoke test
- deploy-prod # Manuel onay (when: manual) + canary + kademeli rollout
Her aşama başarısız olursa pipeline durur ve MR merge edilemez. Detaylı .gitlab-ci.yml yapısı için CI/CD Pipeline
sayfasına bakınız.
Canary Deployment
Canary, production deploy öncesi küçük bir trafik yüzdesini yeni versiyona yönlendirerek risk azaltır.
┌─────────────┐
│ Canary │ ← %5 trafik (ilk 15 dk)
│ (v2.1.1) │ %25 trafik (15-30 dk)
┌──────────┐ ├─────────────┤
│ Caddy │ ──→ │ Production │ ← Kalan trafik
│ LB │ │ (v2.1.0) │
└──────────┘ └─────────────┘
Kademeli Rollout Adımları
| Adım | Trafik | Süre | Koşul |
|---|---|---|---|
| 1 | %5 → Canary | 0-15 dakika | Otomatik |
| 2 | %25 → Canary | 15-30 dakika | Metrikler temiz ise otomatik |
| 3 | %50 → Canary | 30-45 dakika | Metrikler temiz ise otomatik |
| 4 | %100 → Yeni versiyon | 45+ dakika | Metrikler temiz ise otomatik |
Canary Metrikleri
| Metrik | Eşik | Aksiyon |
|---|---|---|
| Hata oranı (5xx) | > %1 artış | Otomatik rollback |
| Yanıt süresi (p95) | > %20 artış | Otomatik rollback |
| Apdex skoru | < 0.9 | Uyarı + manuel inceleme |
| CPU/Memory | > %30 artış | Uyarı + manuel inceleme |
| PostgreSQL yavaş sorgu | > %50 artış | Uyarı + manuel inceleme |
Canary metrikleri Prometheus tarafından toplanır ve Grafana panolarında gerçek zamanlı izlenir.
Rollback Prosedürü
Otomatik Rollback (Canary Aşaması)
Canary aşamasında eşik değerler aşıldığında otomatik rollback tetiklenir:
- Caddy upstream'de canary pod'ları trafik dışına alınır (0 saniye)
- Canary pod'ları durdurulur
- Önceki stabil versiyon tüm trafiği almaya devam eder
- PagerDuty üzerinden on-call mühendise bildirim gönderilir
- GitLab'da otomatik issue oluşturulur (
severity::1etiketi ile) - Post-mortem süreci başlatılır (48 saat içinde tamamlanır)
Manuel Rollback (Production Aşaması)
Production'da sorun tespit edildiğinde:
# 1. Önceki stabil versiyona geri dön
ansible-playbook rollback-production.yml -e "target_version=v2.1.0"
# 2. Veritabanı migration rollback (gerekli ise)
python manage.py migrate <app_name> <previous_migration>
# 3. Doğrulama
ansible-playbook smoke-test.yml -e "environment=production"
Otomatik rollback süresi hedefi: 5 dakika içerisinde tamamlanma. Manuel rollback hedefi: 15 dakika. Bu süreler, izleme araçları tarafından ölçülür ve haftalık SaaS Availability toplantısında raporlanır.
Versiyon Politikası
| Ortam | Versiyonlama | Örnek |
|---|---|---|
| SaaS (Track 1) | Sürekli versiyon, her deploy bir artış | 2026.03.15.1 (tarih bazlı) |
| Self-Managed (Track 2) | SemVer — MAJOR.MINOR.PATCH | 3.2.1 |
| RC (Release Candidate) | SemVer + pre-release | 3.3.0-rc.1 |
| Odoo Modülleri | Odoo versiyon + modül versiyon | 18.0.1.0.0 |
- Destek: Son 2 major versiyon desteklenir
- EOL (End of Life): Major versiyon çıkarıldığından 12 ay sonra N-2 versiyonu destek dışı kalır
Release Kontrol Listesi
## Track 1 (SaaS) Release
- [ ] Tüm kalite kapıları geçildi (lint, test, sast, scan)
- [ ] Staging ortamında smoke testler başarılı
- [ ] Canary metrikleri 30 dakika boyunca stabil
- [ ] Kademeli rollout tamamlandı (%5 → %100)
- [ ] Grafana panolarında anomali yok
## Track 2 (Self-Managed) Release
- [ ] Tüm kalite kapıları geçildi
- [ ] RC tag'lendi ve QA testi tamamlandı (1 hafta)
- [ ] Release notes yazıldı (Conventional Commits'ten otomatik üretildi)
- [ ] Upgrade kılavuzu güncellendi (Ansible playbook dahil)
- [ ] Docker image'lar registry'ye push edildi
- [ ] Handbook sayfaları güncellendi
- [ ] Destek ekibi bilgilendirildi ve runbook güncellendi
- [ ] Müşteri bildirimi gönderildi (email + partner portal)
- [ ] Partner kit güncellendi (release notes + battle card)
Hotfix Süreci
Kritik güvenlik veya iş kesintisi durumları için:
maindalındanhotfix/vX.Y.Z+1branch'i oluşturulur- Fix uygulanır, tüm kalite kapıları geçilir
- Doğrudan
mainvedevelopdallarına merge edilir - Acil canary + production deploy (kademeli rollout süresi 15 dakikaya kısaltılır)
- Track 2 müşterilerine patch release olarak sunulur
Yapay Zeka Asistanları release kontrol listesi doğrulaması, release notes taslağı oluşturma ve Conventional Commits'ten changelog üretmede görev alabilir. Production deployment onay yetkisi (when: manual) sadece insanlara aittir — bu, İç mühendislik onay protokolünun bir parçasıdır.
İlgili Sayfalar
- Mühendislik Genel Bakış
- CI/CD Pipeline
- İzleme ve Gözlemlenebilirlik
- Kalite Mühendisliği
- Kod Kalitesi
- Mimari Prensipler
- Mühendislik
Geribildirim
Bu sayfa yararlı oldu mu?
Bu sayfa faydali oldu
Bu sayfa gelistirilmeli
