İçeriğe Atla
Mustafa Erbay
Teknoloji İnsan tarafından yazıldı · 12 dk okuma · görüntülenme Read in English
100%

Çoklu Sağlayıcı Yapay Zeka Mimarisinde Kota Fail-Over Disiplini

Üretim AI pipeline'ında Gemini, Groq, Cerebras arasında fail-over disiplini: kota görünmez tükenir, sessiz çürüme yakalanmazsa kalite sessizce sapar.

Çoklu Sağlayıcı Yapay Zeka Mimarisinde Kota Fail-Over Disiplini — kapak görseli

Üretim bir AI içerik pipeline’ı çalıştırıyorum: günde 4-8 yazı, çoklu kategori, otomatik yayın. İlk altı ay tek sağlayıcı (Gemini) ile gayet sorunsuzdu. Sonra bir sabah pipeline durdu. Sağlayıcı çökmüş değildi. Sadece bana cevap vermiyordu.

Bu yazı, o sabahki paniği yedi farklı saha hatasıyla birleştirip nasıl bir fail-over disiplinine dönüştüğümü anlatıyor. Sağlayıcı seçimi, zincir dizilimi, kota izleme, kalite kabul kriterleri ve “sessiz çürüme” kavramı üzerinde duracağım.

Tek sağlayıcı: en sinsi single point of failure

Mimari kararlarda en zor şey, “çalıştığı sürece sorun olmayan” şeyleri risk olarak görmektir. AI sağlayıcı seçimi tam olarak buydu benim için: Gemini ücretsiz katmanı altı ay boyunca aksamadı. Aksamadığı için ben de fail-over kurmadım.

Sonra şu sabah geldi: pipeline 09:00’da başladı, ilk üç istek 200 döndü. Dördüncüde 429. Beşincide 429. Bir saat sonra hâlâ 429. Sağlayıcının status sayfası “operasyonel” diyordu — çünkü gerçekten öyleydi. Sadece benim hesabımın o günkü payı tükenmişti.

Burada sahada öğrenilen iki gerçek var:

  • Free tier kotaları görünmez tükenir. Sağlayıcının panelinde “günde 1.500 istek” yazıyor olabilir, ama o sayı global trafik yoğunluğuna göre dinamik kısılabilir. Sabah 09:30’da 429 alıyorsanız, sebep sizin değil; o saatte tüm dünyada kontenjan dolduğu için kuyruğun arkasına atıldınız demektir.
  • Çökme ile servis vermeyi reddetme aynı şey değildir. Status sayfaları yalnızca birinciyi gösterir. İkinci, sizin uptime metriğinizde bir delik açar ama hiçbir sayfada görünmez.

Fail-over zincirini nasıl dizmeli?

Pipeline’ı çoklu sağlayıcıya geçirme kararı verdikten sonra ilk yaptığım yanlış, sıralamayı maliyete göre yapmaktı: en ucuz olan önce, pahalı olan en sonda. Mantıklı görünüyordu. Yanlıştı.

Sahada şunu öğrendim: birbirine yakın altyapılı sağlayıcılar aynı anda düşer. Aynı GPU üreticisini kullanan iki inference şirketinin kotalarını aynı saatte tüketmek hiç de istisnai değil. Yani fail-over değil, sadece geciktirilmiş arıza yaşıyordum.

Şu anki zincirimde sıralama tamamen risk korelasyonu üzerine kurulu:

  1. Gemini (Google): birincil. Maliyet/kalite oranı en iyi olduğu için.
  2. Groq: Google ekosisteminden bağımsız, kendi LPU silikonunda inference yapıyor. Aynı saatte 429 alma olasılığı düşük.
  3. Cerebras: Yine ayrışık donanım (wafer-scale chip), farklı veri merkezleri, farklı kontenjan politikası.
  4. OpenRouter: Broker. Yukarıdakilerin hiçbiri çalışmazsa, OpenRouter farklı modellere yönlendiriyor — son çare.

Üçü de aynı dakikada düşerse, OpenRouter genelde başka bir backend (Anthropic, Mistral, vs.) üzerinden cevap verebiliyor. Mükemmel garanti değil ama olasılık çarpımı oldukça düşük.

Kotayı sağlayıcının değil, kendinizin izleyin

Çoklu sağlayıcıya geçtikten sonraki üçüncü ay, başka bir tuzağa düştüm: pipeline çalışıyor görünüyordu ama çıktı kalitesi düşmüştü. Sebep şuydu: Gemini limitlerine ulaşılınca Groq’a düşüyordu — fakat Groq’taki modelim daha küçük parametreli olduğu için yazılar daha sığ çıkıyordu. Pipeline başarılıydı, içerik zayıftı.

