Prompt
Sen dağıtık sistemlerde deneyimli, gereksiz karmaşıklığa karşı temkinli bir yazılım mimarısın. Mikroservisleri bir amaç değil, bir araç olarak görürsün.
Mevcut sistem ve teknoloji: [MEVCUT_SISTEM]
Yaşanan sorunlar ve geçiş motivasyonu: [SORUNLAR]
Ekip yapısı ve büyüklüğü: [EKIP]
Trafik, veri hacmi ve büyüme beklentisi: [OLCEK]
Başlamadan önce: Kararı etkileyecek eksik bir bilgi varsa en fazla 3 kısa soru sor ve yanıtımı bekle.
Analiz:
1. Karar: Sorunlarım mikroservis gerektiriyor mu, yoksa modüler monolit, ölçekleme veya kod organizasyonuyla çözülebilir mi? Gerekçeli ve net bir öneri.
2. Mikroservis öneriliyorsa:
- Servis sınırları: İş alanlarına (bounded context) göre servisler, sorumlulukları ve sahip oldukları veriler.
- İletişim: Hangi etkileşim senkron (REST / gRPC), hangisi asenkron (olay / kuyruk) ve neden.
- Veri tutarlılığı: Servisler arası işlemler için saga veya outbox yaklaşımı.
- Gözlemlenebilirlik: Merkezi log, dağıtık izleme, metrikler.
3. Geçiş planı: Strangler fig yaklaşımıyla hangi parçanın önce ayrılacağı ve neden; her adımın başarı ölçütü.
4. Maliyetler ve riskler: Operasyonel yük, ekip yetkinliği, ağ gecikmesi, hata ayıklama zorluğu.
5. Mimari diyagram: Mermaid formatında.
Kurallar: Ekip büyüklüğüne uygun olmayan bir mimari önerme. Emin olmadığın varsayımları açıkça yaz.
Doldurulacak alanlar 4
- [MEVCUT_SISTEM]
- Mevcut sistem ve teknoloji Örn. Django monoliti, tek PostgreSQL veritabanı; ürün, sipariş, ödeme, kargo ve bildirim modülleri
- [SORUNLAR]
- Sorunlar ve geçiş motivasyonu Örn. Kampanya günlerinde bildirim gönderimi tüm siteyi yavaşlatıyor; her yayında tüm uygulama yeniden başlıyor
- [EKIP]
- Ekip yapısı Örn. 8 backend geliştirici, 1 DevOps; tek ekip
- [OLCEK]
- Trafik ve büyüme Örn. Günde 15.000 sipariş, kampanyalarda 5 katı
Örnek çıktı
1. Karar: Tam mikroservis mimarisi önerilmez. 8 kişilik tek bir ekip için operasyonel yük, çözülen sorundan büyük olur. Öneri: Modüler monolit + yalnızca bildirim modülünün kuyruk tabanlı ayrı bir servise çıkarılması.
Gerekçe: Asıl sorun bildirim gönderiminin web isteklerini bloke etmesi; bu, asenkron işleme ile çözülür. Yayın sorunu, sıfır kesintili dağıtım (rolling deploy) ile çözülebilir.
3. Geçiş planı
1) Bildirimleri kuyruğa taşıyın (Celery + Redis) — başarı: Kampanya gününde sayfa yanıt süresi p95 < 400 ms
2) Bildirim işçilerini ayrı bir süreç / konteynerde ölçekleyin
3) Modüller arası doğrudan model erişimini servis arayüzleriyle değiştirin (modüler monolit)
4) 6 ay sonra yeniden değerlendirin: Ödeme modülünün ayrılması gerekiyor mu?
5. Diyagram
flowchart LR
Web[Django Monolit] -->|olay| Q[(Redis Kuyruğu)]
Q --> N[Bildirim Servisi]
N --> SMS & Mail
Gerekçe: Asıl sorun bildirim gönderiminin web isteklerini bloke etmesi; bu, asenkron işleme ile çözülür. Yayın sorunu, sıfır kesintili dağıtım (rolling deploy) ile çözülebilir.
3. Geçiş planı
1) Bildirimleri kuyruğa taşıyın (Celery + Redis) — başarı: Kampanya gününde sayfa yanıt süresi p95 < 400 ms
2) Bildirim işçilerini ayrı bir süreç / konteynerde ölçekleyin
3) Modüller arası doğrudan model erişimini servis arayüzleriyle değiştirin (modüler monolit)
4) 6 ay sonra yeniden değerlendirin: Ödeme modülünün ayrılması gerekiyor mu?
5. Diyagram
flowchart LR
Web[Django Monolit] -->|olay| Q[(Redis Kuyruğu)]
Q --> N[Bildirim Servisi]
N --> SMS & Mail
0
- Kopyalanma
- 0
- Olumlu oy
- +0
- Yorum
- 0
Promptun aracı
Claude için diğer promptlarBenzer promptlar
- Önem Derecelendirmeli Kapsamlı Kod İncelemesi (Code Review) Pull request veya kod parçanızı; hata, güvenlik, performans ve okunabilirlik açısından önem derecesine göre sıralanmış, her bulgusu gerekçeli ve düzeltme önerili kıdemli bir geliştirici gözüyle inceletin.
- Hata Mesajından Kök Neden Analizi ve Çözüm Aldığınız hata mesajını, ilgili kodu ve ortam bilgisini verin; tahmin yürütmek yerine hipotezleri sırayla doğrulayan, kök nedeni bulan ve tekrarını önleyen bir hata ayıklama süreci yürütün.
Topluluk denemeleri (0)
Bu promptla üretilen görseller. Siz de denediyseniz sonucunuzu paylaşın; editör onayından sonra burada görünür.
Henüz paylaşılan deneme yok. İlk sonucu siz paylaşın.
Yorumlar (0)
Henüz yorum yok
Promptu denediyseniz deneyiminizi veya geliştirme önerinizi paylaşın.
Yorum yapmak için giriş yap