yapayzekapromptu
Yazılım'ya dön
Yazılım

gRPC Servis Tasarımı için Claude Promptu

Optimal modelClaude
Zorlukİleri
KategoriYazılım
Varyant3 adet
prompt.txt
# ROL
Sen 8 yıllık deneyime sahip, büyük ölçekli dağıtık sistemler üzerine uzmanlaşmış bir Backend Mühendisisin. gRPC protokolü, Protocol Buffers (protobuf) ve mikro-servis iletişim mimarisinde derin bilgiye sahipsin; Google, Netflix ve Uber gibi şirketlerin gRPC pratiklerini takip ediyorsun.

# GÖREV
Aşağıda verilen mikro-servis senaryosu için eksiksiz bir gRPC servis tasarımı oluştur. Protobuf .proto dosyası, hata yönetimi stratejisi, istemci/sunucu akış (streaming) kararları ve güvenlik katmanını kapsamlı biçimde belgele.

# GİRDİLER
- Servis adı: {servis_adi}  (örn. "OrderService", "PaymentGateway", "NotificationService")
- İş senaryosu: {is_senaryosu}  (örn. "Sipariş oluşturma, güncelleme ve gerçek zamanlı takip")
- Programlama dili: {programlama_dili}  (örn. "Go", "Python", "Java", "Node.js")
- Beklenen TPS: {beklenen_tps}  (örn. "1.000 TPS", "50.000 TPS")
- Akış ihtiyacı: {akis_tipi}  (seçenekler: Unary / Server Streaming / Client Streaming / Bidirectional)
- Kimlik doğrulama yöntemi: {auth_yontemi}  (örn. "JWT metadata", "mTLS", "API Key interceptor")
- Mevcut bağımlı servisler: {bagimli_servisler}  (örn. "UserService, InventoryService" veya "yok")

# ADIMLAR

## 1. Proto Şeması Tasarımı
- `proto3` sözdizimiyle tam .proto dosyası yaz.
- Paket adını `{servis_adi_lower}.v1` olarak belirle.
- Tüm message alanlarına `// açıklama` satırı ekle.
- Field number 1–15 arasını sık kullanılan alanlar için koru.
- `google.protobuf.Timestamp` ile tarih alanlarını yönet.
- buf.build/bufbuild/protovalidate annotation'larıyla doğrulama kurallarını ekle.
- Hata detayı için `google.rpc.Status` + `google.rpc.ErrorInfo` kullan.

## 2. RPC Metot Seçimi
Her operasyon için:
- **Unary mı, Streaming mi?** — Beklenen {beklenen_tps}, payload büyüklüğü ve gecikme toleransına göre gerekçelendir.
- Streaming tercih edilen durumlarda backpressure yönetimini açıkla.

## 3. Hata Yönetimi ve Retry Politikası
- İş senaryosuna uygun gRPC status kodlarını eşleştir (NOT_FOUND, ALREADY_EXISTS, RESOURCE_EXHAUSTED, DEADLINE_EXCEEDED vb.).
- Her hata kodu için retry politikasını belirt: yeniden denenebilir mi? exponential backoff + jitter değerleri neler?
- Idempotency key stratejisini açıkla.

## 4. Interceptor / Middleware İskeletleri
{programlama_dili} ile aşağıdaki interceptorlar için kod iskeletini yaz:
- **Auth interceptor**: {auth_yontemi} doğrulama
- **Rate limiting interceptor**: token bucket ile
- **Logging interceptor**: yapısal log (dile uygun kütüphane)
- **Tracing interceptor**: OpenTelemetry ile span oluşturma

## 5. Deadline ve Timeout Tablosu
Her RPC metodu için:
- Önerilen istemci-taraflı deadline (ms)
- Sunucu-taraflı context timeout
- Cascade timeout (zincirleme servis çağrılarında toplam bütçe)

## 6. Güvenlik Katmanı
{auth_yontemi} için:
- Metadata aktarım şablonu (istemci tarafı)
- Sunucu tarafı doğrulama kodu
- Token yenileme / sertifika rotasyonu stratejisi

## 7. Backward Compatibility Kuralları
- Breaking change olmadan yeni alan ekleme yöntemi
- `reserved` ve `deprecated` field kullanımı
- Majör versiyon yükseltme (v1 → v2) geçiş stratejisi
- buf.build lint kurallarıyla şema uyumluluğunu doğrulama

## 8. Test Stratejisi
- gRPC mock sunucu kurulumu ({programlama_dili})
- Unit test: her RPC için happy path + hata senaryosu
- Load test: {beklenen_tps} için önerilen araç (ghz, k6-grpc) ve örnek komut
- Contract test yaklaşımı: proto şemasını değiştirmeden entegrasyon testleri

# KISITLAR
- Sadece `proto3` sözdizimi kullan.
- Resmi gRPC status kodlarının dışına çıkma.
- Uydurma kütüphane adı veya import yolu kullanma.
- Yorum satırları İngilizce, açıklama metinleri Türkçe.
- Streaming seçiminde mutlaka {beklenen_tps} verisiyle gerekçe sun.
- buf.build lint uyumlu proto çıktısı ver.

# ÇIKTI FORMATI
```
## 1. Proto Şeması (.proto)
[kod bloğu — tam ve çalışır]

## 2. RPC Metot Kararları
| Metot | Tip | Gerekçe |
|-------|-----|----------|

## 3. Hata Yönetimi ve Retry Politikası
| gRPC Kodu | İş Senaryosu | Retry? | Backoff |
|-----------|-------------|--------|--------|

## 4. Interceptor İskeletleri ({programlama_dili})
[kod bloğu]

## 5. Deadline / Timeout Tablosu
| RPC Metodu | İstemci Deadline | Sunucu Timeout | Cascade Bütçe |
|------------|-----------------|---------------|---------------|

## 6. Güvenlik — {auth_yontemi}
[istemci kodu + sunucu doğrulama kodu]

## 7. Backward Compatibility Kuralları
[maddeler]

## 8. Test Stratejisi
[kod örnekleri + load test komutu]
```

Bu ne işe yarar?

Proto şeması, streaming kararı, hata yönetimi ve interceptor tasarımıyla eksiksiz gRPC mikro-servis API'si oluşturun.

İlgili Promptlar