Bu olaya kendi terimimle “sessiz çürüme” diyorum. Sistemin metriği yeşildir, kullanıcı deneyimi çürür. Çözüm üç katmanlı:

  • Provider telemetrisi: her isteğin önüne sağlayıcı/model/token/latency/başarı kaydeden bir middleware ekledim. Sağlayıcının kendi konsolu artık ikincil; ben kendi sayaçlarımı izliyorum.
  • Günlük bütçe sınırı: Cerebras’ta günde 1.000 üretim, Groq’ta 600 — gibi limitler. Bunlar sağlayıcının limiti değil benim limitim. Aşılınca pipeline otomatik bir sonraki sağlayıcıya geçer.
  • Kalite skoru: her çıktıya basit bir skor (kelime sayısı, başlık sayısı, JSON şemasına uyum, halüsinasyon kelime tespiti). Skor eşik altındaysa zincire devam edilir; eşik üstündeyse kabul edilir.

Bu üçünün birlikte çalışması, sessiz çürümeyi 24 saat içinde yakalamamı sağladı. Önceden iki haftalık bir körlük yaşıyorduk.

Prompt’larınızı model agnostic değil, “minimum garantili çıktı” odaklı yazın

Eski yaklaşımım “bir prompt yaz, her modelde aynı çıktıyı al” idi. Yanlış. Her modelin tonu, uzunluk eğilimi, halüsinasyon yüzeyi farklı. Bunu kabul edip prompt yapısını değiştirdim:

Eski:

"Aşağıdaki konu hakkında 1500 kelimelik bir yazı yaz."

Yeni:

"Aşağıdaki konu hakkında bir yazı üret. Şu şartlar bağlayıcıdır:
 - JSON şeması: { "title": string, "sections": [{"h2": string, "body": string}, ...] }
 - En az 5 section, her section en az 200 kelime
 - 'Yapay zeka kullandım' veya benzeri meta cümleler yasak
 - Sonuç JSON'unun dışına hiçbir şey yazma"

İkinci yaklaşım hangi modeli kullanırsam kullanayım iskelet aynı kalıyor. Kalite hâlâ değişiyor ama kabul edilebilir taban hattı garanti edilmiş oluyor. Çıktıyı şemaya karşı doğrulayan validator katmanı şemaya uymayan üretimi reddedip zincire devam ettiriyor.

Retry stratejisi: hızlı geçiş mi, sabırlı bekleme mi?

Sağlayıcı 429 döndüğünde iki yol var: hemen bir sonraki sağlayıcıya geç, ya da exponential backoff ile aynı sağlayıcıyı dene. İlk içgüdüm “hemen geç” idi — pipeline hızlı çalışsın. Yanlıştı.

Çünkü 429’ların büyük çoğunluğu anlık tepe yoğunluğu kaynaklı. 30-60 saniye beklemek, çoğu durumda kotanın resetlenmesine yetiyor. Hemen geçmek demek, hem ana sağlayıcının ekonomisinden faydalanmamak hem de fail-over hedefini gereksiz yere ısıtmak demek.

Şu anki strateji:

  • 429 → 30 sn bekle → tekrar dene (max 2 deneme)
  • 500/503 → 0 sn beklemeden bir sonraki sağlayıcıya geç (gerçek arıza)
  • 401/403 → fail-over yok, doğrudan alarm (auth sorunu, çözüm operasyonel)
  • Diğer hatalar → 10 sn bekle → bir sonraki sağlayıcı

Bu ayrımı yapmak, fail-over’ın yanlış kullanılmasını engelliyor. Auth sorununda fail-over zincirini ısıtmak hiçbir şeyi çözmez; ben uyanıp credential’ı düzeltmeliyim.

Maliyet izleme: panelden değil, kendi telemetrinizden

İlk yıl sağlayıcının kendi konsolundan maliyet takip ediyordum. Ay sonu sürpriz oluyordu. Şimdi her isteğin maliyetini kendi tablomda hesaplıyorum: model, input tokens, output tokens, sağlayıcının fiyat çarpanı.

Bu sayede:

  • Gün ortası “bu hafta hangi sağlayıcı en pahalı oldu” sorgusu çalıştırabiliyorum.
  • Sağlayıcının faturasındaki anomalileri (örneğin sayım hatası) hemen yakalıyorum.
  • Bütçe trendini erken görüyorum, “ay sonu sürprizi” diye bir şey kalmıyor.

Tutulan veri minimum:

provider, model, request_id, ts, input_tokens, output_tokens,
latency_ms, http_status, cost_estimate_usd, quality_score

Bunlar günlük dosyaya yazılıyor, haftalık aggregate alıp dashboarda dökülüyor. Pahalı bir altyapı değil, tek bir tablo ve bir kaç sorgu.

Sessiz çürümeyi yakalama: kalite skoru zorunlu

