Dağıtım Prosedürleri
Güvenli üretim dağıtımları için dağıtım prensipleri ve karar verme.
Scriptleri ezberlemeyi değil, DÜŞÜNMEYİ öğrenin.
⚠️ Bu Yetenek Nasıl Kullanılır
Bu yetenek kopyalanacak bash scriptlerini değil, dağıtım prensiplerini öğretir.
- Her dağıtım benzersizdir
- Her adımın arkasındaki NEDENi anlayın
- Prosedürleri platformunuza uyarlayın
1. Platform Seçimi
Karar Ağacı
Ne dağıtıyorsunuz?
│
├── Statik site / JAMstack
│ └── Vercel, Netlify, Cloudflare Pages
│
├── Basit web uygulaması
│ ├── Yönetilen → Railway, Render, Fly.io
│ └── Kontrol → VPS + PM2/Docker
│
├── Mikro hizmetler
│ └── Konteyner orkestrasyonu
│
└── Sunucusuz (Serverless)
└── Edge fonksiyonları, Lambda
Her Platformun Farklı Prosedürleri Vardır
| Platform |
Dağıtım Yöntemi |
| Vercel/Netlify |
Git push, otomatik dağıtım |
| Railway/Render |
Git push veya CLI |
| VPS + PM2 |
SSH + manuel adımlar |
| Docker |
Image push + orkestrasyon |
| Kubernetes |
kubectl apply |
2. Dağıtım Öncesi Prensipler
4 Doğrulama Kategorisi
| Kategori |
Ne Kontrol Edilmeli |
| Kod Kalitesi |
Testler geçiyor, lint temiz, incelendi |
| Derleme (Build) |
Üretim derlemesi çalışıyor, uyarı yok |
| Ortam |
Env değişkenleri ayarlı, sırlar güncel |
| Güvenlik |
Yedekleme yapıldı, geri alma planı hazır |
Dağıtım Öncesi Kontrol Listesi
3. Dağıtım İş Akışı Prensipleri
5 Aşamalı Süreç
1. HAZIRLA (PREPARE)
└── Kodu, buildi, env değişkenlerini doğrula
2. YEDEKLE (BACKUP)
└── Değiştirmeden önce mevcut durumu kaydet
3. DAĞIT (DEPLOY)
└── İzleme açıkken yürüt
4. DOĞRULA (VERIFY)
└── Sağlık kontrolü, loglar, ana akışlar
5. ONAYLA veya GERİ AL (CONFIRM or ROLLBACK)
└── Her şey iyi mi? Onayla. Sorun mu var? Geri al.
Aşama Prensipleri
| Aşama |
Prensip |
| Hazırla |
Asla test edilmemiş kodu dağıtma |
| Yedekle |
Yedek olmadan geri alamazsın |
| Dağıt |
Olurken izle, uzaklaşma |
| Doğrula |
Güven ama doğrula |
| Onayla |
Geri alma tetiğini hazır tut |
4. Dağıtım Sonrası Doğrulama
Ne Doğrulanmalı
| Kontrol |
Neden |
| Sağlık uç noktası |
Hizmet çalışıyor |
| Hata logları |
Yeni hata yok |
| Ana kullanıcı akışları |
Kritik özellikler çalışıyor |
| Performans |
Yanıt süreleri kabul edilebilir |
Doğrulama Penceresi
- İlk 5 dakika: Aktif izleme
- 15 dakika: Kararlı olduğunu onayla
- 1 saat: Son doğrulama
- Ertesi gün: Metrikleri incele
5. Geri Alma (Rollback) Prensipleri
Ne Zaman Geri Alınmalı
| Belirti |
Eylem |
| Hizmet kapalı |
Derhal geri al |
| Kritik hatalar |
Geri al |
| Performans >%50 düştü |
Geri almayı düşün |
| Küçük sorunlar |
Hızlıysa ileriye doğru düzelt (fix forward) |
Platforma Göre Geri Alma Stratejisi
| Platform |
Geri Alma Yöntemi |
| Vercel/Netlify |
Önceki commit'i yeniden dağıt |
| Railway/Render |
Panoda geri al |
| VPS + PM2 |
Yedeği geri yükle, yeniden başlat |
| Docker |
Önceki image etiketi |
| K8s |
kubectl rollout undo |
Geri Alma Prensipleri
- Mükemmellik yerine hız: Önce geri al, sonra hata ayıkla
- Hataları birleştirme: Tek geri alma, birden fazla değişiklik değil
- İletişim Kur: Ekibe ne olduğunu söyle
- Post-mortem: Kararlı hale geldikten sonra nedenini anla
6. Sıfır Kesinti (Zero-Downtime) Dağıtım
Stratejiler
| Strateji |
Nasıl Çalışır |
| Yuvarlanan (Rolling) |
Örnekleri birer birer değiştir |
| Mavi-Yeşil (Blue-Green) |
Trafiği ortamlar arasında değiştir |
| Kanarya (Canary) |
Kademeli trafik geçişi |
Seçim Prensipleri
| Senaryo |
Strateji |
| Standart sürüm |
Yuvarlanan (Rolling) |
| Yüksek riskli değişiklik |
Mavi-yeşil (kolay geri alma) |
| Doğrulama ihtiyacı |
Kanarya (gerçek trafikle test) |
7. Acil Durum Prosedürleri
Hizmet Kesintisi Önceliği
- Değerlendir: Belirti nedir?
- Hızlı düzeltme: Belirsizse yeniden başlat
- Geri al: Yeniden başlatma yardımcı olmazsa
- Araştır: Kararlı hale geldikten sonra
Araştırma Sırası
| Kontrol |
Yaygın Sorunlar |
| Loglar |
Hatalar, istisnalar |
| Kaynaklar |
Disk dolu, bellek |
| Ağ |
DNS, güvenlik duvarı |
| Bağımlılıklar |
Veritabanı, API'ler |
8. Anti-Desenler
| ❌ Yapma |
✅ Yap |
| Cuma günü dağıt |
Haftanın başında dağıt |
| Dağıtımı aceleye getir |
Süreci takip et |
| Staging'i atla |
Her zaman önce test et |
| Yedeksiz dağıt |
Dağıtımdan önce yedekle |
| Dağıtımdan sonra uzaklaş |
15+ dk izle |
| Aynı anda birden çok değişiklik |
Seferde tek değişiklik |
9. Karar Kontrol Listesi
Dağıtımdan önce:
10. En İyi Uygulamalar
- Büyük sürümler yerine küçük, sık dağıtımlar
- Riskli değişiklikler için özellik bayrakları (feature flags)
- Tekrarlayan adımları otomatize et
- Her dağıtımı belgele
- Sorunlardan sonra neyin yanlış gittiğini incele
- İhtiyaç duymadan önce geri almayı test et
Unutmayın: Her dağıtım bir risktir. Riski hızla değil, hazırlıkla en aza indirin.
1---2name: deployment-procedures-23description: Production deployment principles and decision-making. Safe deployment workflows, rollback strategies, and verification. Teaches thinking, not scripts.4---5
6# Dağıtım Prosedürleri
7
8> Güvenli üretim dağıtımları için dağıtım prensipleri ve karar verme.
9> **Scriptleri ezberlemeyi değil, DÜŞÜNMEYİ öğrenin.**
10
11---
12
13## ⚠️ Bu Yetenek Nasıl Kullanılır
14
15Bu yetenek kopyalanacak bash scriptlerini değil, **dağıtım prensiplerini** öğretir.
16
17- Her dağıtım benzersizdir
18- Her adımın arkasındaki NEDENi anlayın
19- Prosedürleri platformunuza uyarlayın
20
21---
22
23## 1. Platform Seçimi
24
25### Karar Ağacı
26
27```
28Ne dağıtıyorsunuz?
29│
30├── Statik site / JAMstack
31│ └── Vercel, Netlify, Cloudflare Pages
32│
33├── Basit web uygulaması
34│ ├── Yönetilen → Railway, Render, Fly.io
35│ └── Kontrol → VPS + PM2/Docker
36│
37├── Mikro hizmetler
38│ └── Konteyner orkestrasyonu
39│
40└── Sunucusuz (Serverless)
41 └── Edge fonksiyonları, Lambda
42```
43
44### Her Platformun Farklı Prosedürleri Vardır
45
46| Platform | Dağıtım Yöntemi |
47|----------|------------------|
48| **Vercel/Netlify** | Git push, otomatik dağıtım |
49| **Railway/Render** | Git push veya CLI |
50| **VPS + PM2** | SSH + manuel adımlar |
51| **Docker** | Image push + orkestrasyon |
52| **Kubernetes** | kubectl apply |
53
54---
55
56## 2. Dağıtım Öncesi Prensipler
57
58### 4 Doğrulama Kategorisi
59
60| Kategori | Ne Kontrol Edilmeli |
61|----------|--------------|
62| **Kod Kalitesi** | Testler geçiyor, lint temiz, incelendi |
63| **Derleme (Build)** | Üretim derlemesi çalışıyor, uyarı yok |
64| **Ortam** | Env değişkenleri ayarlı, sırlar güncel |
65| **Güvenlik** | Yedekleme yapıldı, geri alma planı hazır |
66
67### Dağıtım Öncesi Kontrol Listesi
68
69- [ ] Tüm testler geçiyor
70- [ ] Kod incelendi ve onaylandı
71- [ ] Üretim derlemesi başarılı
72- [ ] Ortam değişkenleri doğrulandı
73- [ ] Veritabanı migrasyonları hazır (varsa)
74- [ ] Geri alma planı belgelendi
75- [ ] Ekip bilgilendirildi
76- [ ] İzleme (monitoring) hazır
77
78---
79
80## 3. Dağıtım İş Akışı Prensipleri
81
82### 5 Aşamalı Süreç
83
84```
851. HAZIRLA (PREPARE)
86 └── Kodu, buildi, env değişkenlerini doğrula
87
882. YEDEKLE (BACKUP)
89 └── Değiştirmeden önce mevcut durumu kaydet
90
913. DAĞIT (DEPLOY)
92 └── İzleme açıkken yürüt
93
944. DOĞRULA (VERIFY)
95 └── Sağlık kontrolü, loglar, ana akışlar
96
975. ONAYLA veya GERİ AL (CONFIRM or ROLLBACK)
98 └── Her şey iyi mi? Onayla. Sorun mu var? Geri al.
99```
100
101### Aşama Prensipleri
102
103| Aşama | Prensip |
104|-------|-----------|
105| **Hazırla** | Asla test edilmemiş kodu dağıtma |
106| **Yedekle** | Yedek olmadan geri alamazsın |
107| **Dağıt** | Olurken izle, uzaklaşma |
108| **Doğrula** | Güven ama doğrula |
109| **Onayla** | Geri alma tetiğini hazır tut |
110
111---
112
113## 4. Dağıtım Sonrası Doğrulama
114
115### Ne Doğrulanmalı
116
117| Kontrol | Neden |
118|-------|-----|
119| **Sağlık uç noktası** | Hizmet çalışıyor |
120| **Hata logları** | Yeni hata yok |
121| **Ana kullanıcı akışları** | Kritik özellikler çalışıyor |
122| **Performans** | Yanıt süreleri kabul edilebilir |
123
124### Doğrulama Penceresi
125
126- **İlk 5 dakika**: Aktif izleme
127- **15 dakika**: Kararlı olduğunu onayla
128- **1 saat**: Son doğrulama
129- **Ertesi gün**: Metrikleri incele
130
131---
132
133## 5. Geri Alma (Rollback) Prensipleri
134
135### Ne Zaman Geri Alınmalı
136
137| Belirti | Eylem |
138|---------|--------|
139| Hizmet kapalı | Derhal geri al |
140| Kritik hatalar | Geri al |
141| Performans >%50 düştü | Geri almayı düşün |
142| Küçük sorunlar | Hızlıysa ileriye doğru düzelt (fix forward) |
143
144### Platforma Göre Geri Alma Stratejisi
145
146| Platform | Geri Alma Yöntemi |
147|----------|----------------|
148| **Vercel/Netlify** | Önceki commit'i yeniden dağıt |
149| **Railway/Render** | Panoda geri al |
150| **VPS + PM2** | Yedeği geri yükle, yeniden başlat |
151| **Docker** | Önceki image etiketi |
152| **K8s** | kubectl rollout undo |
153
154### Geri Alma Prensipleri
155
1561. **Mükemmellik yerine hız**: Önce geri al, sonra hata ayıkla
1572. **Hataları birleştirme**: Tek geri alma, birden fazla değişiklik değil
1583. **İletişim Kur**: Ekibe ne olduğunu söyle
1594. **Post-mortem**: Kararlı hale geldikten sonra nedenini anla
160
161---
162
163## 6. Sıfır Kesinti (Zero-Downtime) Dağıtım
164
165### Stratejiler
166
167| Strateji | Nasıl Çalışır |
168|----------|--------------|
169| **Yuvarlanan (Rolling)** | Örnekleri birer birer değiştir |
170| **Mavi-Yeşil (Blue-Green)** | Trafiği ortamlar arasında değiştir |
171| **Kanarya (Canary)** | Kademeli trafik geçişi |
172
173### Seçim Prensipleri
174
175| Senaryo | Strateji |
176|----------|----------|
177| Standart sürüm | Yuvarlanan (Rolling) |
178| Yüksek riskli değişiklik | Mavi-yeşil (kolay geri alma) |
179| Doğrulama ihtiyacı | Kanarya (gerçek trafikle test) |
180
181---
182
183## 7. Acil Durum Prosedürleri
184
185### Hizmet Kesintisi Önceliği
186
1871. **Değerlendir**: Belirti nedir?
1882. **Hızlı düzeltme**: Belirsizse yeniden başlat
1893. **Geri al**: Yeniden başlatma yardımcı olmazsa
1904. **Araştır**: Kararlı hale geldikten sonra
191
192### Araştırma Sırası
193
194| Kontrol | Yaygın Sorunlar |
195|-------|--------------|
196| **Loglar** | Hatalar, istisnalar |
197| **Kaynaklar** | Disk dolu, bellek |
198| **Ağ** | DNS, güvenlik duvarı |
199| **Bağımlılıklar** | Veritabanı, API'ler |
200
201---
202
203## 8. Anti-Desenler
204
205| ❌ Yapma | ✅ Yap |
206|----------|-------|
207| Cuma günü dağıt | Haftanın başında dağıt |
208| Dağıtımı aceleye getir | Süreci takip et |
209| Staging'i atla | Her zaman önce test et |
210| Yedeksiz dağıt | Dağıtımdan önce yedekle |
211| Dağıtımdan sonra uzaklaş | 15+ dk izle |
212| Aynı anda birden çok değişiklik | Seferde tek değişiklik |
213
214---
215
216## 9. Karar Kontrol Listesi
217
218Dağıtımdan önce:
219
220- [ ] **Platforma uygun prosedür mü?**
221- [ ] **Yedekleme stratejisi hazır mı?**
222- [ ] **Geri alma planı belgelendi mi?**
223- [ ] **İzleme yapılandırıldı mı?**
224- [ ] **Ekip bilgilendirildi mi?**
225- [ ] **Sonrasında izlemek için zaman var mı?**
226
227---
228
229## 10. En İyi Uygulamalar
230
2311. Büyük sürümler yerine **küçük, sık dağıtımlar**
2322. Riskli değişiklikler için **özellik bayrakları (feature flags)**
2333. Tekrarlayan adımları **otomatize et**
2344. Her dağıtımı **belgele**
2355. Sorunlardan sonra neyin yanlış gittiğini **incele**
2366. İhtiyaç duymadan önce **geri almayı test et**
237
238---
239
240> **Unutmayın:** Her dağıtım bir risktir. Riski hızla değil, hazırlıkla en aza indirin.