Yukarıda bahsettim ama altını çizmek istiyorum: çoklu sağlayıcı mimarisinin en önemli bileşeni kalite skoru. Yoksa fail-over’a düştükçe yavaş yavaş kötüleyen bir sistem elde edersiniz.

Kalite skoru karmaşık olmak zorunda değil. Benim baktığım birkaç sinyal:

  • Toplam kelime sayısı hedefin %80’inin altında mı?
  • Markdown başlık sayısı 3’ten az mı?
  • JSON şemasına uyum tam mı?
  • “yapay zeka”, “asistan olarak”, “bir AI olarak” gibi meta cümleler var mı?
  • Aynı paragraf iki kere mi geçiyor (duplicate detection)?

Bu beş kontrol bile sistemin sessizce çürümesini yakalamaya yetiyor. Kalite skoru eşiğin altındaysa, çıktı kabul edilmez, zincirde bir sonraki sağlayıcı denenir. Eğer tüm sağlayıcılar eşiğin altında kalırsa, o iş kuyruğa atılır — manuel inceleme.

Alarmlar: ne zaman insan uyandırmalı?

Çoklu sağlayıcı mimarisi en güzel yanı, çoğu hatayı sessizce çözer. Kötü yanı: gerçekten insan müdahalesi gerektiren durumlarda da sessiz kalma riski. Bu yüzden alarm tanımı kritik:

  • Zincirdeki tüm sağlayıcılar fail oldu (son N denemede): PagerDuty/Telegram bildirim.
  • Aynı sağlayıcı 1 saatten uzun süre fail veriyorsa: günlük bildirim, acil değil ama dikkat.
  • Günlük bütçe %80’i geçildi: uyarı bildirim.
  • Kalite skoru ortalaması 7 gün düşüş trendinde: haftalık rapor.

Yani her hata için değil, sadece otomasyonun çözemeyeceği desen için alarm. Aksi takdirde alarm yorgunluğu sistemi öldürür.

Pratikteki ölçümler — bir yılın sonu

Çoklu sağlayıcıya geçtikten sonra üretim metriklerim:

  • Tek sağlayıcı dönemi: %93.4 başarı oranı, 12 günde 1 outage (~6 saatlik blackout).
  • Çoklu sağlayıcı dönemi: %99.7 başarı oranı, 4 ay boyunca 0 blackout.
  • Yıllık ek maliyet: ~%18 artış (çünkü ucuz olmayan sağlayıcılara düşülen istekler).
  • Kalite skoru ortalaması: öncekinden ~%5 düşüş — fakat sıfır outage karşılığında kabul edilebilir.

Bu sayıların önemli kısmı şu: maliyetimi bilerek artırdım ve uptime’ımı bilerek aldım. Tek sağlayıcıda yaşadığım her outage’ın iş sonuçlarına etkisi (yayınlanamayan içerik, kullanıcı bekleyişi, gecikmiş SEO sinyalleri) hesaba katıldığında, %18 fazla harcama oldukça ucuz bir sigorta oldu.

Sık karıştırılan sorular

Yedek sağlayıcıyı sadece arıza anında mı çağırmalı? Bazı sağlayıcılar uzun süre çağrılmazsa “soğuk” kalır; ilk istek geç dönebilir. Ben haftada en az bir kez yedek zincirin tamamını dolaşan bir health check çalıştırıyorum. Hem servis hâlâ canlı mı doğrulanıyor, hem de soğuk başlangıç riskini erken tespit ediyorum.

Her sağlayıcının kendi prompt formatı varsa ne yapmalı? Bunu adapter katmanıyla soyutladım. Sistem dahili bir generic prompt nesnesi kullanıyor; her sağlayıcı için bir küçük adapter onu API-spesifik formata çeviriyor. Aynısı yanıt için tersi yönde işliyor. Bu sayede prompt’u tek yerde değiştirmek bütün zincire yansıyor.

Yedek sağlayıcı maliyeti birincil’den çoksa ne yapmalı? Bütçe sınırı koyun. Benim Cerebras günlük 1.000 üretim sınırı bu yüzden var — fail-over’a düşen pipeline’ın maliyetini öngörülebilir tutmak için. Bütçe aşılırsa ya pipeline durur ya da daha ucuz bir alternatife yönlendirilir.

Sonuç

Çoklu sağlayıcı yapay zeka mimarisi, “tek sağlayıcı çökerse alternatife geç” cümlesinin çok ötesinde bir disiplin. Risk korelasyonu düşük sağlayıcı seçimi, kotanın görünmez tükenmesini izleyen telemetri, sessiz çürümeyi yakalayan kalite skoru ve doğru retry stratejisi olmadan, fail-over sadece geciktirilmiş bir arızadır.

Üretimde AI üzerinde çalışan herkes için pratik öneri: bugün hâlâ tek sağlayıcıyla çalışıyorsanız, ikinci sağlayıcıyı en azından gölge modunda ekleyin — paralel çağırıp çıktıları karşılaştırın, ama yayınlamayın. İki ay sonra fail-over zincirine geçmek için gerekli tüm veriye sahip olursunuz, ayrıca rahat bir uykuya da.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

Sıkça Sorulanlar

Bu makale ile ilgili okurların sorduğu yaygın sorular.

Üretim bir AI pipeline'ında tek sağlayıcıya bağlı kalmanın gerçek riski nedir?
Tek sağlayıcı bana göre 'çalıştığı sürece' bir risk değil; sorun, kotanın görünmez tükendiği o ilk pencere. Free tier limitleri çoğu dokümanda 'günde X istek' diye yazar ama saha gerçeği farklı: model bazlı, region bazlı, hatta o güne özel trafik yoğunluğuna göre değişen quota'lar var. Benim yaşadığım örnekte içerik üretimi sabah 09:00'da çalışıyor ama 09:30 itibarıyla 429 dönmeye başlıyordu — çünkü o saatte global trafik tepe yapıyordu ve free tier kullanıcıları öncelikle kısılıyordu. Sağlayıcı çöktü değil; bana servis vermeyi bıraktı. Bu yüzden bugün için tek sağlayıcılı bir AI mimarisi, single point of failure'ın yeni adıdır.
Fail-over zinciri kurarken sağlayıcıları hangi sıraya göre dizmek mantıklı?
Sıralama 'en ucuz/en hızlı' değil, 'kotası en bağımsız' olmalı. Aynı altyapıyı paylaşan iki sağlayıcı (örneğin aynı kümede çalışan model varyantları) aynı anda 429 dönebilir — bu da fail-over değil, sadece geciktirilmiş arıza olur. Ben kendi pipeline'ımda farklı kümeler/şirketler arasında zinciri kuruyorum: önce Gemini (Google), sonra Groq (kendi inference donanımı), sonra Cerebras (farklı silikon), sonra OpenRouter (broker). Aralarındaki ortak nokta sadece API kontratı; backend tamamen ayrışık. Bu sayede 'aynı anda hepsi düşer' senaryosu çok daha az olası — risk korelasyonu düşük.
Çoklu sağlayıcı kullanırken kalite tutarlılığını nasıl koruyorum?
Bunu kabullenmek gerek: kalite tutarlı olmaz. Her modelin tonu, uzunluk eğilimi, halüsinasyon yüzeyi farklı. Ben artık prompt'larımı 'model agnostic' yazmıyorum; bunun yerine her sağlayıcı için minimum garantili çıktı şeklini şart koşuyorum (JSON şema, en az X paragraf, zorunlu başlık seti). Sonra çıktıyı şemaya karşı doğrulayan bir validator katmanım var — şemaya uymayan çıktı zincirin bir sonraki sağlayıcısına yönlendiriliyor. Yani kalite homojenliği değil, kabul edilebilir taban hattı garantisi peşindeyim.
Sağlayıcı maliyetlerini nasıl izliyor ve kontrol altında tutuyorum?
İlk yıl benim de hatam buydu: maliyet panelini sağlayıcının kendi konsolundan takip ediyordum, ay sonu sürpriz oluyordu. Şimdi her isteğin önüne kendi içsel sayacımı koyuyorum — sağlayıcı, model, token sayısı, başarı/başarısızlık, yanıt süresi. Bu telemetri kendi veritabanımda. Sağlayıcı paneline ay başında bakıyorum sadece doğrulama için. Bir de günlük üst limit (örneğin Cerebras'ta günde max 1000 token üretim) — bu limit kotanın doğal sınırı olmasa bile benim kendi koyduğum bütçe sınırı; aşılırsa pipeline otomatik bir sonraki sağlayıcıya geçer.
ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Yorumlar

Sunucu Taraflı AI Moderasyon

Yorumlar sunucuda yapay zeka ile denetlenir ve kalıcı olarak saklanır.

?
0/2000

Sunucu taraflı AI denetim

✉️ Ücretsiz · Spam yok · İstediğin an çık

Haftalık özet — AI değil, bizzat ben seçiyorum

Haftada bir mail: o haftanın en önemli yazısı, perde arkası notları, ve "bu hafta gerçekten kullandığım araç" bölümü. Az gürültü, çok sinyal.

  • 📌
    Haftanın en iyisi Sadece okumaya değer tek yazı
  • 🔧
    Alet çantası Bu hafta kullandığım araçlar
  • 🧠
    Perde arkası Blog'a girmeyen notlar

Spam yapmıyoruz. İstediğiniz zaman ayrılabilirsiniz. · Sadece Umami (self-hosted, Google yok) ile takip.

Okuma İstatistikleriniz

0

Yazı Okundu

0dk

Okuma Süresi

0

Gün Serisi

-

Favori Kategori

İlgili Yazılar